Tài liệu tham khảo về hoạt động và cấu hình cho Edge Microgateway

Bạn đang xem tài liệu về Apigee Edge.
Chuyển đến Tài liệu về Apigee X.
thông tin

Edge Microgateway phiên bản 3.1.x

Chủ đề này thảo luận cách quản lý và định cấu hình Edge Microgateway.

Nâng cấp Edge Microgateway nếu bạn có kết nối Internet

Phần này giải thích cách nâng cấp cài đặt hiện có của Edge Microgateway. Nếu bạn đang hoạt động khi không có kết nối Internet, hãy xem Tôi có thể cài đặt Edge Microgateway mà không cần kết nối Internet không?.

Apigee khuyên bạn nên kiểm thử cấu hình hiện có bằng phiên bản mới trước khi nâng cấp môi trường sản xuất.

  1. Thực thi lệnh npm sau đây để nâng cấp lên phiên bản Edge mới nhất Cổng nhỏ:
    npm upgrade edgemicro -g

    Để nâng cấp lên một phiên bản cụ thể của Edge Microgateway, bạn cần chỉ định phiên bản number trong lệnh nâng cấp. Nếu bạn không chỉ định số phiên bản, phiên bản mới nhất sẽ được cài đặt. Ví dụ: để nâng cấp lên phiên bản 3.1.0, hãy sử dụng sau đây:

    npm upgrade edgemicro@3.1.0 -g
  2. Kiểm tra số phiên bản. Ví dụ: nếu bạn đã cài đặt phiên bản 3.1.0:
    edgemicro --version
    current nodejs version is v12.5.0
    current edgemicro version is 3.1.0
        
  3. Cuối cùng, hãy nâng cấp lên phiên bản mới nhất của proxy edgemicro-auth:
    edgemicro upgradeauth -o $ORG -e $ENV -u $USERNAME

Thay đổi cấu hình

Các tệp cấu hình bạn cần biết bao gồm:

  • Tệp cấu hình hệ thống mặc định
  • Tệp cấu hình mặc định cho một phiên bản Edge Microgateway mới khởi tạo
  • Tệp cấu hình động cho các phiên bản đang chạy

Phần này thảo luận về các tệp này và những điều bạn cần biết về cách thay đổi chúng.

Cấu hình hệ thống mặc định tệp

Khi bạn cài đặt Edge Microgateway, tệp cấu hình hệ thống mặc định sẽ được đặt ở đây:

prefix/lib/node_modules/edgemicro/config/default.yaml

Trong đó prefix là thư mục tiền tố npm. Xem Edge Microgateway được cài đặt ở đâu nếu bạn không tìm được thư mục này.

Nếu thay đổi tệp cấu hình hệ thống, bạn phải khởi động lại, định cấu hình lại và khởi động lại Edge Cổng nhỏ:

edgemicro init
edgemicro configure [params]
edgemicro start [params]

Tệp cấu hình mặc định cho các thực thể Edge Microgateway mới khởi tạo

Khi bạn chạy edgemicro init, tệp cấu hình hệ thống (được mô tả) ở trên), default.yaml, được đặt trong thư mục ~/.edgemicro.

Nếu thay đổi tệp cấu hình trong ~/.edgemicro, bạn phải định cấu hình lại và khởi động lại Cửa nhỏ có cạnh:

edgemicro stop
edgemicro configure [params]
edgemicro start [params]

Động tệp cấu hình cho các phiên bản đang chạy

Khi bạn chạy edgemicro configure [params], một thuộc tính động tệp cấu hình được tạo trong ~/.edgemicro. Tệp được đặt tên theo mẫu: org-env-config.yaml, trong đó orgenv là tên môi trường và tổ chức Apigee Edge của bạn. Bạn có thể sử dụng tệp này để tạo cấu hình các thay đổi, sau đó tải lại chúng với thời gian ngừng hoạt động bằng 0. Ví dụ: nếu bạn thêm và định cấu hình một trình bổ trợ, bạn có thể tải lại cấu hình mà không làm ảnh hưởng đến thời gian ngừng hoạt động, như được giải thích bên dưới.

Nếu Edge Microgateway đang chạy (tuỳ chọn thời gian ngừng hoạt động bằng 0):

  1. Tải lại cấu hình Edge Microgateway:
    edgemicro reload -o $ORG -e $ENV -k $KEY -s $SECRET

    Trong trường hợp:

    • $ORG là tên tổ chức của bạn trên Edge (bạn phải là một tổ chức quản trị viên).
    • $ENV là một môi trường trong tổ chức của bạn (chẳng hạn như "thử nghiệm" hoặc "sản phẩm").
    • $KEY là khoá được lệnh cấu hình trả về trước đó.
    • $SECRET là khoá được lệnh cấu hình trả về trước đó.

    Ví dụ

    edgemicro reload -o docs -e test -k 701e70ee718ce6dc188...78b6181d000723 \
      -s 05c14356e42ed1...4e34ab0cc824

Nếu Edge Microgateway bị dừng:

  1. Khởi động lại Edge Microgateway:
    edgemicro start -o $ORG -e $ENV -k $KEY -s $SECRET

    Trong trường hợp:

    • $ORG là tên tổ chức của bạn trên Edge (bạn phải là một tổ chức quản trị viên).
    • $ENV là một môi trường trong tổ chức của bạn (chẳng hạn như "kiểm thử" hoặc "sản phẩm").
    • $KEY là khoá được lệnh cấu hình trả về trước đó.
    • $SECRET là khoá được lệnh cấu hình trả về trước đó.

    Ví dụ:

    edgemicro start -o docs -e test -k 701e70ee718ce...b6181d000723 \
      -s 05c1435...e34ab0cc824

Dưới đây là một tệp cấu hình mẫu. Để biết thông tin chi tiết về chế độ cài đặt tệp cấu hình, hãy xem Tài liệu tham khảo về cấu hình Edge Microgateway.

edge_config:
  bootstrap: >-
    https://edgemicroservices-us-east-1.apigee.net/edgemicro/bootstrap/organization/docs/environment/test
  jwt_public_key: 'https://docs-test.apigee.net/edgemicro-auth/publicKey'
  managementUri: 'https://api.enterprise.apigee.com'
  vaultName: microgateway
  authUri: 'https://%s-%s.apigee.net/edgemicro-auth'
  baseUri: >-
    https://edgemicroservices.apigee.net/edgemicro/%s/organization/%s/environment/%s
  bootstrapMessage: Please copy the following property to the edge micro agent config
  keySecretMessage: The following credentials are required to start edge micro
  products: 'https://docs-test.apigee.net/edgemicro-auth/products'
edgemicro:
  port: 8000
  max_connections: 1000
  max_connections_hard: 5000
  config_change_poll_interval: 600
  logging:
    level: error
    dir: /var/tmp
    stats_log_interval: 60
    rotate_interval: 24
  plugins:
    sequence:
      - oauth
headers:
  x-forwarded-for: true
  x-forwarded-host: true
  x-request-id: true
  x-response-time: true
  via: true
oauth:
  allowNoAuthorization: false
  allowInvalidAuthorization: false
  verify_api_key_url: 'https://docs-test.apigee.net/edgemicro-auth/verifyApiKey'
analytics:
  uri: >-
    https://edgemicroservices-us-east-1.apigee.net/edgemicro/axpublisher/organization/docs/environment/test

Thiết lập biến môi trường

Các lệnh giao diện dòng lệnh yêu cầu các giá trị cho tổ chức Edge của bạn và và khoá cũng như bí mật cần thiết để khởi động Edge Microgateway có thể được lưu trữ trong biến môi trường:

  • EDGEMICRO_ORG
  • EDGEMICRO_ENV
  • EDGEMICRO_KEY
  • EDGEMICRO_SECRET

Bạn không bắt buộc phải đặt các biến này. Nếu đã đặt các giá trị này, bạn không phải chỉ định giá trị của chúng khi bạn sử dụng Giao diện dòng lệnh (CLI) để định cấu hình và khởi động Edge Microgateway.

Định cấu hình SSL trên Edge Microgateway máy chủ

Hãy xem các video sau đây để tìm hiểu về cách định cấu hình TLS trong Apigee Edge Microgateway:

Video Mô tả
Định cấu hình TLS 1 chiều hướng Bắc Tìm hiểu về cách định cấu hình TLS trong Apigee Edge Microgateway. Video này cung cấp Tổng quan về TLS và tầm quan trọng của TLS, giới thiệu TLS trong Edge Microgateway và trình bày cách định cấu hình TLS một chiều hướng Bắc.
Định cấu hình TLS 2 chiều hướng Bắc Đây là video thứ hai hướng dẫn cách định cấu hình TLS trong Apigee Edge Microgateway. Chiến dịch này video giải thích cách định cấu hình TLS 2 chiều hướng bắc.
Định cấu hình TLS 1 chiều và 2 chiều hướng Nam Video thứ ba này giải thích về cách định cấu hình TLS trong Apigee Edge Microgateway cách định cấu hình TLS 1 chiều và 2 chiều hướng nam

Bạn có thể định cấu hình máy chủ Microgateway để sử dụng SSL. Ví dụ: khi đã định cấu hình SSL, bạn có thể gọi API thông qua Edge Microgateway bằng "https" giao thức, như sau:

https://localhost:8000/myapi

Để định cấu hình SSL trên máy chủ Microgateway, hãy làm theo các bước sau:

  1. Tạo hoặc lấy chứng chỉ và khóa SSL bằng cách sử dụng tiện ích openssl hoặc bất kỳ phương pháp nào bạn thích.
  2. Thêm thuộc tính edgemicro:ssl vào tệp cấu hình Edge Microgateway. Để xem đầy đủ danh sách các lựa chọn, hãy xem bảng bên dưới. Ví dụ:
    edgemicro:
      ssl:
       key: <absolute path to the SSL key file>
       cert: <absolute path to the SSL cert file>
       passphrase: admin123 #option added in v2.2.2
       rejectUnauthorized: true #option added in v2.2.2
       requestCert: true
  3. Khởi động lại Edge Microgateway. Làm theo các bước được nêu trong Thực hiện thay đổi cấu hình tùy thuộc vào tệp cấu hình mà bạn đã chỉnh sửa: tệp mặc định hoặc tệp cấu hình thời gian chạy.

Dưới đây là ví dụ về phần edgemicro của tệp cấu hình, có SSL đã định cấu hình:

edgemicro:
  port: 8000
  max_connections: 1000
  max_connections_hard: 5000
  logging:
    level: error
    dir: /var/tmp
    stats_log_interval: 60
    rotate_interval: 24
  plugins:
    sequence:
      - oauth
  ssl:
    key: /MyHome/SSL/em-ssl-keys/server.key
    cert: /MyHome/SSL/em-ssl-keys/server.crt
    passphrase: admin123 #option added in v2.2.2
    rejectUnauthorized: true #option added in v2.2.2

Dưới đây là danh sách tất cả các tuỳ chọn máy chủ được hỗ trợ:

Phương thức Mô tả
key Đường dẫn đến một tệp ca.key (ở định dạng PEM).
cert Đường dẫn đến một tệp ca.cert (ở định dạng PEM).
pfx Đường dẫn đến tệp pfx chứa khoá riêng tư, chứng chỉ và các chứng chỉ CA của khách hàng ở định dạng PFX.
passphrase Một chuỗi ký tự chứa cụm mật khẩu dành cho khoá riêng tư hoặc PFX.
ca Đường dẫn đến một tệp chứa danh sách chứng chỉ đáng tin cậy ở định dạng PEM.
ciphers Chuỗi mô tả các thuật toán mật mã cần sử dụng được phân tách bằng dấu ":".
rejectUnauthorized Nếu đúng, chứng chỉ máy chủ sẽ được xác minh dựa trên danh sách các CA đã cung cấp. Nếu xác minh không thành công, hệ thống sẽ trả về một lỗi.
secureProtocol Phương thức SSL cần sử dụng. Ví dụ: SSLv3_method để buộc SSL vào phiên bản 3.
servername Tên máy chủ cho phần mở rộng TLS (Chỉ báo tên máy chủ) SNI.
requestCert đúng với SSL 2 chiều; false cho SSL 1 chiều

Sử dụng các tuỳ chọn SSL/TLS ứng dụng

Bạn có thể định cấu hình Edge Microgateway thành ứng dụng TLS hoặc SSL khi kết nối để nhắm mục tiêu điểm cuối. Trong tệp cấu hình Microgateway, hãy sử dụng phần tử mục tiêu để đặt SSL/TLS .

Ví dụ này cung cấp các chế độ cài đặt sẽ áp dụng cho tất cả máy chủ:

edgemicro:
...
targets:
  ssl:
    client:
      key: /Users/jdoe/nodecellar/twowayssl/ssl/client.key
      cert: /Users/jdoe/nodecellar/twowayssl/ssl/ca.crt
      passphrase: admin123
      rejectUnauthorized: true

Trong ví dụ này, các chế độ cài đặt chỉ được áp dụng cho máy chủ lưu trữ đã chỉ định:

edgemicro:
...
targets:
  - host: 'myserver.example.com'
    ssl:
      client:
        key: /Users/myname/twowayssl/ssl/client.key
        cert: /Users/myname/twowayssl/ssl/ca.crt
        passphrase: admin123
        rejectUnauthorized: true

Sau đây là một ví dụ về TLS:

edgemicro:
...
targets:
  - host: 'myserver.example.com'
    tls:
      client:
        pfx: /Users/myname/twowayssl/ssl/client.pfx
        passphrase: admin123
        rejectUnauthorized: true

Dưới đây là danh sách tất cả các tuỳ chọn ứng dụng được hỗ trợ:

Phương thức Mô tả
pfx Đường dẫn đến tệp pfx chứa khoá riêng tư, chứng chỉ và các chứng chỉ CA của khách hàng ở định dạng PFX.
key Đường dẫn đến một tệp ca.key (ở định dạng PEM).
passphrase Một chuỗi ký tự chứa cụm mật khẩu dành cho khoá riêng tư hoặc PFX.
cert Đường dẫn đến một tệp ca.cert (ở định dạng PEM).
ca Đường dẫn đến một tệp chứa danh sách chứng chỉ đáng tin cậy ở định dạng PEM.
ciphers Chuỗi mô tả các thuật toán mật mã cần sử dụng được phân tách bằng dấu ":".
rejectUnauthorized Nếu đúng, chứng chỉ máy chủ sẽ được xác minh dựa trên danh sách các CA đã cung cấp. Nếu xác minh không thành công, hệ thống sẽ trả về một lỗi.
secureProtocol Phương thức SSL cần sử dụng. Ví dụ: SSLv3_method để buộc SSL vào phiên bản 3.
servername Tên máy chủ cho phần mở rộng TLS (Chỉ báo tên máy chủ) SNI.

Tuỳ chỉnh proxy Edgemicro-auth

Theo mặc định, Edge Microgateway sử dụng một proxy được triển khai trên Apigee Edge để xác thực OAuth2. Proxy này được triển khai khi bạn chạy edgemicro configure lần đầu. Bạn có thể thay đổi cấu hình mặc định của proxy này để hỗ trợ thêm các thông báo xác nhận quyền sở hữu tuỳ chỉnh đối với Mã thông báo web JSON (JWT), định cấu hình thời hạn mã thông báo và tạo mã làm mới. Để biết thông tin chi tiết, hãy xem trang edgemicro-auth trên GitHub.

Sử dụng dịch vụ xác thực tuỳ chỉnh

Theo mặc định, Edge Microgateway sử dụng một proxy được triển khai trên Apigee Edge để xác thực OAuth2. Proxy này được triển khai khi bạn chạy edgemicro configure lần đầu. Theo mặc định, URL của proxy được chỉ định trong tệp cấu hình Edge Microgateway như sau:

authUri: https://myorg-myenv.apigee.net/edgemicro-auth

Nếu bạn muốn sử dụng dịch vụ tuỳ chỉnh của riêng mình để xử lý việc xác thực, hãy thay đổi Giá trị authUri trong tệp cấu hình để trỏ đến dịch vụ của bạn. Ví dụ: bạn có thể có một dịch vụ sử dụng LDAP để xác minh danh tính.

Quản lý tệp nhật ký

Edge Microgateway ghi lại thông tin về từng yêu cầu và phản hồi. Tệp nhật ký rất hữu ích để gỡ lỗi và khắc phục sự cố.

Vị trí lưu trữ tệp nhật ký

Theo mặc định, các tệp nhật ký được lưu trữ trong /var/tmp.

Cách thay đổi nhật ký mặc định thư mục tệp

Thư mục lưu trữ tệp nhật ký được chỉ định trong cấu hình Edge Microgateway . Xem thêm Tạo cấu hình thay đổi.

edgemicro:
  home: ../gateway
  port: 8000
  max_connections: -1
  max_connections_hard: -1
  logging:
    level: info
    dir: /var/tmp
    stats_log_interval: 60
    rotate_interval: 24

Thay đổi giá trị dir để chỉ định một thư mục tệp nhật ký khác.

Gửi nhật ký đến bảng điều khiển

Bạn có thể định cấu hình ghi nhật ký để thông tin nhật ký được gửi đến đầu ra chuẩn thay vì tệp nhật ký. Thiết lập cờ to_console thành true như sau:

edgemicro:
  logging:
    to_console: true

Với chế độ cài đặt này, nhật ký sẽ được gửi theo chuẩn đầu ra. Hiện tại, bạn không thể gửi nhật ký cho cả stdout và tới một tệp nhật ký.

Cách đặt cấp độ ghi nhật ký

Bạn có thể đặt các cấp độ nhật ký sau: thông tin, warnlỗi. Bạn nên dùng cấp thông tin. Nó ghi lại mọi yêu cầu và phản hồi của API, và đó là tuỳ chọn mặc định.

Cách thay đổi khoảng thời gian trong nhật ký

Bạn có thể định cấu hình các khoảng thời gian này trong tệp cấu hình Edge Microgateway. Xem thêm Thực hiện thay đổi cấu hình.

Các thuộc tính có thể định cấu hình bao gồm:

  • stats_log_interval: (mặc định: 60) Khoảng thời gian, tính bằng giây, khi số liệu thống kê bản ghi được ghi vào tệp nhật ký API.
  • rotate_interval: (mặc định: 24) Khoảng thời gian, tính bằng giờ, khi tệp nhật ký được đã xoay. Ví dụ:
edgemicro:
  home: ../gateway
  port: 8000
  max_connections: -1
  max_connections_hard: -1
  logging:
    level: info
    dir: /var/tmp
    stats_log_interval: 60
    rotate_interval: 24

Các phương pháp duy trì tệp nhật ký hiệu quả

Khi dữ liệu tệp nhật ký tích luỹ theo thời gian, Apigee khuyên bạn nên áp dụng những cách sau thực tiễn:

  • Vì các tệp nhật ký có thể có kích thước khá lớn, hãy đảm bảo rằng thư mục tệp nhật ký có đủ dung lượng. Xem các phần sau đây Vị trí lưu trữ tệp nhật kýCách thay đổi tệp nhật ký mặc định thư mục.
  • Xoá hoặc di chuyển các tệp nhật ký vào một thư mục lưu trữ riêng ít nhất một lần mỗi tuần.
  • Nếu chính sách của bạn là xoá nhật ký, bạn có thể sử dụng lệnh CLI edgemicro log -c để xoá (dọn dẹp) nhật ký cũ.

Quy ước đặt tên tệp nhật ký

Mỗi phiên bản của Edge Microgateway tạo ra ba loại tệp nhật ký:

  • api – Ghi nhật ký tất cả các yêu cầu và phản hồi diễn ra qua Edge Cổng nhỏ. Bộ đếm API (số liệu thống kê) và lỗi cũng được ghi vào tệp này.
  • err – Ghi nhật ký mọi nội dung được gửi tới stderr.
  • out – Ghi nhật ký mọi nội dung được gửi tới stdout.

Dưới đây là quy ước đặt tên:

edgemicro-<Host Name>-<Instance ID>-<Log Type>.log

Ví dụ:

edgemicro-mymachine-local-MTQzNTgNDMxODAyMQ-api.log
edgemicro-mymachine-local-MTQzNTg1NDMODAyMQ-err.log
edgemicro-mymachine-local-mtqzntgndmxodaymq-out.log

Giới thiệu về nội dung tệp nhật ký

Đã thêm trong: phiên bản 2.3.3

Theo mặc định, dịch vụ ghi nhật ký sẽ bỏ qua JSON của các sản phẩm, proxy đã tải xuống và JSON Mã thông báo web (JWT). Nếu bạn muốn xuất các đối tượng này vào các tệp nhật ký, hãy đặt giá trị DEBUG=* khi bạn khởi động Edge Microgateway. Ví dụ:

DEBUG=* edgemicro start -o docs -e test -k abc123 -s xyz456

Nội dung của "api" tệp nhật ký

"api" tệp nhật ký chứa thông tin chi tiết về luồng yêu cầu và phản hồi thông qua Edge Microgateway. "api" tệp nhật ký có tên như sau:

edgemicro-mymachine-local-MTQzNjIxOTk0NzY0Nw-api.log

Đối với mỗi yêu cầu được gửi đến Edge Microgateway, 4 sự kiện sẽ được ghi lại trong "api" nhật ký tệp:

  • Yêu cầu đến từ ứng dụng
  • Đã gửi yêu cầu đi đến mục tiêu
  • Phản hồi đến từ mục tiêu
  • Phản hồi đi cho khách hàng

Mỗi mục nhập riêng biệt này được trình bày bằng một ký hiệu viết tắt để giúp ghi nhật ký tệp gọn gàng hơn. Dưới đây là 4 mục nhập mẫu đại diện cho từng sự kiện trong số 4 sự kiện. Trong nhật ký tệp, chúng trông giống như thế này (số dòng chỉ để tham khảo trong tài liệu, chúng không xuất hiện trong tệp nhật ký).

(1) 1436403888651 info req m=GET, u=/, h=localhost:8000, r=::1:59715, i=0
(2) 1436403888665 info treq m=GET, u=/, h=127.0.0.18080, i=0
(3) 1436403888672 info tres s=200, d=7, i=0
(4) 1436403888676 info res s=200, d=11, i=0

Hãy cùng xem xét từng yếu tố:

1. Mẫu về yêu cầu đến từ ứng dụng:

1436403888651 info req m=GET, u=/, h=localhost:8000, r=::1:59715, i=0
  • 1436403888651 - Dấu ngày Unix
  • info – Phụ thuộc vào ngữ cảnh. Có thể là thông tin, cảnh báo hoặc lỗi, tuỳ thuộc vào cấp độ nhật ký. Có thể là số liệu thống kê cho một bản ghi số liệu thống kê, đưa ra cảnh báo hoặc lỗi.
  • req – Xác định sự kiện. Trong trường hợp này, hãy yêu cầu khách hàng.
  • m – Động từ HTTP dùng trong yêu cầu.
  • u – Phần URL theo sau đường dẫn cơ sở.
  • h – Máy chủ lưu trữ và số cổng nơi Edge Microgateway đang nghe.
  • r – Máy chủ từ xa và cổng mà ứng dụng yêu cầu nguồn gốc.
  • i – Mã yêu cầu. Tất cả 4 mục sự kiện đều sẽ dùng chung mã này. Một sẽ được gán một mã yêu cầu duy nhất. Việc so sánh các bản ghi nhật ký theo mã yêu cầu có thể cung cấp thông tin chi tiết có giá trị về độ trễ của mục tiêu.
  • d – Khoảng thời gian tính bằng mili giây kể từ khi người dùng nhận được yêu cầu Cổng nhỏ ở rìa. Trong ví dụ trên, mục tiêu đã nhận được phản hồi cho yêu cầu 0 sau 7 mili giây (dòng 3) và phản hồi được gửi đến máy khách sau 4 lần nữa mili giây (dòng 4). Nói cách khác, tổng độ trễ của yêu cầu là 11 mili giây, trong số trong đó mục tiêu mất 7 mili giây và bằng Edge Microgateway là 4 mili giây .

2. Mẫu yêu cầu được gửi đến mục tiêu:

1436403888665 info treq m=GET, u=/, h=127.0.0.1:8080, i=0
  • 1436403888651 - Dấu ngày Unix
  • info – Phụ thuộc vào ngữ cảnh. Có thể là thông tin, cảnh báo hoặc lỗi, tuỳ thuộc vào cấp độ nhật ký. Có thể là số liệu thống kê cho một bản ghi số liệu thống kê, đưa ra cảnh báo hoặc lỗi.
  • treq – Xác định sự kiện. Trong trường hợp này, hãy nhắm mục tiêu yêu cầu.
  • m – Động từ HTTP dùng trong yêu cầu đích.
  • u – Phần URL theo sau đường dẫn cơ sở.
  • h – Máy chủ lưu trữ và số cổng của mục tiêu phụ trợ.
  • i – Mã nhận dạng của mục nhập nhật ký. Tất cả 4 mục sự kiện sẽ chia sẻ thông tin này Mã nhận dạng.

3. Mẫu phản hồi nhận được từ mục tiêu

1436403888672 info tres s=200, d=7, i=0

1436403888651 - Dấu ngày Unix

  • info – Phụ thuộc vào ngữ cảnh. Có thể là thông tin, cảnh báo hoặc lỗi, tuỳ thuộc vào cấp độ nhật ký. Có thể là số liệu thống kê cho một bản ghi số liệu thống kê, đưa ra cảnh báo hoặc lỗi.
  • tres – Xác định sự kiện. Trong trường hợp này, hãy dùng phản hồi mục tiêu.
  • s – Trạng thái phản hồi HTTP.
  • d – Thời lượng tính bằng mili giây. Thời gian thực hiện lệnh gọi API bởi mục tiêu.
  • i – Mã nhận dạng của mục nhập nhật ký. Tất cả 4 mục sự kiện sẽ chia sẻ thông tin này Mã nhận dạng.

4. Mẫu phản hồi gửi đi cho khách hàng

1436403888676 info res s=200, d=11, i=0

1436403888651 - Dấu ngày Unix

  • info – Phụ thuộc vào ngữ cảnh. Có thể là thông tin, cảnh báo hoặc lỗi, tuỳ thuộc vào cấp độ nhật ký. Có thể là số liệu thống kê cho một bản ghi số liệu thống kê, đưa ra cảnh báo hoặc lỗi.
  • res – Xác định sự kiện. Trong trường hợp này, phản hồi lại khách hàng.
  • s – Trạng thái phản hồi HTTP.
  • d – Thời lượng tính bằng mili giây. Đây là tổng thời gian thực hiện theo lệnh gọi API, bao gồm cả thời gian API mục tiêu sử dụng và thời gian của Edge Chính Microgateway.
  • i – Mã nhận dạng của mục nhập nhật ký. Tất cả 4 mục sự kiện sẽ chia sẻ thông tin này Mã nhận dạng.

Lịch biểu của tệp nhật ký

Các tệp nhật ký được xoay trong khoảng thời gian được chỉ định bởi rotate_interval thuộc tính cấu hình. Hệ thống sẽ tiếp tục thêm các mục đầu vào vào cho đến khi hết khoảng thời gian xoay vòng. Tuy nhiên, mỗi lần Edge Microgateway được khởi động lại thì sẽ nhận được một UID mới và tạo một nhóm các tệp nhật ký mới bằng UID này. Xem thêm Duy trì tệp nhật ký tốt .

Thông báo lỗi

Một số mục nhập nhật ký sẽ chứa thông báo lỗi. Để giúp xác định vị trí và nguyên nhân xảy ra lỗi, hãy xem lỗi Edge Microgateway tham khảo.

Tài liệu tham khảo về cấu hình Edge Microgateway

Vị trí của tệp cấu hình

Các thuộc tính cấu hình được mô tả trong phần này nằm trong Edge Microgateway tệp cấu hình. Xem thêm Tạo cấu hình thay đổi.

thuộc tính Edge_config

Các chế độ cài đặt này được dùng để định cấu hình hoạt động tương tác giữa phiên bản Edge Microgateway và Lợi ích của Apigee.

  • bootstrap: (mặc định: không có) URL trỏ đến Edge Dịch vụ dành riêng cho Microgateway chạy trên Apigee Edge. Edge Microgateway sử dụng dịch vụ này để giao tiếp với Apigee Edge. URL này được trả về khi bạn thực thi lệnh để tạo cặp khoá công khai/riêng tư: edgemicro genkeys. Hãy xem phần Thiết lập và định cấu hình Edge Microgateway để biết chi tiết.
  • jwt_public_key: (mặc định: không có) URL trỏ đến Edge Microgateway được triển khai trên Apigee Edge. Proxy này đóng vai trò là điểm cuối xác thực cho cấp mã truy cập đã ký cho khách hàng. URL này được trả về khi bạn thực thi lệnh để triển khai proxy: định cấu hình Edgemicro. Hãy xem phần Thiết lập và định cấu hình Edge Microgateway để biết chi tiết.
  • quotaUri: Đặt cấu hình này nếu bạn muốn quản lý hạn mức thông qua proxy edgemicro-auth được triển khai cho tổ chức của bạn. Nếu thuộc tính này không được thiết lập, mặc định điểm cuối hạn mức là điểm cuối Edge Microgateway nội bộ.
    edge_config:
      quotaUri: https://your_org-your_env.apigee.net/edgemicro-auth
    

thuộc tính Edgemicro

Các chế độ cài đặt này sẽ định cấu hình quy trình Edge Microgateway.

  • port: (mặc định: 8000) Số cổng mà Edge Microgateway lượt nghe.
  • max_connections: (mặc định: -1) Chỉ định số lượng tối đa các kết nối đến đồng thời mà Edge Microgateway có thể nhận được. Nếu số này là vượt quá, thì trạng thái sau sẽ được trả về:

    res.statusCode = 429; // Too many requests
  • max_connections_hard: (mặc định: -1) Số lượt đồng thời tối đa các yêu cầu mà Edge Microgateway có thể nhận được trước khi tắt kết nối. Chế độ cài đặt này nhằm mục đích ngăn chặn các cuộc tấn công từ chối dịch vụ. Thông thường, hãy đặt cho giá trị này ở một số lớn hơn max_connections.
  • ghi nhật ký:
    • level: (mặc định: lỗi)
      • thông tin – Ghi nhật ký tất cả các yêu cầu và phản hồi diễn ra thông qua Phiên bản Edge Microgateway.
      • warn – Chỉ thông báo cảnh báo ghi nhật ký.
      • error – Chỉ ghi nhật ký các thông báo lỗi.
    • dir: (mặc định: /var/tmp) Thư mục chứa các tệp nhật ký lưu trữ.
    • stats_log_interval: (mặc định: 60) Khoảng thời gian, tính bằng giây, khi số liệu thống kê bản ghi được ghi vào tệp nhật ký api.
    • rotate_interval: (mặc định: 24) Khoảng thời gian, tính bằng giờ, khi tệp nhật ký được đã xoay.
  • dir: Một đường dẫn tương đối từ thư mục ./gateway đến thư mục ./plugin hoặc một đường dẫn tuyệt đối.
  • trình tự: Danh sách các mô-đun trình bổ trợ cần thêm vào Edge Microgateway thực thể. Các mô-đun sẽ thực thi theo thứ tự được chỉ định ở đây.
  • debug: Thêm tính năng gỡ lỗi từ xa vào quy trình Edge Microgateway.
    • cổng: Số cổng để nghe. Ví dụ: đặt trình gỡ lỗi IDE để nghe trên cổng này.
    • args: Đối số cho quy trình gỡ lỗi. Ví dụ: args --nolazy
  • config_change_poll_interval: (mặc định: 600 giây) Edge Microgateway tải một cấu hình mới theo định kỳ và thực thi tải lại nếu có gì thay đổi. Cuộc thăm dò ý kiến chọn bất kỳ thay đổi nào được thực hiện trên Edge (thay đổi đối với sản phẩm, proxy nhận biết vi mô, v.v.) làm cũng như các thay đổi được thực hiện đối với tệp cấu hình cục bộ.
  • disable_config_poll_interval: (mặc định: false) Đặt thành true để tắt thăm dò thay đổi tự động.
  • request_timeout: Đặt thời gian chờ cho các yêu cầu mục tiêu. Thời gian chờ được đặt trong giây. Nếu hết thời gian chờ, Edge Microgateway sẽ phản hồi bằng mã trạng thái 504. (Đã thêm v2.4.x)
  • keep_alive_timeout: Thuộc tính này cho phép bạn đặt Edge Microgateway (tính bằng mili giây). (Mặc định: 5 giây) (Đã thêm phiên bản 3.0.6)
  • headers_timeout: Thuộc tính này giới hạn thời lượng (tính bằng mili giây) trình phân tích cú pháp HTTP sẽ đợi để nhận tiêu đề HTTP hoàn chỉnh.

    Ví dụ:

    edgemicro:
    keep_alive_timeout: 6000
    headers_timeout: 12000

    Trong nội bộ, thông số này đặt Node.js Server.headersTimeout theo yêu cầu. (Mặc định: nhiều hơn 5 giây thời gian được đặt bằng edgemicro.keep_alive_timeout. Chế độ mặc định này chế độ cài đặt ngăn chặn trình cân bằng tải hoặc proxy làm gián đoạn kết nối.) (Đã thêm phiên bản 3.1.1)

thuộc tính tiêu đề

Những chế độ cài đặt này định cấu hình cách xử lý một số tiêu đề HTTP nhất định.

  • x-redirected-for: (mặc định: true) Đặt thành false để ngăn x-chuyển tiếp-cho tiêu đề được truyền đến mục tiêu. Lưu ý rằng nếu tiêu đề x- đang ở trong yêu cầu, thì giá trị của đường liên kết đó sẽ được đặt thành giá trị IP máy khách trong Edge Analytics.
  • x-redirected-host: (mặc định: true) Đặt thành false để ngăn tiêu đề x-Forwarded-host được truyền đến mục tiêu.
  • x-request-id: (mặc định: true) Đặt thành false để ngăn tiêu đề x-request-id được chuyển đến mục tiêu.
  • x-response-time: (mặc định: true) Đặt thành false để ngăn tiêu đề x-response-time được truyền đến mục tiêu.
  • via: (default: true) Đặt thành false để ngăn việc đặt tiêu đề thành false được chuyển đến mục tiêu.

Thuộc tính OAuth

Các chế độ cài đặt này định cấu hình cách Edge Microgateway thực thi quy trình xác thực ứng dụng khách.

  • allowNoAuthorization: (mặc định: false) Nếu bạn đặt thành true, các lệnh gọi API sẽ được phép chuyển qua Edge Microgateway mà không có bất kỳ tiêu đề Uỷ quyền nào. Đặt thành false để yêu cầu tiêu đề Uỷ quyền (mặc định).
  • allowInvalidAuthorization: (mặc định: false) Nếu được đặt thành true, các lệnh gọi API sẽ được phép chuyển nếu mã thông báo được chuyển trong tiêu đề Uỷ quyền không hợp lệ hoặc đã hết hạn. Thiết lập thành false để yêu cầu mã thông báo hợp lệ (mặc định).
  • uỷ quyền-tiêu đề: (mặc định: Uỷ quyền: Người mang) Tiêu đề được dùng để gửi mã truy cập đến Edge Microgateway. Bạn nên thay đổi chế độ cài đặt mặc định này trong trường hợp mục tiêu cần sử dụng tiêu đề Uỷ quyền cho một số mục đích khác.
  • api-key-header: (mặc định: x-api-key) Tên của tiêu đề hoặc truy vấn dùng để truyền khoá API đến Edge Microgateway. Xem thêm phần Sử dụng khoá API.
  • keep-authorization-header: (mặc định: false) Nếu được đặt thành true, thì tiêu đề Uỷ quyền đã gửi trong yêu cầu sẽ được chuyển sang mục tiêu (yêu cầu được giữ nguyên).
  • allowOAuthOnly -- Nếu được đặt thành true, mọi API phải mang uỷ quyền bằng một Mã truy cập của người dùng. Cho phép bạn chỉ cho phép mô hình bảo mật OAuth (trong khi duy trì khả năng tương thích ngược). (Đã thêm 2.4.x)
  • allowAPIKeyOnly -- Nếu được đặt thành true, mỗi API phải mang Tiêu đề x-api-key (hoặc vị trí tuỳ chỉnh) có Khoá API.Cho phép bạn cho phép mô hình bảo mật khoá API (trong khi vẫn duy trì khả năng tương thích ngược). (Đã thêm 2.4.x)
  • gracePeriod – Thông số này giúp ngăn chặn các lỗi do mức chênh lệch giữa đồng hồ hệ thống của bạn so với thời điểm Phát hành trước (nbf) hoặc Được phát hành vào (iat) được chỉ định trong mã thông báo uỷ quyền JWT. Đặt thông số này thành số giây để cho phép để phát hiện những khác biệt như vậy. (Đã thêm 2.5.7)

Dành riêng cho trình bổ trợ thuộc tính

Xem phần Sử dụng trình bổ trợ để biết chi tiết về các thuộc tính có thể định cấu hình của mỗi trình bổ trợ.

Lọc proxy

Bạn có thể lọc những proxy nhận biết cổng vi mô mà phiên bản Edge Microgateway sẽ xử lý. Khi Edge Microgateway khởi động, Edge Microgateway sẽ tải xuống tất cả các proxy nhận biết microgateway trong tổ chức liên kết với tài khoản đó. Sử dụng cấu hình sau để giới hạn các proxy microgateway sẽ xử lý. Ví dụ: cấu hình này giới hạn các proxy cổng vi mô sẽ xử lý thành ba: edgemicro_proxy-1, edgemicro_proxy-2, và edgemicro_proxy-3:

edgemicro:
  proxies:
  - edgemicro_proxy-1
  - edgemicro_proxy-2
  - edgemicro_proxy-3

Lọc sản phẩm

Sử dụng cấu hình sau để giới hạn số lượng sản phẩm API mà Edge Microgateway tải xuống và xử lý. Để lọc những sản phẩm đã tải xuống, hãy thêm productnamefilter tham số truy vấn cho API /products được liệt kê trong Edge Microgateway *.config.yaml . Ví dụ:

edge_config:
  bootstrap: >-
    https://edgemicroservices.apigee.net/edgemicro/bootstrap/organization/willwitman/environment/test
  jwt_public_key: 'https://myorg-test.apigee.net/edgemicro-auth/publicKey'
  managementUri: 'https://api.enterprise.apigee.com'
  vaultName: microgateway
  authUri: 'https://%s-%s.apigee.net/edgemicro-auth'
  baseUri: >-
    https://edgemicroservices.apigee.net/edgemicro/%s/organization/%s/environment/%s
  bootstrapMessage: Please copy the following property to the edge micro agent config
  keySecretMessage: The following credentials are required to start edge micro
  products: 'https://myorg-test.apigee.net/edgemicro-auth/products?productnamefilter=%5E%5BEe%5Ddgemicro.%2A%24'

Lưu ý rằng giá trị của tham số truy vấn phải được chỉ định ở định dạng biểu thức chính quy và được mã hoá URL. Ví dụ: biểu thức chính quy ^[Ee]dgemicro.*$ sẽ nắm bắt các tên như: " Edgemicro-test-1" , "edgemicro_demo" và "Edgemicro_New_demo". Giá trị URL được mã hoá, phù hợp với sử dụng trong tham số truy vấn là: %5E%5BEe%5Ddgemicro.%2A%24.

Kết quả gỡ lỗi sau đây cho thấy chỉ các sản phẩm đã lọc mới được tải xuống:

...
2020-05-27T03:13:50.087Z [76060] [microgateway-config network] products download from https://gsc-demo-prod.apigee.net/edgemicro-auth/products?productnamefilter=%5E%5BEe%5Ddgemicro.%2A%24 returned 200 OK
...
....
....
{
   "apiProduct":[
      {
         "apiResources":[

         ],
         "approvalType":"auto",
         "attributes":[
            {
               "name":"access",
               "value":"public"
            }
         ],
         "createdAt":1590549037549,
         "createdBy":"k***@g********m",
         "displayName":"test upper case in name",
         "environments":[
            "prod",
            "test"
         ],
         "lastModifiedAt":1590549037549,
         "lastModifiedBy":"k***@g********m",
         "name":"Edgemicro_New_Demo",
         "proxies":[
            "catchall"
         ],
         "quota":"null",
         "quotaInterval":"null",
         "quotaTimeUnit":"null",
         "scopes":[

         ]
      },
      {
         "apiResources":[

         ],
         "approvalType":"auto",
         "attributes":[
            {
               "name":"access",
               "value":"public"
            }
         ],
         "createdAt":1590548328998,
         "createdBy":"k***@g********m",
         "displayName":"edgemicro test 1",
         "environments":[
            "prod",
            "test"
         ],
         "lastModifiedAt":1590548328998,
         "lastModifiedBy":"k***@g********m",
         "name":"edgemicro-test-1",
         "proxies":[
            "Lets-Encrypt-Validation-DoNotDelete"
         ],
         "quota":"null",
         "quotaInterval":"null",
         "quotaTimeUnit":"null",
         "scopes":[

         ]
      },
      {
         "apiResources":[
            "/",
            "/**"
         ],
         "approvalType":"auto",
         "attributes":[
            {
               "name":"access",
               "value":"public"
            }
         ],
         "createdAt":1558182193472,
         "createdBy":"m*********@g********m",
         "displayName":"Edge microgateway demo product",
         "environments":[
            "prod",
            "test"
         ],
         "lastModifiedAt":1569077897465,
         "lastModifiedBy":"m*********@g********m",
         "name":"edgemicro_demo",
         "proxies":[
            "edgemicro-auth",
            "edgemicro_hello"
         ],
         "quota":"600",
         "quotaInterval":"1",
         "quotaTimeUnit":"minute",
         "scopes":[

         ]
      }
   ]
}

Định cấu hình tần suất đẩy số liệu phân tích

Sử dụng các tham số cấu hình này để kiểm soát tần suất mà Edge Microgateway gửi dữ liệu phân tích cho Apigee:

  • bufferSize (Không bắt buộc): Số lượng tối đa bản ghi Analytics mà có thể lưu giữ trước khi bắt đầu bỏ các bản ghi cũ nhất. Mặc định: 10000
  • batchSize (Không bắt buộc): Kích thước tối đa của một lô bản ghi Analytics gửi đến Apigee. Mặc định: 500
  • flushInterval (Không bắt buộc): Số mili giây giữa mỗi lần xả dữ liệu một loạt bản ghi phân tích được gửi đến Apigee. Mặc định: 5000

Ví dụ:

analytics:
  bufferSize: 15000
  batchSize: 1000
  flushInterval: 6000

Ẩn dữ liệu phân tích

Cấu hình sau đây ngăn thông tin về đường dẫn yêu cầu xuất hiện trong Edge số liệu phân tích. Thêm phần sau đây vào cấu hình microgateway để che giấu URI yêu cầu và/hoặc đường dẫn yêu cầu. Lưu ý rằng URI bao gồm các phần đường dẫn và tên máy chủ của yêu cầu.

analytics:
  mask_request_uri: 'string_to_mask'
  mask_request_path: 'string_to_mask'

Tách riêng các lệnh gọi API trong Edge Analytics

Bạn có thể định cấu hình trình bổ trợ Analytics để tách biệt một đường dẫn API cụ thể để trình bổ trợ đó xuất hiện dưới dạng một proxy riêng trong trang tổng quan của Edge Analytics. Ví dụ: bạn có thể tách riêng API kiểm tra tình trạng trong trang tổng quan để tránh nhầm lẫn API này với các lệnh gọi proxy API thực tế. Trong Trang tổng quan Analytics, các proxy riêng biệt sẽ tuân theo mẫu đặt tên sau:

edgemicro_proxyname-health

Hình ảnh sau đây cho thấy 2 proxy riêng biệt trong trang tổng quan Analytics: edgemicro_hello-healthedgemicro_mock-health:

Sử dụng các tham số để tách riêng đường dẫn tương đối và tuyệt đối trong trang tổng quan Analytics dưới dạng các proxy riêng biệt:

  • relativePath (Không bắt buộc): Chỉ định một đường dẫn tương đối để tách riêng trong trang tổng quan Analytics. Ví dụ: nếu bạn chỉ định /healthcheck, tất cả lệnh gọi API chứa đường dẫn /healthcheck sẽ xuất hiện trong trang tổng quan dưới tên edgemicro_proxyname-health. Lưu ý rằng cờ này bỏ qua đường dẫn cơ sở của proxy. Để tách riêng dựa trên một đường dẫn đầy đủ, bao gồm cả đường dẫn cơ sở, hãy sử dụng cờ proxyPath.
  • proxyPath (Không bắt buộc): Chỉ định một đường dẫn proxy API đầy đủ, bao gồm cả proxy đường dẫn cơ sở, để tách biệt trong trang tổng quan của số liệu phân tích. Ví dụ: nếu bạn chỉ định /mocktarget/healthcheck, trong đó /mocktarget là đường dẫn cơ sở proxy, tất cả lệnh gọi API có đường dẫn /mocktarget/healthcheck sẽ xuất hiện trong trang tổng quan dưới tên edgemicro_proxyname-health.

Ví dụ: trong cấu hình sau đây, bất kỳ đường dẫn API nào chứa /healthcheck sẽ được phân tách bằng trình bổ trợ Analytics. Điều này có nghĩa là /foo/healthcheck/foo/bar/healthcheck sẽ được phân tách dưới dạng một proxy riêng có tên là edgemicro_proxyname-health trong trang tổng quan về số liệu phân tích.

analytics:
  uri: >-
    https://xx/edgemicro/ax/org/docs/environment/test
  bufferSize: 100
  batchSize: 50
  flushInterval: 500
  relativePath: /healthcheck

Trong cấu hình sau đây, bất kỳ API nào có đường dẫn proxy /mocktarget/healthcheck sẽ sẽ được phân tách thành một proxy riêng có tên là edgemicro_proxyname-health trong trang tổng quan về số liệu phân tích.

analytics:
  uri: >-
    https://xx/edgemicro/ax/org/docs/environment/test
  bufferSize: 100
  batchSize: 50
  flushInterval: 500
  proxyPath: /mocktarget/healthcheck

Thiết lập Edge Microgateway sau tường lửa của công ty

Dùng proxy HTTP để giao tiếp với Apigee Edge

Đã thêm trong phiên bản 3.1.2.

Để dùng proxy HTTP cho việc giao tiếp giữa Edge Microgateway và Apigee Edge, hãy thực hiện sau:

  1. Thiết lập các biến môi trường HTTP_PROXY, HTTPS_PROXYNO_PROXY. Các các biến kiểm soát máy chủ lưu trữ của từng proxy HTTP mà bạn muốn dùng để giao tiếp Apigee Edge (người tổ chức không được xử lý việc giao tiếp với Apigee Edge). Ví dụ:
    export HTTP_PROXY='http://localhost:3786'
    export HTTPS_PROXY='https://localhost:3786'
    export NO_PROXY='localhost,localhost:8080'

    Xin lưu ý rằng NO_PROXY có thể là danh sách các miền được Edge Microgateway phân tách bằng dấu phẩy không nên proxy.

    Để biết thêm thông tin về các biến này, hãy xem https://www.npmjs.com/package/request#controlling-proxy-behaviour-using-environment-variables

  2. Khởi động lại Edge Microgateway.

Sử dụng proxy HTTP để giao tiếp mục tiêu

Đã thêm trong phiên bản 3.1.2.

Để sử dụng proxy HTTP cho việc giao tiếp giữa Edge Microgateway và các mục tiêu phụ trợ, hãy làm như sau:

  1. Thêm cấu hình sau vào tệp cấu hình microgateway:
    edgemicro:
      proxy:
        tunnel: true | false
        url: proxy_url
        bypass: target_host # target hosts to bypass the proxy.
        enabled: true | false

    Trong trường hợp:

    • đường hầm: (Không bắt buộc) Khi đúng, Edge Microgateway sẽ sử dụng phương thức HTTP CONNECT để tạo đường hầm cho HTTP qua một kết nối TCP. (Điều này cũng đúng nếu các biến môi trường, như được đề cập bên dưới, để định cấu hình proxy đã được bật TLS). Mặc định: false
    • url: URL của proxy HTTP.
    • bỏ qua: (Không bắt buộc) Chỉ định một hoặc nhiều URL máy chủ mục tiêu được phân tách bằng dấu phẩy sẽ bỏ qua proxy HTTP. Nếu thuộc tính này chưa được đặt, hãy sử dụng NO_PROXY biến môi trường để chỉ định URL mục tiêu cần bỏ qua.
    • enabled (bật): Nếu bạn đặt là true và proxy.url, hãy sử dụng giá trị proxy.url cho proxy HTTP. Nếu bạn đặt là true và không đặt proxy.url, hãy sử dụng proxy được chỉ định trong proxy HTTP các biến môi trường HTTP_PROXYHTTPS_PROXY, như được mô tả trong Sử dụng proxy HTTP để giao tiếp với Apigee Edge.

    Ví dụ:

    edgemicro:
      proxy:
        tunnel: true
        url: 'http://localhost:3786'
        bypass: 'localhost','localhost:8080' # target hosts to bypass the proxy.
        enabled: true

  2. Khởi động lại Edge Microgateway.

Sử dụng ký tự đại diện trong tính năng nhận biết Microgateway proxy

Bạn có thể sử dụng một hoặc nhiều "*" các ký tự đại diện trong đường dẫn cơ sở của edgemicro_* (Nhận biết được Microgateway). Ví dụ: đường dẫn cơ sở của /team/*/members cho phép khách hàng gọi điện https://[host]/team/blue/membershttps://[host]/team/green/members mà không cần tạo proxy API mới để hỗ trợ các nhóm mới. Lưu ý /**/ không được hỗ trợ.

Lưu ý quan trọng: Apigee KHÔNG hỗ trợ sử dụng ký tự đại diện "*" với tư cách là phần tử đầu tiên của đường dẫn cơ sở. Ví dụ: tính năng này KHÔNG được hỗ trợ: tìm kiếm /*/.

Xoay các khoá JWT

Tại một thời điểm nào đó sau khi tạo JWT lần đầu, bạn có thể cần thay đổi cặp khoá công khai/riêng tư được lưu trữ trong KVM được mã hoá của Edge. Quá trình tạo khoá mới được gọi là xoay vòng khoá.

Cách Edge Microgateway sử dụng JWT

Mã thông báo web JSON (JWT) là một tiêu chuẩn mã thông báo được mô tả trong RFC7519. JWT cung cấp cách ký một tập hợp các xác nhận quyền sở hữu, có thể được người nhận JWT xác minh một cách đáng tin cậy.

Edge Microgateway sử dụng JWT làm mã thông báo truyền dữ liệu để bảo mật OAuth. Khi bạn tạo mã thông báo OAuth cho Edge Microgateway, thì bạn sẽ nhận lại được một JWT. Sau đó, bạn có thể sử dụng JWT trong Tiêu đề uỷ quyền của lệnh gọi API. Ví dụ:

curl -i http://localhost:8000/hello -H "Authorization: Bearer eyJhbGciOiJ..dXDefZEA"

Tạo JWT mới

Bạn có thể tạo JWT cho Edge Microgateway bằng lệnh edgemicro token hoặc một API. Ví dụ:

edgemicro token get -o docs -e test -i G0IAeU864EtBo99NvUbn6Z4CBwVcS2 -s uzHTbwNWvoSmOy

Lệnh này yêu cầu Apigee Edge tạo một JWT sau đó có thể dùng để xác minh API cuộc gọi. Các tham số -i-s là mã nhận dạng người tiêu dùng và giá trị bí mật từ một ứng dụng của nhà phát triển trong tổ chức Apigee Edge.

Hoặc bạn cũng có thể tạo JWT bằng API quản lý:

curl -i -X POST "http://$ORG-$ENV.apigee.net/edgemicro-auth/token" \
  -H "Content-Type: application/json" \
  -d '{
    "$CLIENT_ID": "your consumer key",
    "$CLIENT_SECRET": "your consumer secret",
    "grant_type": "client_credentials"
  }'

Trong trường hợp:

  • $ORG là tên tổ chức của bạn trên Edge (bạn phải là quản trị viên tổ chức).
  • $ENV là một môi trường trong tổ chức của bạn (chẳng hạn như "kiểm thử" hoặc "sản phẩm").
  • $CLIENT_ID là Mã nhận dạng người tiêu dùng trong Ứng dụng dành cho nhà phát triển mà bạn đã tạo trước đây.
  • $CLIENT_SECRET là Thông tin bí mật của người dùng trong Ứng dụng dành cho nhà phát triển mà bạn đã tạo trước đây.

Xoay vòng khoá là gì?

Tại một thời điểm nào đó sau khi tạo JWT lần đầu, bạn có thể cần thay đổi cặp khoá công khai/riêng tư được lưu trữ trong KVM được mã hoá của Edge. Quá trình tạo khoá mới được gọi là xoay vòng khoá. Khi bạn thay đổi khoá, một cặp khoá riêng tư/công khai mới sẽ được tạo và được lưu trữ trong "cửa nhỏ" KVM trong tổ chức/môi trường Apigee Edge. Ngoài ra, khoá công khai cũ sẽ được giữ lại cùng với giá trị mã nhận dạng khoá ban đầu.

Để tạo JWT, Edge sử dụng thông tin được lưu trữ trong KVM đã mã hoá. Đáp KVM có tên là microgateway được tạo và điền sẵn các khoá khi bạn thiết lập (đã định cấu hình) lần đầu Cổng nhỏ ở rìa. Các khoá trong KVM được dùng để ký và mã hoá JWT.

Khoá KVM bao gồm:

  • private_key – Khoá riêng tư RSA mới nhất (được tạo gần đây nhất) dùng để ký JWT.

  • public_key – Chứng chỉ mới nhất (được tạo gần đây nhất) dùng để xác minh JWT ký bằng khoá private_key.

  • private_key_kid – Mã khoá riêng tư mới nhất (được tạo gần đây nhất). Mã khoá này được liên kết với giá trị private_key và dùng để hỗ trợ xoay vòng khoá.

  • public_key1_kid – Mã khoá công khai mới nhất (tạo gần đây nhất). Chìa khoá này là được liên kết với giá trị Public_key1 và dùng để hỗ trợ xoay vòng khoá. Giá trị này giống với khoá riêng tư của trẻ.

  • public_key1 – Khoá công khai mới nhất (được tạo gần đây nhất).

Khi bạn thực hiện xoay vòng khoá, các giá trị khoá hiện có sẽ được thay thế trong bản đồ và khoá mới khoá sẽ được thêm vào để giữ lại khoá công khai cũ. Ví dụ:

  • public_key2_kid – Mã khoá công khai cũ. Chìa khoá này được liên kết với giá trị Public_key2 và được dùng để hỗ trợ xoay vòng khoá.

  • public_key2 – Khoá công khai cũ.

Những JWT được cung cấp để xác minh sẽ được xác minh bằng khoá công khai mới. Nếu không xác minh được thì khoá công khai cũ sẽ được sử dụng cho đến khi hết hạn (sau 30 phút). Trong bằng cách này, bạn có thể "xoay" khoá mà không làm gián đoạn ngay lập tức lưu lượng truy cập API.

Cách xoay khoá

Phần này giải thích cách thực hiện việc xoay vòng khoá.

Nếu bạn đã định cấu hình phiên bản Edge Microgateway trước phiên bản 2.5.2

Nếu bạn đã định cấu hình phiên bản Edge Microgateway trước phiên bản 2.5.2, thì bạn phải chạy hai lệnh sau để nâng cấp KVM và chính sách xác thực:

upgradekvm -o $ORG -e $ENV -u $USERNAME

Để biết thêm thông tin về lệnh này, hãy xem phần Nâng cấp KVM.

Lệnh tiếp theo nâng cấp proxy edgemicro-oauth đã được triển khai lên tổ chức Apigee của bạn khi bạn định cấu hình Edge Microgateway. Proxy này cung cấp dịch vụ cần thiết để tạo mã thông báo.

upgradeauth -o $ORG -e $ENV -u $USERNAME

Để biết thêm thông tin về lệnh này, hãy xem phần Nâng cấp Edgemicro-auth proxy.

Xoay các phím

Thêm dòng sau vào tệp ~/.edgemicro/org-env-config.yaml (nơi bạn phải chỉ định cùng một tổ chức và môi trường mà bạn đã định cấu hình cổng vi mô để sử dụng:

jwk_public_keys: 'https://org-env.apigee.net/edgemicro-auth/jwkPublicKeys'

Chạy lệnh xoay vòng phím để xoay các phím. (Để biết thêm thông tin về lệnh này, hãy xem Xoay phím.)

edgemicro rotatekey -o $ORG -e $ENV -u $USERNAME -k $KID_VALUE

Ví dụ:

edgemicro rotatekey -o jdoe -e test -u jdoe@google.com -k 2
current nodejs version is v12.5.0
current edgemicro version is 3.1.0
password:
Checking if private key exists in the KVM...
Checking for certificate...
Found Certificate
Generating New key/cert pair...
Extract new public key
Key Rotation successfully completed!

Tham số -k chỉ định một Mã khoá (kid). Mã này dùng để so khớp với một khoá cụ thể. Edge Microgateway sử dụng giá trị này để chọn trong số một tập hợp các khoá trong quá trình xoay vòng khoá. Để biết thêm thông tin, xem Mục 4.5 của Thông số kỹ thuật của Khoá web JSON.

Sau khi xoay phím, Edge sẽ trả về nhiều khoá cho Edge Microgateway. Ghi chú trong phần Ví dụ sau: mỗi khoá có một "con" duy nhất (Mã khoá). Sau đó, microgateway sử dụng để xác thực mã thông báo uỷ quyền. Nếu quá trình xác thực mã thông báo không thành công, cổng vi mô sẽ xem xét xem có khoá cũ nào trong bộ khoá không và thử khoá đó. Định dạng của khoá trả về là Khoá web JSON (JWK). Bạn có thể đọc về định dạng này trong RFC 7517.

{
  "keys": [
    {
      "kty": "RSA",
      "n": "nSl7R_0wKLiWi6cO3n8aOJwYGBtinq723Jgg8i7KKWTSTYoszOjgGsJf_MX4JEW1YCScwpE5o4o8ccQN09iHVTlIhk8CNiMZNPipClmRVjaL_8IWvMQp1iN66qy4ldWXzXnHfivUZZogCkBNqCz7VSC5rw2Jf57pdViULVvVDGwTgf46sYveW_6h8CAGaD0KLd3vZffxIkoJubh0yMy0mQP3aDOeIGf_akeZeZ6GzF7ltbKGd954iNTiKmdm8IKhz6Y3gLpC9iwQ-kex_j0CnO_daHl1coYxUSCIdv4ziWIeM3dmjQ5_2dEvUDIGG6_Az9hTpNgPE5J1tvrOHAmunQ",
      "e": "AQAB",
      "kid": "2"
    },
    {
      "kty": "RSA",
      "n": "8BKwzx34BMUcHwTuQtmp8LFRCMxbkKg_zsWD6eOMIUTAsORexTGJsTy7z-4aH0wJ3fT-3luAAUPLBQwGcuHo0P1JnbtPrpuYjaJKSZOeIMOnlryJCspmv-1xG4qAqQ9XaZ9C97oecuj7MMoNwuaZno5MvsY-oi5B_gqED3vIHUjaWCErd4reONyFSWn047dvpE6mwRhZbcOTkAHT8ZyKkHISzopkFg8CD-Mij12unxA3ldcTV7yaviXgxd3eFSD1_Z4L7ZRsDUukCJkJ-8qY2-GWjewzoxl-mAW9D1tLK6qAdc89yFem3JHRW6L1le3YK37-bs6b2a_AqJKsKm5bWw",
      "e": "AQAB",
      "kid": "1"
    }
  ]
}

Lọc các proxy đã tải xuống

Theo mặc định, Edge Microgateway sẽ tải tất cả các proxy trong tổ chức Edge của bạn xuống bắt đầu bằng tiền tố đặt tên "edgemicro_". Bạn có thể thay đổi chế độ mặc định này để tải proxy xuống có tên khớp với một mẫu.

  1. Mở tệp cấu hình Edge Micro: ~/.edgemicro/org-env-config.yaml
  2. Thêm phần tử proxyPattern trong Edge_config. Ví dụ: mẫu sau đây sẽ tải các proxy xuống như Edgemicro_foo, Edgemicro_fast và Edgemicro_first.
    edge_config:proxyPattern: edgemicro_f*

Chỉ định sản phẩm mà không có proxy API

Trong Apigee Edge, bạn có thể tạo một sản phẩm API không chứa proxy API nào. Cấu hình sản phẩm này cho phép khoá API liên kết với sản phẩm đó hoạt động với bất kỳ được triển khai trong tổ chức của bạn. Kể từ phiên bản 2.5.4, Edge Microgateway đã hỗ trợ sản phẩm này .

Gỡ lỗi và khắc phục sự cố

Kết nối với trình gỡ lỗi

Bạn có thể chạy Edge Microgateway bằng một trình gỡ lỗi, chẳng hạn như node-inspector (công cụ kiểm tra nút). Thông tin này hữu ích cho khắc phục sự cố và gỡ lỗi plugin tùy chỉnh.

  1. Khởi động lại Edge Microgateway ở chế độ gỡ lỗi. Để thực hiện việc này, hãy thêm DEBUG=* vào đầu lệnh start:
    DEBUG=* edgemicro start -o $ORG -e $ENV -k $KEY -s $SECRET

    Để chuyển hướng đầu ra gỡ lỗi đến một tệp, bạn có thể sử dụng lệnh sau:

    export DEBUG=* nohup edgemicro start \
    -o $ORG -e $ENV -k $KEY -s $SECRET 2>&1 | tee /tmp/file.log

  2. Khởi động trình gỡ lỗi và đặt trình gỡ lỗi để theo dõi số cổng của quá trình gỡ lỗi.
  3. Giờ đây, bạn có thể duyệt qua mã Edge Microgateway, đặt điểm ngắt, biểu thức xem, và cứ tiếp tục như vậy.

Bạn có thể chỉ định các cờ Node.js chuẩn liên quan đến chế độ gỡ lỗi. Ví dụ: --nolazy giúp gỡ lỗi mã không đồng bộ.

Đang kiểm tra tệp nhật ký

Nếu bạn gặp sự cố, hãy nhớ kiểm tra các tệp nhật ký để biết thông tin chi tiết và lỗi thực thi của bạn. Để biết thông tin chi tiết, hãy xem phần Quản lý tệp nhật ký.

Sử dụng tính năng bảo mật khoá API

Khoá API cung cấp một cơ chế đơn giản để xác thực ứng dụng gửi yêu cầu với Edge Cổng nhỏ. Bạn có thể lấy khoá API bằng cách sao chép giá trị Khoá người dùng (còn gọi là Client-ID) từ một sản phẩm Apigee Edge có proxy xác thực Edge Microgateway.

Lưu các khoá vào bộ nhớ đệm

Khoá API sẽ được đổi lấy mã thông báo truyền dữ liệu và sẽ được lưu vào bộ nhớ đệm. Bạn có thể tắt tính năng lưu vào bộ nhớ đệm bằng cách cài đặt tiêu đề Cache-Control: no-cache trên các yêu cầu gửi đến Edge Cổng nhỏ.

Sử dụng khoá API

Bạn có thể chuyển khoá API trong yêu cầu API dưới dạng tham số truy vấn hoặc trong tiêu đề. Theo mặc định, tiêu đề và tên tham số truy vấn đều là x-api-key.

Ví dụ về tham số truy vấn:

curl http://localhost:8000/foobar?x-api-key=JG616Gjz7xs4t0dvpvVsGdI49G34xGsz

Ví dụ về tiêu đề:

curl http://localhost:8000/foobar -H "x-api-key:JG616Gjz7xs4t0dvpvVsGdI49G34xGsz"

Định cấu hình tên khoá API

Theo mặc định, x-api-key là tên dùng cho cả tiêu đề khoá API và tham số truy vấn. Bạn có thể thay đổi giá trị mặc định này trong tệp cấu hình, như được giải thích trong phần Thực hiện thay đổi cấu hình. Ví dụ: để thay đổi tên thành apiKey:

oauth:
  allowNoAuthorization: false
  allowInvalidAuthorization: false
  api-key-header: apiKey

Trong ví dụ này, cả tham số truy vấn và tên tiêu đề đều được thay đổi thành apiKey. Chiến lược phát hành đĩa đơn tên x-api-key sẽ không còn hoạt động trong cả hai trường hợp. Xem thêm Thực hiện thay đổi cấu hình.

Ví dụ:

curl http://localhost:8000/foobar -H "apiKey:JG616Gjz7xs4t0dvpvVsGdI49G34xGsz"

Để biết thêm thông tin về cách sử dụng khoá API với yêu cầu proxy, hãy xem Bảo mật cổng nhỏ (bảo mật).

Bật mã phản hồi ngược dòng (upstream)

Theo mặc định, trình bổ trợ oauth chỉ trả về mã trạng thái lỗi 4xx nếu thì nội dung phản hồi không phải là trạng thái 200. Bạn có thể thay đổi hành vi này để nó luôn trả về mã 4xx hoặc 5xx chính xác, tuỳ thuộc vào lỗi.

Để bật tính năng này, hãy thêm thuộc tính oauth.useUpstreamResponse: true vào cấu hình Edge Microgateway của bạn. Ví dụ:

oauth:
  allowNoAuthorization: false
  allowInvalidAuthorization: false
  gracePeriod: 10
  useUpstreamResponse: true

Sử dụng phương thức bảo mật mã thông báo OAuth2

Phần này giải thích cách lấy mã truy cập OAuth2 và mã làm mới. Mã truy cập được dùng để tạo các lệnh gọi API bảo mật thông qua microgateway. Mã làm mới được dùng để lấy mã truy cập mới.

Cách nhận mã truy cập

Phần này giải thích cách dùng proxy edgemicro-auth để nhận mã truy cập.

Bạn cũng có thể nhận mã truy cập bằng lệnh edgemicro token CLI. Để biết thông tin chi tiết về CLI, hãy xem phần Quản lý mã thông báo.

API 1: Gửi thông tin xác thực dưới dạng tham số nội dung

Thay thế tên tổ chức và tên môi trường của bạn trong URL, và thay thế các giá trị Mã nhận dạng người tiêu dùng và Thông tin bí mật của người dùng thu được từ ứng dụng của nhà phát triển trên Apigee Cạnh cho các tham số nội dung client_idclient_secret:

curl -i -X POST "http://<org>-<test>.apigee.net/edgemicro-auth/token" \
-d '{"grant_type": "client_credentials", "client_id": "your_client_id", \
"client_secret": "your_client_secret"}' -H "Content-Type: application/json"

API 2: Gửi thông tin xác thực trong tiêu đề Xác thực cơ bản

Gửi thông tin xác thực máy khách dưới dạng tiêu đề Xác thực cơ bản và grant_type làm tham số biểu mẫu. Biểu mẫu lệnh này cũng được thảo luận trong RFC 6749: Khung uỷ quyền OAuth 2.0.

http://<org>-<test>.apigee.net/edgemicro-auth/token -v -u your_client_id:your_client_secret \
-d 'grant_type=client_credentials' -H "Content-Type: application/x-www-form-urlencoded"

Kết quả mẫu

API trả về phản hồi JSON. Lưu ý rằng không có sự khác biệt giữa token và Thuộc tính access_token. Bạn có thể sử dụng một trong hai hình ảnh.
{
"token": "eyJraWQiOiIxIiwidHlwIjoi",
"access_token": "eyJraWQiOiIxIiwid",
"token_type": "bearer",
"expires_in": "108000"
}

Cách nhận mã làm mới

Để nhận mã làm mới, hãy thực hiện lệnh gọi API đến điểm cuối /token của Proxy edgemicro-auth. Bạn PHẢI thực hiện lệnh gọi API này bằng password loại tài trợ. Các bước sau đây sẽ hướng dẫn bạn thực hiện quy trình này.

  1. Lấy quyền truy cập và mã làm mới bằng API /token. Lưu ý rằng loại quyền là password:
    curl -X POST \
      https://your_organization-your_environment.apigee.net/edgemicro-auth/token \
      -H 'Content-Type: application/json' \
      -d '{
       "client_id":"mpK6l1Bx9oE5zLdifoDbF931TDnDtLq",
       "client_secret":"bUdDcFgv3nXffnU",
       "grant_type":"password",
       "username":"mpK6lBx9RoE5LiffoDbpF931TDnDtLq",
       "password":"bUdD2FvnMsXffnU"
    }'

    API trả về một mã truy cập và mã làm mới. Câu trả lời trông giống với sau:

    {
        "token": "your-access-token",
        "access_token": "your-access-token",
        "token_type": "bearer",
        "expires_in": "108000",
        "refresh_token": "your-refresh-token",
        "refresh_token_expires_in": "431999",
        "refresh_token_issued_at": "1562087304302",
        "refresh_token_status": "approved"
    }
  2. Giờ đây, bạn có thể sử dụng mã làm mới để nhận mã truy cập mới bằng cách gọi điểm cuối /refresh của cùng một API. Ví dụ:
    curl -X POST \
      https://willwitman-test.apigee.net/edgemicro-auth/refresh \
      -H 'Content-Type: application/json' \
      -d '{
       "client_id":"mpK6l1Bx9RoE5zLifoDbpF931TDnDtLq",
       "client_secret":"bUdDc2Fv3nMXffnU",
       "grant_type":"refresh_token",
       "refresh_token":"your-refresh-token"
    }'

    API sẽ trả về một mã truy cập mới. Câu trả lời sẽ có dạng như sau:

    {
        "token": "your-new-access-token"
        }

Giám sát vĩnh viễn

Vĩnh viễn là một công cụ Node.js giúp tự động khởi động lại ứng dụng Node.js trong trường hợp quy trình bị gián đoạn hoặc gặp lỗi. Cạnh Microgateway có một tệp forever.json mà bạn có thể định cấu hình để kiểm soát số lượng tệp và khoảng thời gian khởi động lại Edge Microgateway. Tệp này định cấu hình một Dịch vụ vĩnh viễn có tên forever-monitor, giúp quản lý vĩnh viễn dịch vụ này theo phương thức lập trình.

Bạn có thể tìm thấy tệp forever.json trong phần cài đặt gốc của Edge Microgateway thư mục. Xem Edge Microgateway được cài đặt ở đâu. Để biết chi tiết về các tuỳ chọn cấu hình, hãy tham khảo tài liệu giám sát vĩnh viễn.

Lệnh edgemicro forever bao gồm các cờ cho phép bạn chỉ định vị trí của tệp forever.json (cờ -f) và bắt đầu/dừng tính năng giám sát vĩnh viễn (cờ -a). Ví dụ:

edgemicro forever -f ~/mydir/forever.json -a start

Để biết thêm thông tin, hãy xem phần Giám sát vĩnh viễn trong tài liệu tham khảo về CLI.

Chỉ định điểm cuối của tệp cấu hình

Nếu chạy nhiều thực thể Edge Microgateway, bạn nên quản lý cấu hình của các thực thể đó từ một vị trí. Bạn có thể thực hiện việc này bằng cách chỉ định điểm cuối HTTP mà Edge Micro có thể tải tệp cấu hình xuống. Bạn có thể chỉ định điểm cuối này khi khởi động Edge Micro bằng cờ -u.

Ví dụ:

edgemicro start -o jdoe -e test -u http://mylocalserver/mgconfig -k public_key -s secret_key

nơi điểm cuối mgconfig trả về nội dung của tệp cấu hình. Đây là tệp theo mặc định, nằm trong ~/.edgemicro và có quy ước đặt tên: org-env-config.yaml

Tắt chế độ lưu vào bộ đệm dữ liệu kết nối TCP

Bạn có thể sử dụng thuộc tính cấu hình nodelay để tắt tính năng lưu vào bộ đệm dữ liệu cho kết nối TCP mà Edge Microgateway sử dụng.

Theo mặc định, các kết nối TCP sử dụng Nagle thuật toán để lưu dữ liệu vào vùng đệm trước khi gửi đi. Đặt nodelay thành true, tắt hành vi này (dữ liệu sẽ kích hoạt dữ liệu ngay lập tức mỗi lần socket.write() sẽ được gọi). Xem thêm phần Node.js để biết thêm chi tiết.

Để bật nodelay, hãy chỉnh sửa tệp cấu hình Edge Micro như sau:

edgemicro:
  nodelay: true
  port: 8000
  max_connections: 1000
  config_change_poll_interval: 600
  logging:
    level: error
    dir: /var/tmp
    stats_log_interval: 60
    rotate_interval: 24

Chạy Edge Microgateway ở chế độ độc lập

Bạn có thể chạy Edge Microgateway mà không cần kết nối hoàn toàn khỏi bất kỳ Phần phụ thuộc Apigee Edge. Tình huống này được gọi là chế độ độc lập, cho phép bạn chạy và kiểm thử Edge Microgateway mà không cần kết nối Internet.

Ở chế độ độc lập, các tính năng sau không hoạt động vì chúng cần có kết nối với Apigee Edge:

  • OAuth và khoá API
  • Hạn mức
  • Số liệu phân tích

Mặt khác, các trình bổ trợ tuỳ chỉnh và chức năng bắt tăng đột biến hoạt động bình thường vì chúng không cần kết nối với Apigee Edge. Ngoài ra, một trình bổ trợ mới có tên là extauth cho phép bạn cho phép các lệnh gọi API đến cổng vi mô bằng JWT khi ở chế độ độc lập.

Định cấu hình và khởi động cổng vào

Cách chạy Edge Microgateway ở chế độ độc lập:

  1. Tạo một tệp cấu hình có tên như sau: $HOME/.edgemicro/$ORG-$ENV-config.yaml

    Ví dụ:

    vi $HOME/.edgemicro/foo-bar-config.yaml
  2. Dán mã sau vào tệp:
    edgemicro:
      port: 8000
      max_connections: 1000
      config_change_poll_interval: 600
      logging:
        level: error
        dir: /var/tmp
        stats_log_interval: 60
        rotate_interval: 24
      plugins:
        sequence:
          - extauth
          - spikearrest
    headers:
      x-forwarded-for: true
      x-forwarded-host: true
      x-request-id: true
      x-response-time: true
      via: true
    extauth:
      publickey_url: https://www.googleapis.com/oauth2/v1/certs
    spikearrest:
      timeUnit: second
      allow: 10
      buffersize: 0
  3. Xuất biến môi trường sau với giá trị "1":
    export EDGEMICRO_LOCAL=1
  4. Thực thi lệnh start sau đây, nơi bạn cung cấp các giá trị để tạo thực thể proxy cục bộ:
    edgemicro start -o $ORG -e $ENV -a $LOCAL_PROXY_NAME \
      -v $LOCAL_PROXY_VERSION -t $TARGET_URL -b $BASE_PATH

    Trong trường hợp:

    • $ORG là "tổ chức" mà bạn đã sử dụng trong tên tệp cấu hình.
    • $ENV là "môi trường" tên mà bạn đã sử dụng trong tệp cấu hình .
    • $LOCAL_PROXY_NAME là tên của proxy cục bộ sẽ được tạo. Bạn có thể sử dụng bất kỳ tên nào bạn muốn.
    • $LOCAL_PROXY_VERSION là số phiên bản của proxy.
    • $TARGET_URL là URL mục tiêu của proxy. (Mục tiêu là dịch vụ mà proxy gọi).
    • $BASE_PATH là đường dẫn cơ sở của proxy. Giá trị này phải bắt đầu bằng một giá trị chuyển tiếp dấu gạch chéo. Đối với đường dẫn cơ sở gốc, chỉ xác định dấu gạch chéo lên; ví dụ: "/".

    Ví dụ:

    edgemicro start -o local -e test -a proxy1 -v 1 -t http://mocktarget.apigee.net -b /
  5. Kiểm tra cấu hình.
    curl http://localhost:8000/echo  { "error" : "missing_authorization" }

    Vì trình bổ trợ extauth nằm trong tệp foo-bar-config.yaml, nên bạn nhận được một "missing_uỷ quyền" . Trình bổ trợ này xác thực JWT phải có trong phần Uỷ quyền tiêu đề của lệnh gọi API. Trong phần tiếp theo, bạn sẽ nhận được JWT cho phép thực hiện lệnh gọi API mà không gặp lỗi.

Ví dụ: Lấy mã thông báo uỷ quyền

Ví dụ sau đây cho thấy cách lấy JWT qua điểm cuối JWT của Edge Microgateway trên Apigee Edge (edgemicro-auth/jwkPublicKeys). Điểm cuối này được triển khai khi bạn thực hiện quá trình thiết lập và định cấu hình chuẩn của Edge Microgateway. Để có được JWT từ điểm cuối Apigee, trước tiên, bạn phải thiết lập Edge Microgateway tiêu chuẩn, và kết nối với Internet. Điểm cuối Apigee được dùng tại đây cho các mục đích ví dụ và không bắt buộc. Bạn có thể sử dụng một điểm cuối mã thông báo JWT khác nếu muốn. Nếu làm như vậy thì bạn sẽ cần lấy JWT bằng cách sử dụng API được cung cấp cho điểm cuối đó.

Các bước sau đây giải thích cách lấy mã thông báo bằng điểm cuối edgemicro-auth/jwkPublicKeys:.

  1. Bạn phải thực hiện tiêu chuẩn thiết lập và định cấu hình của Edge Microgateway để triển khai proxy edgemicro-auth cho tổ chức/môi trường của bạn trên Apigee Edge. Nếu trước đây đã thực hiện bước này thì bạn không cần lặp lại.
  2. Nếu đã triển khai Edge Microgateway cho Apigee Cloud, bạn phải kết nối với Internet để có thể nhận JWT từ điểm cuối này.
  3. Dừng Edge Microgateway:
    edgemicro stop
  4. Trong tệp cấu hình mà bạn đã tạo trước đó ($HOME/.edgemicro/org-env-config.yaml), trỏ extauth:publickey_url cho điểm cuối edgemicro-auth/jwkPublicKeys trong tổ chức/môi trường Apigee Edge của bạn. Ví dụ:
    extauth:
      publickey_url: 'https://your_org-your_env.apigee.net/edgemicro-auth/jwkPublicKeys'
  5. Khởi động lại Edge Microgateway như bạn đã làm trước đó, sử dụng các tên tổ chức/env mà bạn đã dùng trong tên tệp cấu hình. Ví dụ:
    edgemicro start -o foo -e bar -a proxy1 -v 1 -t http://mocktarget.apigee.net -b /
  6. Nhận mã thông báo JWT từ điểm cuối uỷ quyền. Vì bạn đang sử dụng edgemicro-auth/jwkPublicKeys điểm cuối, bạn có thể sử dụng lệnh CLI sau:

Bạn có thể tạo JWT cho Edge Microgateway bằng lệnh edgemicro token hoặc một API. Ví dụ:

edgemicro token get -o your_org -e your_env \
  -i G0IAeU864EtBo99NvUbn6Z4CBwVcS2 -s uzHTbwNWvoSmOy

Trong trường hợp:

  • your_org là tên của tổ chức Apigee của bạn mà trước đây bạn đã định cấu hình cho Edge Microgateway.
  • your_env là một môi trường trong tổ chức.
  • Tuỳ chọn i chỉ định Khoá người tiêu dùng từ một ứng dụng của nhà phát triển có một sản phẩm bao gồm proxy edgemicro-auth.
  • Tuỳ chọn s chỉ định Khoá bí mật người dùng của một ứng dụng của nhà phát triển có sản phẩm bao gồm proxy edgemicro-auth.

Lệnh này yêu cầu Apigee Edge tạo một JWT sau đó có thể dùng để xác minh API cuộc gọi.

Hãy xem thêm bài viết Tạo mã thông báo.

Kiểm thử cấu hình độc lập

Để kiểm tra cấu hình, hãy gọi API kèm theo mã thông báo trong tiêu đề Uỷ quyền như sau:

curl http://localhost:8000/echo -H "Authorization: Bearer your_token

Ví dụ:

curl http://localhost:8000/echo -H "Authorization: Bearer eyJraWQiOiIxIiwidHlwIjo...iryF3kwcDWNv7OQ"

Kết quả điểm dữ liệu:

{
   "headers":{
      "user-agent":"curl/7.54.0",
      "accept":"*/*",
      "x-api-key":"DvUdLlFwG9AvGGpEgfnNGwtvaXIlUUvP",
      "client_received_start_timestamp":"1535134472699",
      "x-authorization-claims":"eyJhdDbiO...M1OTE5MTA1NDkifQ==",
      "target_sent_start_timestamp":"1535134472702",
      "x-request-id":"678e3080-a7ae-11e8-a70f-87ae30db3896.8cc81cb0-a7c9-11e8-a70f-87ae30db3896",
      "x-forwarded-proto":"http",
      "x-forwarded-host":"localhost:8000",
      "host":"mocktarget.apigee.net",
      "x-cloud-trace-context":"e2ac4fa0112c2d76237e5473714f1c85/1746478453618419513",
      "via":"1.1 localhost, 1.1 google",
      "x-forwarded-for":"::1, 216.98.205.223, 35.227.194.212",
      "connection":"Keep-Alive"
   },
   "method":"GET",
   "url":"/",
   "body":""
}

Sử dụng chế độ proxy cục bộ

Ở chế độ proxy cục bộ, Edge Microgateway không yêu cầu proxy nhận biết microgateway được triển khai trên Apigee Edge. Thay vào đó, bạn định cấu hình một "proxy cục bộ" bằng cách cung cấp tên proxy cục bộ, đường dẫn cơ sở và URL mục tiêu khi bạn khởi động cổng nhỏ. Sau đó, các lệnh gọi API đến cổng vi mô sẽ được gửi đến mục tiêu URL của proxy cục bộ. Trong tất cả các khía cạnh khác, chế độ proxy cục bộ hoạt động giống hệt như chạy Edge Microgateway ở chế độ thông thường. Xác thực hoạt động như nhau và tăng đột biến bắt giữ và thực thi hạn mức, plugin tuỳ chỉnh, v.v.

Trường hợp sử dụng và ví dụ

Chế độ proxy cục bộ rất hữu ích khi bạn chỉ cần liên kết một proxy duy nhất với một cổng Microgate thực thể. Ví dụ: bạn có thể chèn Edge Microgateway vào Kubernetes dưới dạng proxy trợ giúp, trong đó mỗi cổng vi mô và dịch vụ chạy trong một nhóm duy nhất và là nơi cổng vi mô quản lý lưu lượng truy cập đến và dịch vụ đồng hành. Hình sau đây minh hoạ cấu trúc này, trong đó Edge Microgateway hoạt động như một proxy phụ trong một cụm Kubernetes. Mỗi thực thể microgateway sẽ trò chuyện chỉ cho một điểm cuối duy nhất trên dịch vụ đồng hành:

Edgemicro dưới dạng Sidecar

Lợi ích của kiểu kiến trúc này là Edge Microgateway cung cấp API quản lý cho các dịch vụ riêng lẻ được triển khai cho môi trường vùng chứa, chẳng hạn như một cụm Kubernetes.

Định cấu hình chế độ proxy cục bộ

Để định cấu hình Edge Microgateway chạy ở chế độ proxy cục bộ, hãy làm theo các bước sau:

  1. Chạy edgemicro init để thiết lập chính xác môi trường cấu hình cục bộ của bạn giống như cách thiết lập Edge Microgateway thông thường. Xem thêm Định cấu hình Edge Microgateway.
  2. Chạy edgemicro configure, như cách bạn thiết lập Edge Microgateway thông thường quy trình. Ví dụ:
    edgemicro configure -o your_org -e your_env -u your_apigee_username

    Lệnh này sẽ triển khai chính sách edgemicro-auth cho Edge và trả về một khoá và bí mật rằng bạn sẽ cần khởi động cổng nhỏ. Nếu bạn cần trợ giúp, hãy xem Định cấu hình Edge Microgateway.

  3. Trên Apigee Edge, hãy tạo một sản phẩm API có cấu hình bắt buộc sau đây theo yêu cầu (bạn có thể quản lý tất cả các cấu hình khác như bạn muốn):
    • Bạn phải thêm proxy edgemicro-auth vào sản phẩm. Proxy này đã tự động được triển khai khi bạn chạy edgemicro configure.
    • Bạn phải cung cấp đường dẫn tài nguyên. Apigee khuyên bạn nên thêm đường dẫn này vào sản phẩm: /**. Để tìm hiểu thêm, hãy xem phần Định cấu hình hành vi của đường dẫn tài nguyên. Xem thêm bài viết Tạo API trong tài liệu Edge.
  4. Trên Apigee Edge, hãy tạo một nhà phát triển hoặc bạn có thể dùng một nhà phát triển hiện có nếu bạn mong muốn. Để được trợ giúp, hãy xem phần Thêm nhà phát triển bằng giao diện người dùng quản lý Edge.

  5. Trên Apigee Edge, hãy tạo một ứng dụng dành cho nhà phát triển. Bạn phải thêm sản phẩm API mà bạn vừa tạo vào ứng dụng. Để được trợ giúp, hãy xem phần Đăng ký ứng dụng trong Edge giao diện người dùng quản lý.
  6. Trên máy cài đặt Edge Microgateway, hãy xuất các tệp sau biến môi trường có giá trị "1".
    export EDGEMICRO_LOCAL_PROXY=1
  7. Thực thi lệnh start sau:
    edgemicro start -o your_org -e your_environment -k your_key -s your_secret \
        -a local_proxy_name -v local_proxy_version -t target_url -b base_path

    Trong trường hợp:

    • your_org là tổ chức Apigee của bạn.
    • your_environment là một môi trường trong tổ chức của bạn.
    • your_key là khoá được trả về khi bạn chạy edgemicro configure
    • your_secret là mã thông báo bí mật được trả về khi bạn chạy edgemicro configure
    • local_proxy_name là tên của proxy cục bộ sẽ được tạo.
    • local_proxy_version là số phiên bản của proxy.
    • target_url là URL đích của proxy (dịch vụ mà proxy sẽ cuộc gọi).
    • base_path là đường dẫn cơ sở của proxy. Giá trị này phải bắt đầu bằng một giá trị chuyển tiếp dấu gạch chéo. Đối với đường dẫn cơ sở gốc, chỉ xác định dấu gạch chéo lên; ví dụ: "/".

    Ví dụ:

    edgemicro start -o your_org -e test -k 7eb6aae644cbc09035a...d2eae46a6c095f \
      -s e16e7b1f5d5e24df...ec29d409a2df853163a -a proxy1 -v 1 \
      -t http://mocktarget.apigee.net -b /echo

Kiểm thử cấu hình

Bạn có thể kiểm tra cấu hình proxy cục bộ bằng cách gọi điểm cuối proxy. Ví dụ: nếu đã chỉ định một đường dẫn cơ sở của /echo, bạn có thể gọi proxy như sau:

curl  http://localhost:8000/echo
{
  "error" : "missing_authorization",
  "error_description" : "Missing Authorization header"
}

Lệnh gọi API ban đầu này đã gây ra lỗi vì bạn không cung cấp khoá API hợp lệ. Bạn có thể tìm thấy khoá trong ứng dụng dành cho nhà phát triển mà bạn đã tạo trước đây. Mở ứng dụng trong giao diện người dùng Edge, sao chép Khoá người dùng và sử dụng khoá đó như sau:

curl  http://localhost:8000/echo -H 'x-api-key:your_api_key'

Ví dụ:

curl  http://localhost:8000/echo -H "x-api-key:DvUdLlFwG9AvGGpEgfnNGwtvaXIlUUvP"

Kết quả điểm dữ liệu:

{
  "headers":{
    "user-agent":"curl/7.54.0",
    "accept":"*/*",
    "x-api-key":"DvUdLlFwG9AvGGpEgfnNGwtvaXIlUUvP",
    "client_received_start_timestamp":"1535134472699",
    "x-authorization-claims":"eyJhdWQiOi...TQ0YmUtOWNlOS05YzM1OTE5MTA1NDkifQ==",
    "target_sent_start_timestamp":"1535134472702",
    "x-request-id":"678e3080-a7ae-11e8-a70f-87ae30db3896.8cc81cb0-a7c9-11e8-a70f-87ae30db3896",
    "x-forwarded-proto":"http",
    "x-forwarded-host":"localhost:8000",
    "host":"mocktarget.apigee.net",
    "x-cloud-trace-context":"e2ac4fa0112c2d76237e5473714f1c85/1746478453618419513",
    "via":"1.1 localhost, 1.1 google",
    "x-forwarded-for":"::1, 216.98.205.223, 35.227.194.212",
    "connection":"Keep-Alive"
  },
  "method":"GET",
  "url":"/",
  "body":""
}

Sử dụng trình đồng bộ hoá

Phần này giải thích cách sử dụng trình đồng bộ hoá, một tính năng tuỳ chọn cải thiện khả năng phục hồi của Edge Microgteway bằng cách cho phép để truy xuất dữ liệu cấu hình từ Apigee Edge rồi ghi dữ liệu đó vào cơ sở dữ liệu Redis cục bộ. Bằng một phiên bản đồng bộ hoá đang chạy, các phiên bản Edge Microgateway khác chạy trên các nút khác nhau có thể truy xuất cấu hình trực tiếp từ cơ sở dữ liệu này.

Tính năng đồng bộ hoá hiện được hỗ trợ để hoạt động với Redis 5.0.x.

Trình đồng bộ hoá là gì?

Bộ đồng bộ hoá mang đến khả năng thích ứng và phục hồi cho Edge Microgateway. Việc này giúp đảm bảo mọi phiên bản của Edge Microgateway đều sử dụng cùng một cấu hình và điều đó nếu có sự gián đoạn Internet, các đối tượng của Edge Microgateway có thể khởi động và chạy đúng cách.

Theo mặc định, các thực thể của Edge Microgateway phải giao tiếp được với Apigee Edge để truy xuất và làm mới dữ liệu cấu hình, chẳng hạn như proxy API và cấu hình sản phẩm API. Nếu kết nối Internet với Edge bị gián đoạn, các thực thể cổng vi mô có thể tiếp tục vì dữ liệu cấu hình mới nhất được lưu vào bộ nhớ đệm. Tuy nhiên, các trường hợp cổng nhỏ mới không thể khởi động nếu không có kết nối rõ ràng. Hơn nữa, có thể có mạng làm gián đoạn dẫn đến một hoặc nhiều thực thể cửa nhỏ chạy cùng với cấu hình không đồng bộ với các thông tin khác.

Trình đồng bộ hoá Edge Microgateway cung cấp cơ chế thay thế cho Edge Microgateway để truy xuất dữ liệu cấu hình mà các thực thể đó cần để khởi động và xử lý lưu lượng truy cập proxy API. Trình đồng bộ hoá giúp tất cả Edge Microgateway có thể hoạt động thực thể chạy trên các nút khác nhau để khởi động đúng cách và luôn đồng bộ hoá ngay cả khi kết nối Internet giữa Edge Microgateway và Apigee Edge bị gián đoạn.

Trình đồng bộ hoá là một phiên bản được định cấu hình đặc biệt của Edge Microgateway. Mục đích duy nhất là thăm dò ý kiến của Apigee Edge (có thể định cấu hình thời gian), truy xuất dữ liệu cấu hình và ghi dữ liệu đó vào cơ sở dữ liệu Redis cục bộ. Bản thân thực thể trình đồng bộ hoá không thể xử lý proxy API lưu lượng truy cập. Các phiên bản khác của Edge Microgateway chạy trên các nút khác nhau có thể được định cấu hình để truy xuất dữ liệu cấu hình từ cơ sở dữ liệu Redis thay vì từ Apigee Cạnh. Vì tất cả các phiên bản microgateway đều lấy dữ liệu cấu hình từ cơ sở dữ liệu, chúng có thể khởi động và xử lý các yêu cầu API ngay cả trong trường hợp có kết nối Internet sự gián đoạn.

Định cấu hình thực thể trình đồng bộ hoá

Thêm cấu hình sau vào tệp org-env/config.yaml cho cài đặt Edge Microgateway mà bạn muốn sử dụng làm trình đồng bộ hoá:

edgemicro:
  redisHost: host_IP
  redisPort: host_port
  redisDb: database_index
  redisPassword: password
edge_config:
  synchronizerMode: 1
  redisBasedConfigCache: true

Ví dụ:

edgemicro:
  redisHost: 192.168.4.77
  redisPort: 6379
  redisDb: 0
  redisPassword: codemaster
edge_config:
  synchronizerMode: 1
  redisBasedConfigCache: true
Phương thức Mô tả
redisHost Máy chủ lưu trữ nơi thực thể Redis của bạn đang chạy. Mặc định: 127.0.0.1
redisPort Cổng của thực thể Redis. Mặc định: 6379
redisDb DB Redis để sử dụng. Mặc định: 0
redisPassword Mật khẩu cơ sở dữ liệu của bạn.

Cuối cùng, hãy lưu tệp cấu hình và khởi động thực thể Edge Microgateway. Hành trình này sẽ bắt đầu thăm dò Apigee Edge và lưu trữ dữ liệu cấu hình đã tải xuống trong cơ sở dữ liệu Redis.

Định cấu hình các phiên bản Edge Microgateway thông thường

Khi bộ đồng bộ hoá đang chạy, bạn có thể định cấu hình thêm các nút Edge Microgateway để chạy các phiên bản vi mô thông thường xử lý lưu lượng truy cập proxy API. Tuy nhiên, bạn định cấu hình để lấy dữ liệu cấu hình từ cơ sở dữ liệu Redis thay vì từ Lợi ích của Apigee.

Thêm cấu hình sau vào mỗi nút Edge Microgateway bổ sung Tệp org-env/config.yaml. Xin lưu ý rằng synchronizerMode được thiết lập thành 0. Thuộc tính này thiết lập để thực thể hoạt động như bình thường Phiên bản Edge Microgateway xử lý lưu lượng truy cập proxy API và thực thể đó sẽ lấy dữ liệu cấu hình từ cơ sở dữ liệu Redis.

edgemicro:
  redisHost: host_IP
  redisPort: host_port
  redisDb: database_index
  redisPassword: password
edge_config:
  synchronizerMode: 0
  redisBasedConfigCache: true

Ví dụ:

edgemicro:
  redisHost: 192.168.4.77
  redisPort: 6379
  redisDb: 0
  redisPassword: codemaster
edge_config:
  synchronizerMode: 0
  redisBasedConfigCache: true

Thuộc tính cấu hình

Các thuộc tính cấu hình sau đã được thêm vào để hỗ trợ việc sử dụng trình đồng bộ hoá:

Thuộc tính Giá trị Mô tả
edge_config.synchronizerMode 0 hoặc 1

Nếu 0 (mặc định), Edge Microgateway hoạt động ở chế độ chuẩn.

Nếu là 1, hãy khởi động phiên bản Edge Microgateway để hoạt động như một trình đồng bộ hoá. Trong phần này chế độ cài đặt này, thực thể này sẽ lấy dữ liệu cấu hình từ Apigee Edge rồi lưu trữ dữ liệu đó trong cơ sở dữ liệu Redis cục bộ. Phiên bản này không thể xử lý các yêu cầu proxy API; của mục đích duy nhất là thăm dò ý kiến của Apigee Edge để lấy dữ liệu cấu hình và ghi dữ liệu đó vào cơ sở dữ liệu. Sau đó, bạn phải định cấu hình các thực thể microgateway khác để đọc từ cơ sở dữ liệu.

edge_config.redisBasedConfigCache true hoặc false Nếu đúng, thực thể Edge Microgateway sẽ tìm nạp dữ liệu cấu hình từ Cơ sở dữ liệu Redis thay vì từ Apigee Edge. Cơ sở dữ liệu của Redis phải cùng một cơ sở dữ liệu mà bộ đồng bộ hoá được định cấu hình để ghi vào. Nếu cơ sở dữ liệu Redis không hoạt động hoặc nếu cơ sở dữ liệu trống, cổng vi mô sẽ tìm cache-config.yaml hiện có cho cấu hình của nó.

Nếu giá trị là false (mặc định), thì phiên bản Edge Microgateway sẽ tìm nạp dữ liệu cấu hình qua Apigee Edge như thường lệ.

edgemicro.config_change_poll_interval Khoảng thời gian, tính bằng giây Chỉ định khoảng thời gian thăm dò ý kiến để trình đồng bộ hoá lấy dữ liệu từ Apigee Edge.