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.2.x
Đối tượng
Chủ đề này dành cho các nhà điều hành Edge Microgateway muốn sử dụng các trình bổ trợ hiện có được lắp đặt với cổng vi mô. Báo cáo cũng thảo luận về việc bắt giữ tăng đột biến và các trình bổ trợ hạn mức ở (cả hai đều đi kèm với quá trình cài đặt). Nếu bạn là nhà phát triển muốn tạo trình bổ trợ, hãy xem phần Phát triển trình bổ trợ tuỳ chỉnh.
Trình bổ trợ Edge Microgateway là gì?
Trình bổ trợ là một mô-đun Node.js giúp thêm chức năng cho Edge Microgateway. Mô-đun trình bổ trợ tuân theo một mẫu nhất quán và được lưu trữ tại một vị trí mà Edge Microgateway biết đến, cho phép microgateway để khám phá và tải chúng một cách tự động. Edge Microgateway bao gồm một số trình bổ trợ và bạn cũng có thể tạo trình bổ trợ tuỳ chỉnh, như giải thích trong phần Phát triển trình bổ trợ tuỳ chỉnh.
Các trình bổ trợ hiện có đi kèm với Edge Cổng nhỏ
Một số trình bổ trợ hiện có được cung cấp Edge Microgateway khi cài đặt. Các bao gồm:
Trình bổ trợ | Bật theo mặc định | Mô tả |
---|---|---|
số liệu phân tích | Có | Gửi dữ liệu phân tích từ Edge Microgateway đến Apigee Edge. |
OAuth | Có | Thêm mã thông báo OAuth và tính năng xác thực Khoá API vào Edge Microgateway. Xem phần Cài đặt thiết lập và định cấu hình Edge Microgateway. |
hạn mức | Không | Thực thi hạn mức đối với các yêu cầu đến Edge Microgateway. Sử dụng Apigee Edge để lưu trữ và quản lý hạn mức. Hãy xem Sử dụng trình bổ trợ hạn mức. |
thiết bị đầu cuối | Không | Ngăn chặn tình trạng lưu lượng truy cập tăng đột biến và các cuộc tấn công từ chối dịch vụ (DoS). Hãy xem bài viết Sử dụng trình bổ trợ ngăn chặn tăng đột biến. |
header-uppercase | Không | Một proxy mẫu có nhận xét nhằm hướng dẫn nhà phát triển viết trình bổ trợ tuỳ chỉnh. Xem Trình bổ trợ mẫu Edge Microgateway. |
accumulate-request | Không | Tích luỹ dữ liệu yêu cầu vào một đối tượng duy nhất trước khi chuyển dữ liệu đến đối tượng tiếp theo trình xử lý trong chuỗi trình bổ trợ. Hữu ích để viết các trình bổ trợ biến đổi cần hoạt động trên đối tượng nội dung yêu cầu tích luỹ. |
accumulate-response | Không | Tích luỹ dữ liệu phản hồi vào một đối tượng duy nhất trước khi truyền dữ liệu đến đối tượng tiếp theo trình xử lý trong chuỗi trình bổ trợ. Hữu ích để viết các trình bổ trợ biến đổi cần hoạt động trên đối tượng nội dung phản hồi tích luỹ. |
biến đổi viết hoa | Không | Chuyển đổi dữ liệu yêu cầu hoặc phản hồi. Trình bổ trợ này đại diện cho một phương pháp hay nhất triển khai trình bổ trợ biến đổi. Trình bổ trợ ví dụ thực hiện một phép biến đổi đơn giản (chuyển đổi dữ liệu yêu cầu hoặc phản hồi thành chữ hoa); tuy nhiên, bạn có thể dễ dàng điều chỉnh hồ sơ thanh toán cho phù hợp với thực hiện các loại biến đổi khác, chẳng hạn như từ XML sang JSON. |
json2xml | Không | Chuyển đổi dữ liệu yêu cầu hoặc phản hồi dựa trên tiêu đề chấp nhận hoặc tiêu đề loại nội dung. Cho chi tiết, tham khảo trình bổ trợ trong GitHub. |
bộ nhớ hạn mức | Không | Thực thi hạn mức đối với các yêu cầu đến Edge Microgateway. Lưu trữ và quản lý hạn mức tại địa phương bộ nhớ. |
kiểm tra tình trạng | Không | Trả về thông tin về tiến trình Edge Microgateway -- mức sử dụng bộ nhớ, mức sử dụng cpu, Để sử dụng trình bổ trợ này, hãy gọi URL /healthcheck trên Edge Phiên bản Microgateway. Trình bổ trợ này nhằm trở thành một ví dụ mà bạn có thể sử dụng để triển khai trình bổ trợ kiểm tra tình trạng của riêng bạn. |
Nơi tìm các trình bổ trợ hiện có
Các trình bổ trợ hiện có đi kèm với Edge Microgateway đều được đặt tại đây, nơi [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.
[prefix]/lib/node_modules/edgemicro/node_modules/microgateway-plugins
Thêm và định cấu hình trình bổ trợ
Làm theo mẫu sau để thêm và định cấu hình trình bổ trợ:
- Dừng Edge Microgateway.
- Mở tệp cấu hình Edge Microgateway. Để biết chi tiết, hãy xem Thay đổi cấu hình cho các lựa chọn.
- Thêm trình bổ trợ vào phần tử
plugins:sequence
của tệp cấu hình như sau. Các trình bổ trợ được thực thi theo thứ tự xuất hiện trong danh sách này.
edgemicro: home: ../gateway port: 8000 max_connections: -1 max_connections_hard: -1 logging: level: info dir: /var/tmp stats_log_interval: 60 plugins: dir: ../plugins sequence: - oauth - plugin-name
- Định cấu hình trình bổ trợ. Một số trình bổ trợ có các tham số không bắt buộc mà bạn có thể định cấu hình trong
config của bạn. Ví dụ: bạn có thể thêm đoạn sau để định cấu hình ngăn chặn tăng đột biến
. Xem bài viết Sử dụng trình bổ trợ ngăn chặn tăng đột biến
để biết thêm thông tin.
edgemicro: home: ../gateway port: 8000 max_connections: -1 max_connections_hard: -1 logging: level: info dir: /var/tmp stats_log_interval: 60 plugins: dir: ../plugins sequence: - oauth - spikearrest spikearrest: timeUnit: minute allow: 10
- Lưu tệp.
- Khởi động lại hoặc tải lại Edge Microgateway, tuỳ thuộc vào tệp cấu hình bạn đã chỉnh sửa.
Cấu hình dành riêng cho trình bổ trợ
Bạn có thể ghi đè các tham số trình bổ trợ được chỉ định trong tệp cấu hình bằng cách tạo một cấu hình dành riêng cho trình bổ trợ trong thư mục này:
[prefix]/lib/node_modules/edgemicro/node_modules/microgateway-plugins/config
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.
plugins/<plugin_name>/config/default.yaml
. Ví dụ: bạn có thể đặt trường này
chặn trong plugins/spikearrest/config/default.yaml
và chúng sẽ ghi đè mọi quy tắc chặn khác
config của bạn.
spikearrest: timeUnit: hour allow: 10000 buffersize: 0
Sử dụng trình bổ trợ ngăn chặn tăng đột biến
Trình bổ trợ ngăn chặn mốc tăng đột biến giúp ngăn chặn tình trạng lưu lượng truy cập tăng đột biến. Chế độ này điều tiết số lượng yêu cầu do thực thể Edge Microgateway xử lý.
Thêm trình bổ trợ ngăn chặn tăng đột biến
Xem phần Thêm và định cấu hình trình bổ trợ.
Cấu hình mẫu của giảm đột biến
edgemicro: home: ../gateway port: 8000 max_connections: -1 max_connections_hard: -1 logging: level: info dir: /var/tmp stats_log_interval: 60 plugins: dir: ../plugins sequence: - oauth - spikearrest spikearrest: timeUnit: minute allow: 10 bufferSize: 5
Các lựa chọn cấu hình cho giảm đột biến
- timeUnit: Tần suất đặt lại khoảng thời gian thực thi ngăn chặn tăng đột biến. Giá trị hợp lệ là giây hoặc phút.
- allow: Số lượng yêu cầu tối đa được cho phép trong một đơn vị thời gian. Xem Nếu bạn đang chạy nhiều Edge Micro .
- bufferSize: (không bắt buộc, mặc định = 0) nếubufferSize > 0, tăng đột biến bắt giữ sẽ lưu trữ số lượng yêu cầu này trong một vùng đệm. Ngay khi "cửa sổ" thực thi tiếp theo xảy ra, các yêu cầu được lưu vào vùng đệm sẽ được xử lý trước. Hãy xem thêm phần Thêm vùng đệm.
Cơ chế ngăn chặn tăng đột biến hoạt động như thế nào?
Hãy coi việc ngăn chặn mốc tăng đột biến là một biện pháp chung để bảo vệ trước khi lưu lượng truy cập tăng đột biến thay vì để giới hạn lưu lượng truy cập đến một số lượng yêu cầu cụ thể. API và phần phụ trợ của bạn có thể xử lý một số vấn đề nhất định lưu lượng truy cập và chính sách ngăn chặn tăng đột biến giúp bạn thông suốt lưu lượng truy cập bạn muốn.
Hành vi ngăn chặn tăng đột biến trong thời gian chạy khác với những gì bạn có thể thấy từ giá trị cố định các giá trị mỗi phút hoặc mỗi giây bạn nhập.
Ví dụ: giả sử bạn chỉ định tần suất 30 yêu cầu mỗi phút, như sau:
spikearrest: timeUnit: minute allow: 30
Trong khi thử nghiệm, có thể bạn cho rằng mình có thể gửi 30 yêu cầu trong 1 giây, miễn là chúng đến trong vòng một phút. Nhưng đó không phải là cách chính sách thực thi chế độ cài đặt. Nếu bạn cân nhắc, 30 các yêu cầu trong khoảng thời gian 1 giây có thể được coi là mốc tăng đột biến nhỏ trong một số môi trường.
Vậy thì điều gì thực sự sẽ xảy ra? Để ngăn chặn hành vi giống như tăng đột biến, việc bắt tăng đột biến sẽ làm mượt mà được phép lưu lượng truy cập bằng cách chia cài đặt của bạn thành các khoảng thời gian nhỏ hơn, như sau:
Mức giá mỗi phút
Tốc độ mỗi phút được làm mượt thành yêu cầu với khoảng thời gian tính bằng giây được cho phép. Ví dụ: 30 yêu cầu mỗi phút sẽ được xử lý như sau:
60 giây (1 phút) / 30 = 2 giây hoặc khoảng 1 yêu cầu được phép mỗi 2 giây. Đáp yêu cầu thứ hai trong vòng 2 giây sẽ không thành công. Ngoài ra, yêu cầu thứ 31 trong vòng một phút sẽ không thực hiện được.
Tốc độ mỗi giây
Tốc độ mỗi giây được thực hiện mượt mà thành các yêu cầu được phép trong khoảng thời gian tính bằng mili giây. Ví dụ: 10 yêu cầu/giây được xử lý như sau:
1000 mili giây (1 giây) / 10 = khoảng thời gian 100 mili giây hoặc khoảng 1 yêu cầu được cho phép mỗi 100 mili giây . Yêu cầu thứ hai trong vòng 100 mili giây sẽ không thành công. Ngoài ra, yêu cầu thứ 11 trong vòng một giây sẽ không thành công.
Khi vượt quá giới hạn
Nếu số lượng yêu cầu vượt quá giới hạn trong khoảng thời gian đã chỉ định, thì tính năng tạm ngưng tăng đột biến trả về thông báo lỗi này với trạng thái HTTP 503:
{"error": "spike arrest policy violated"}
Thêm vùng đệm
Bạn có thể thêm một vùng đệm vào chính sách. Giả sử bạn đặt vùng đệm thành 10. Bạn sẽ thấy rằng API không trả về lỗi ngay lập tức khi vượt quá mức tăng đột biến tối đa. Thay vào đó, các yêu cầu được lưu vào vùng đệm (lên đến số lượng được chỉ định) và các yêu cầu được lưu vào vùng đệm được xử lý ngay khi có cửa sổ thực thi thích hợp tiếp theo. Mặc định bufferSize là 0.
Nếu bạn đang dùng nhiều ứng dụng Edge Micro các quy trình
Số lượng yêu cầu được phép phụ thuộc vào số lượng quy trình của trình chạy Edge Micro
đang chạy. Mức độ tăng đột biến sẽ tính toán số lượng yêu cầu được phép cho mỗi quy trình của nhân viên. Theo mặc định,
số quy trình của Edge Micro bằng số CPU trên máy có Edge Micro
. Tuy nhiên, bạn có thể định cấu hình số lượng tiến trình của worker khi khởi động Edge Micro
bằng cách sử dụng tuỳ chọn --processes
trên lệnh start
. Ví dụ: nếu bạn
muốn kích hoạt chế độ bắt giữ tăng đột biến ở mức 100 yêu cầu trong một khoảng thời gian nhất định và nếu bạn khởi động Edge
Microgateway với tuỳ chọn --processes 4
, sau đó đặt allow: 25
trong phần tử
cấu hình bắt giữ tăng đột biến. Tóm lại, quy tắc chung là đặt cấu hình allow
thành giá trị "số lượng bắt giữ tăng đột biến mong muốn / số quy trình".
Sử dụng trình bổ trợ hạn mức
Hạn mức cho biết số lượng thông báo yêu cầu mà một ứng dụng được phép gửi đến một API trong khoảng thời gian một giờ, một ngày, một tuần hoặc một tháng. Khi một ứng dụng đạt đến giới hạn hạn mức, Lệnh gọi API bị từ chối. Xem thêm Sự khác biệt giữa và hạn mức tăng đột biến?.
Thêm trình bổ trợ hạn mức
Xem phần Thêm và định cấu hình trình bổ trợ.
Cấu hình sản phẩm trong Apigee Cạnh
Bạn định cấu hình hạn mức trong giao diện người dùng Apigee Edge, nơi bạn định cấu hình các sản phẩm API. Những điều cần biết sản phẩm nào chứa proxy nhận biết microgateway mà bạn muốn giới hạn với hạn mức. Chiến dịch này sản phẩm này phải được thêm vào ứng dụng của nhà phát triển. Khi bạn thực hiện lệnh gọi API được xác thực bằng trong ứng dụng của nhà phát triển thì hạn mức sẽ được áp dụng cho các lệnh gọi API đó.
- Đăng nhập vào tài khoản tổ chức Apigee Edge.
- Trong giao diện người dùng Edge, mở sản phẩm được liên kết với proxy nhận biết cổng vi mô
bạn muốn áp dụng hạn mức.
- Trong giao diện người dùng, hãy chọn Sản phẩm trong trình đơn Xuất bản.
- Mở sản phẩm có chứa API mà bạn muốn áp dụng hạn mức.
- Nhấp vào Chỉnh sửa.
- Trong trường Hạn mức, hãy chỉ định khoảng thời gian. Ví dụ: 100 yêu cầu mỗi
1 phút. Hoặc 50.000 yêu cầu mỗi 2 giờ.
- Nhấp vào Lưu.
- Đảm bảo sản phẩm được thêm vào ứng dụng của nhà phát triển. Bạn sẽ cần các khoá trong ứng dụng này để tạo lệnh gọi API đã xác thực.
Cấu hình mẫu cho hạn mức
edgemicro: home: ../gateway port: 8000 max_connections: -1 max_connections_hard: -1 logging: level: info dir: /var/tmp stats_log_interval: 60 plugins: dir: ../plugins sequence: - oauth - quota
Tùy chọn cấu hình cho hạn mức
Để định cấu hình trình bổ trợ hạn mức, hãy thêm phần tử quotas
vào tệp cấu hình.
như trong ví dụ sau:
edgemicro: home: ../gateway port: 8000 max_connections: -1 max_connections_hard: -1 logging: level: info dir: /var/tmp stats_log_interval: 60 plugins: dir: ../plugins sequence: - oauth - quota quotas: bufferSize: hour: 20000 minute: 500 month: 1 default: 10000 useDebugMpId: true failOpen: true ...
Phương thức | Mô tả |
---|---|
bufferSize |
(Số nguyên) Cấu hình quotas: bufferSize: minute: 500 default: 10000 useDebugMpId: true failOpen: true Theo mặc định, microgateway sẽ đồng bộ hoá bộ đếm hạn mức với Apigee Edge 5 giây một lần nếu khoảng thời gian hạn mức được đặt thành "phút". Cấu hình ở trên cho biết rằng nếu khoảng thời gian hạn mức được đặt trong sản phẩm API thành "phút", Edge Microgateway sẽ đồng bộ hoá với Edge để lấy hạn mức hiện tại sau mỗi 500 yêu cầu hoặc sau 5 giây, tuỳ vào điều kiện nào đến trước. Để biết thêm thông tin, xem Tìm hiểu cách tính hạn mức.
Thời gian cho phép
các đơn vị bao gồm: |
failOpen |
Khi tính năng này được bật, nếu xảy ra lỗi xử lý hạn mức
hoặc nếu "áp dụng hạn mức" yêu cầu Edge không thể cập nhật bộ đếm hạn mức từ xa, hạn mức
sẽ chỉ được xử lý dựa trên số lượng cục bộ cho đến khi hạn mức từ xa thành công tiếp theo
đồng bộ hoá diễn ra. Trong cả hai trường hợp này, cờ quota-failed-open được đặt trong
đối tượng yêu cầu.
Để bật hạn mức "không mở được" , hãy đặt cấu hình sau: edgemicro: ... quotas: failOpen: true |
useDebugMpId |
Đặt cờ này thành true để cho phép ghi nhật ký MP
mã (trình xử lý thông báo)
về phản hồi hạn mức.
Để sử dụng tính năng này, bạn phải thiết lập cấu hình sau: edgemicro: ... quotas: useDebugMpId: true ...
Khi bạn đặt { "allowed": 20, "used": 3, "exceeded": 0, "available": 17, "expiryTime": 1570748640000, "timestamp": 1570748580323, "debugMpId": "6a12dd72-5c8a-4d39-b51d-2c64f953de6a" } |
useRedis |
Nếu bạn đặt thành true , trình bổ trợ sẽ sử dụng Redis cho kho lưu trữ sao lưu hạn mức.
Để biết thông tin chi tiết, hãy xem phần Sử dụng cửa hàng sao lưu Redis để tính hạn mức. |
Tìm hiểu cách tính hạn mức
Theo mặc định, microgateway sẽ đồng bộ hoá bộ đếm hạn mức với Apigee Edge 5 giây một lần nếu khoảng thời gian hạn mức được đặt thành "phút". Nếu bạn đặt khoảng thời gian ở mức cao hơn "phút", chẳng hạn như "tuần" hay "tháng", thì khoảng thời gian làm mới mặc định là 1 phút.
Điều quan trọng cần lưu ý là bạn chỉ định khoảng thời gian hạn mức trong các sản phẩm API được xác định trên Apigee Edge. Khoảng thời gian hạn mức xác định số lượng yêu cầu được cho phép theo phút, giờ, ngày, tuần hoặc tháng. Ví dụ: Sản phẩm A có thể có khoảng hạn mức là 100 yêu cầu mỗi phút và Sản phẩm B có thể có khoảng hạn mức 10.000 yêu cầu mỗi giờ.
YAML của trình bổ trợ Edge Microgateway quota
cấu hình không đặt hạn mức
interval; thay vào đó, nó cung cấp cách điều chỉnh tần suất của một Microgateway cục bộ
thực thể máy ảo đồng bộ hoá hạn mức của mình
số lượng người dùng lớn hơn với Apigee Edge.
Ví dụ: giả sử có 3 sản phẩm API được xác định trong Apigee Edge như sau khoảng thời gian hạn mức được chỉ định:
- Sản phẩm A có hạn mức 100 yêu cầu mỗi phút
- Sản phẩm B có hạn mức 5.000 yêu cầu mỗi giờ
- Sản phẩm C có hạn mức 1000000 yêu cầu mỗi tháng
Khi lưu ý đến các chế độ cài đặt hạn mức đó, trình bổ trợ Edge Microgateway quota
định cấu hình không? Phương pháp hay nhất là định cấu hình Edge Microgateway bằng khoảng thời gian đồng bộ hoá
thấp hơn khoảng thời gian hạn mức được xác định trong các sản phẩm API. Ví dụ:
quotas: bufferSize: hour: 2000 minute: 50 month: 1 default: 10000
Cấu hình này xác định các khoảng thời gian đồng bộ hoá sau đây cho những sản phẩm API được mô tả trước đây:
- Sản phẩm A được đặt thành "phút" . Edge Microgateway sẽ đồng bộ hoá với Edge sau sau mỗi yêu cầu thứ 50 hoặc 5 giây, tuỳ vào thời điểm nào đến trước.
- Sản phẩm B được đặt thành "giờ" . Edge Microgateway sẽ đồng bộ hoá với Edge sau mỗi lần yêu cầu thứ 2000 hoặc 1 phút, tuỳ vào thời điểm nào đến trước.
- Sản phẩm C được đặt thành "tháng" . Edge Microgateway sẽ đồng bộ hoá với Edge sau mọi yêu cầu hoặc 1 phút, tuỳ vào thời điểm nào đến trước.
Mỗi lần một thực thể Microgateway đồng bộ hoá với Edge, số lượng hạn mức được đặt thành số lượng hạn mức được truy xuất.
Chế độ cài đặt bufferSize
cho phép bạn điều chỉnh cách bộ đếm hạn mức
được đồng bộ hoá với Edge. Trong tình huống giao thông đông đúc, chế độ cài đặt bufferSize
cho phép bộ đếm vùng đệm đồng bộ hoá trước khi kích hoạt quá trình đồng bộ hoá theo thời gian mặc định.
Tìm hiểu phạm vi hạn mức
Số lượng hạn mức được giới hạn ở một môi trường trong tổ chức. Để đạt được phạm vi này, Edge Microgateway tạo một giá trị nhận dạng hạn mức là sự kết hợp của "org + env + appName + productName".
Sử dụng kho sao lưu Redis để áp dụng hạn mức
Để sử dụng kho sao lưu của Redis cho hạn mức, hãy dùng cùng một cấu hình dùng cho Tính năng trình đồng bộ hoá. Sau đây là cấu hình cơ bản cần có để sử dụng Redis cho hạn mức bộ nhớ:
edgemicro: redisHost: localhost redisPort: 6379 redisDb: 2 redisPassword: codemaster quotas: useRedis: true
edgemicro.redis*
, hãy xem Sử dụng trình đồng bộ hoá.
Kiểm thử trình bổ trợ hạn mức
Khi vượt quá hạn mức, trạng thái HTTP 403 sẽ được trả về máy khách cùng với thông báo sau:
{"error": "exceeded quota"}
Điểm khác biệt là gì? giữa mức tăng đột biến và hạn mức?
Điều quan trọng là chọn đúng công cụ cho công việc đang thực hiện. Định cấu hình chính sách về hạn mức số lượng thông báo yêu cầu mà một ứng dụng khách được phép gửi đến một API trong suốt khoá học giờ, ngày, tuần hoặc tháng. Chính sách hạn mức thực thi giới hạn sử dụng trên các ứng dụng khách bằng cách duy trì một bộ đếm phân tán để đo lường các yêu cầu đến.
Sử dụng một chính sách hạn mức để thực thi hợp đồng kinh doanh hoặc thoả thuận mức độ cung cấp dịch vụ (SLA) với nhà phát triển và đối tác, thay vì so với việc quản lý lưu lượng vận hành. Ví dụ: bạn có thể dùng hạn mức để giới hạn lưu lượng truy cập cho dịch vụ miễn phí, trong khi vẫn cấp quyền truy cập đầy đủ cho những khách hàng trả tiền.
Sử dụng tính năng ngăn chặn mốc tăng đột biến để ngăn chặn tình trạng lưu lượng truy cập API tăng đột biến. Thông thường, để ngăn chặn mốc tăng đột biến dùng để ngăn chặn các cuộc tấn công DDoS có thể xảy ra hoặc các cuộc tấn công độc hại khác.