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.0.x
Đối tượng người xem
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 cài đặt bằng cổng vi cổng. Bài viết này cũng thảo luận chi tiết về các trình bổ trợ kiểm soát tăng đột biến và 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 phát triển các trình bổ trợ mới, hãy xem bài viết 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 bổ sung chức năng cho Edge Microgateway. Các 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 cổng vi mô khám phá và tự động tải các mô-đun đó. Edge Microgateway bao gồm một số trình bổ trợ hiện có và bạn cũng có thể tạo các 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 Microgateway
Một số trình bổ trợ hiện có được cung cấp kèm theo Edge Microgateway tại thời điểm cài đặt. Trong đó có:
Trình bổ trợ | Bật theo mặc định | Nội dung mô tả |
---|---|---|
số liệu phân tích | Có | Gửi dữ liệu phân tích từ Edge Microgateway cho Apigee Edge. |
oauth | Có | Thêm mã thông báo OAuth và phương thức xác thực Khoá API vào Edge Microgateway. Xem phần 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 tới Edge Microgateway. Sử dụng Apigee Edge để lưu trữ và quản lý hạn mức. Hãy xem phần Sử dụng trình bổ trợ hạn mức. |
vạch tay vịn | Không | Bảo vệ chống lại việc 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 phần Sử dụng trình bổ trợ kiểm soát tăng đột biến. |
chữ viết hoa trên đầu trang | Không | Proxy mẫu có nhận xét nhằm mục đích 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. |
accumlate-request (yêu cầu tích luỹ) | 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 trình xử lý tiếp theo trong chuỗi trình bổ trợ. Được dùng để viết các trình bổ trợ biến đổi cần hoạt động trên một đối tượng nội dung yêu cầu tích luỹ duy nhất. |
tích-hợp-phản_ứng | 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 chuyển dữ liệu đó đến trình xử lý tiếp theo trong chuỗi trình bổ trợ. Được dùng để viết các trình bổ trợ biến đổi cần hoạt động trên một đối tượng nội dung phản hồi được tích luỹ duy nhất. |
biến đổi-chữ 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 cách triển khai phương pháp hay nhất dành cho 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, trình bổ trợ này có thể dễ dàng điều chỉnh để thực hiện các loại biến đổi khác, chẳng hạn như 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 loại nội dung. Để biết thông tin chi tiết, hãy tham khảo tài liệu về trình bổ trợ trong GitHub. |
hạn mức bộ nhớ | Không | Thực thi hạn mức đối với các yêu cầu tới Edge Microgateway. Lưu trữ và quản lý hạn mức trong bộ nhớ cục bộ. |
healthcheck | Không | Trả về thông tin về quy trình Edge Microgateway – mức sử dụng bộ nhớ, mức sử dụng cpu, v.v. Để sử dụng trình bổ trợ, hãy gọi URL /healthcheck trên thực thể Edge Microgateway của bạn. Trình bổ trợ này là một ví dụ mà bạn có thể dùng để triển khai trình bổ trợ kiểm tra tình trạng của riêng mình. |
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 nằm ở đây, trong đó [prefix]
là thư mục tiền tố npm
. Hãy xem phần
Edge Microgateway được cài đặt ở đâu nếu bạn không tìm thấy 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ợ
Hãy 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 thông tin chi tiết, hãy xem phần Thực hiện thay đổi cấu hình để biết các tuỳ 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. 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 tệp cấu hình. Ví dụ: bạn có thể thêm khổ thơ sau đây để định cấu hình trình bổ trợ bắt giữ tăng đột biến. Hãy xem bài viết Sử dụng trình bổ trợ chống 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
. Hãy xem phần
Edge Microgateway được cài đặt ở đâu nếu bạn không tìm thấy thư mục này.
plugins/<plugin_name>/config/default.yaml
. Ví dụ: bạn có thể đặt khối này trong plugins/spikearrest/config/default.yaml
và các khối này sẽ ghi đè mọi chế độ cài đặt cấu hình khác.
spikearrest: timeUnit: hour allow: 10000 buffersize: 0
Sử dụng trình bổ trợ kiểm soát tăng đột biến
Trình bổ trợ bắt giữ tăng đột biến giúp ngăn chặn việc lưu lượng truy cập tăng đột biến. Phương thức này điều tiết số lượng yêu cầu được một thực thể Edge Microgateway xử lý.
Thêm trình bổ trợ Bắt giữ tăng đột biến
Xem Thêm và định cấu hình trình bổ trợ.
Cấu hình mẫu cho tính năng chống tăng độ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 tuỳ chọn cấu hình để bắt giữ số lần tăng đột biến
- timeUnit: Tần suất đặt lại khoảng thời gian thực thi lệnh bắt giữ tăng đột biến. Các 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 timeUnit. Hãy xem thêm phần Nếu bạn đang chạy nhiều quy trình Edge Micro.
- bufferSize: (không bắt buộc, mặc định = 0) nếu bufferSize > 0, thì tính năng bắt giữ tăng đột biến 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 lưu vào vùng đệm sẽ được xử lý trước. Xem thêm phần Thêm vùng đệm.
Việc chặn đột ngột hoạt động như thế nào?
Hãy coi việc chặn đột biến như một cách để thường đề phòng lưu lượng truy cập tăng đột biến thay vì để hạn chế lưu lượng truy cập ở 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 lượng lưu lượng truy cập nhất định. Ngoài ra, chính sách bắt giữ tăng đột biến sẽ giúp bạn điều chỉnh lưu lượng truy cập đến mức chung mà bạn muốn.
Hành vi bắt giữ tăng đột biến trong thời gian chạy khác với những gì bạn có thể mong đợi thấy từ các giá trị cố định mỗi phút hoặc mỗi giây mà bạn nhập.
Ví dụ: giả sử bạn chỉ định tốc độ là 30 yêu cầu mỗi phút, như sau:
spikearrest: timeUnit: minute allow: 30
Trong quá trình kiểm thử, bạn có thể cho rằng mình có thể gửi 30 yêu cầu trong 1 giây, miễn là các yêu cầu đó đến trong vòng một phút. Tuy nhiên, đó không phải là cách chính sách thực thi chế độ cài đặt đó. Nếu bạn suy nghĩ về điều này, 30 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.
Điều gì sẽ thực sự xảy ra? Để ngăn hành vi giống như tăng đột biến, tính năng bắt giữ tăng đột biến sẽ làm mịn lưu lượng truy cập được cho phép bằng cách chia các chế độ cài đặt thành các khoảng nhỏ hơn như sau:
Mức giá mỗi phút
Cước mỗi phút được chuyển thành các yêu cầu theo khoảng thời gian tính bằng giây cho phép. Ví dụ: 30 yêu cầu mỗi phút được làm mượt như sau:
60 giây (1 phút) / 30 = khoảng thời gian 2 giây, hoặc khoảng 1 yêu cầu được phép mỗi 2 giây. 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ành công.
Tốc độ mỗi giây
Tốc độ mỗi giây được chuyển 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 làm mượt như sau:
1000 mili giây (1 giây) / 10 = khoảng thời gian 100 mili giây, hoặc cứ 100 mili giây lại có khoảng 1 yêu cầu được phép . 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 1 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 bắt giữ tăng đột biến sẽ 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ể chọn thêm 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 API không trả về lỗi ngay lập tức khi vượt quá giới hạn bắt giữ tăng đột biến. Thay vào đó, các yêu cầu sẽ được lưu vào vùng đệm (tối đa số lượng được chỉ định) và các yêu cầu được lưu vào vùng đệm sẽ được xử lý ngay khi có cửa sổ thực thi phù hợp tiếp theo. bufferSize mặc định là 0.
Nếu bạn đang chạy nhiều quy trình Edge Micro
Số lượng yêu cầu được cho phép phụ thuộc vào số lượng quy trình trình chạy Edge Micro đang chạy. Tình trạng bắt giữ đột biến tính toán số lượng yêu cầu được phép trên mỗi quy trình của nhân viên. Theo mặc định, số lượng quy trình Edge Micro bằng với số lượng CPU trên máy đã cài đặt Edge Micro. Tuy nhiên, bạn có thể định cấu hình số lượng tiến trình thực thi 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 tính năng bắt giữ tăng đột biến kích hoạt ở 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 bằng tuỳ chọn --processes 4
, thì hãy đặt allow: 25
trong cấu hình phát hiện tăng đột biến. Tóm lại, quy tắc chung là đặt tham số cấu hình allow
thành giá trị "số lượng yêu cầu bắt giữ tăng đột biến / số lượng 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 tới API trong khoảng thời gian một giờ, ngày, tuần hoặc tháng. Khi một ứng dụng đạt đến hạn mức, các lệnh gọi API tiếp theo sẽ bị từ chối. Hãy xem thêm bài viết Đâu là sự khác biệt giữa khả năng bắt giữ tăng đột biến và hạn mức?.
Thêm trình bổ trợ hạn mức
Xem Thêm và định cấu hình trình bổ trợ.
Cấu hình sản phẩm trong Apigee Edge
Bạn có thể thiết lập 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. Bạn cần biết sản phẩm nào chứa proxy nhận biết cổng vào nhỏ mà bạn muốn giới hạn bằng một hạn mức. Bạn phải thêm sản phẩm này 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 khoá trong ứng dụng của nhà phát triển, 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 của bạn.
- Trong giao diện người dùng Edge, hãy mở sản phẩm được liên kết với proxy nhận biết cổng vào vi mô mà bạn muốn áp dụng hạn mức.
- Trong giao diện người dùng, chọn Sản phẩm từ 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 hạn mức. Ví dụ: cứ 1 phút có 100 yêu cầu. Hoặc 50.000 yêu cầu mỗi 2 giờ.
- Nhấp vào Lưu.
- Hãy đảm bảo sản phẩm đã được thêm vào một ứng dụng của nhà phát triển. Bạn sẽ cần có các khoá của ứng dụng này để thực hiện các 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
Các tuỳ 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ư minh hoạ 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 useRedis: true redisHost: localhost redisPort: 6379 redisDb: 1 ...
Lựa chọn | Nội dung mô tả |
---|---|
buffersize |
(Số nguyên) Dung lượng vùng đệm cần đặt cho khoảng thời gian chỉ định. Đơn vị thời gian được phép bao gồm: hour , minute , day , week , month và default . (Đã thêm: Phiên bản 3.0.9) |
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 yêu cầu "áp dụng hạn mức" tới Edge không cập nhật được bộ đếm hạn mức từ xa, thì hạn mức sẽ chỉ được xử lý dựa trên số lượng cục bộ cho đến khi đồng bộ hoá hạn mức từ xa thành công tiếp theo. Trong cả hai trường hợp này, một cờ quota-failed-open sẽ được đặt trong đối tượng yêu cầu. (Đã thêm: Phiên bản 3.0.9)
Để bật tính năng "không mở được hạn mức", hãy đặt cấu hình sau: edgemicro: ... quotas: failOpen: true... |
useDebugMpId |
Đặt cờ này thành true để bật tính năng ghi nhật ký mã MP (trình xử lý tin nhắn) trong phản hồi hạn mức. (Đã thêm: Phiên bản 3.0.9)
Để sử dụng tính năng này, bạn phải cập nhật proxy 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 |
(Boolean) Đặt thành true để sử dụng mô-đun cơ sở dữ liệu hạn mức Redis. Khi được đặt, hạn mức chỉ giới hạn ở các thực thể Edge Microgateway kết nối với Redis. Nếu không, bộ đếm hạn mức sẽ là bộ đếm trên toàn cầu. Mặc định: false
(Sử dụng mô-đun redis-volos-apigee ) (Đã thêm: Phiên bản 3.0.10) |
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 (Đã thêm: Phiên bản 3.0.10) |
redisPort |
Cổng của thực thể Redis. Mặc định: 6379 (Thêm: Phiên bản 3.0.10) |
redisDb |
DB Redis sẽ sử dụng. Mặc định: 0 (Đã thêm: Phiên bản 3.0.10) |
Tìm hiểu phạm vi hạn mức
Số lượng hạn mức nằm trong phạm vi một sản phẩm API. Nếu ứng dụng của nhà phát triển có nhiều sản phẩm, hạn mức sẽ được giới hạn cho từng sản phẩm riêng lẻ. Để đạt được phạm vi này, Edge Microgateway sẽ tạo một giá trị nhận dạng hạn mức kết hợp với "appName + productName".
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ề ứng dụng kèm theo thông báo sau:
{"error": "exceeded quota"}
Sự khác biệt giữa mức tăng đột biến và hạn mức là gì?
Điều quan trọng là bạn cần chọn đúng công cụ cho công việc đang thực hiện. Chính sách về hạn mức định cấu hình số lượng thông báo yêu cầu mà một ứng dụng khách được phép gửi tới API trong khoảng thời gian 1 giờ, ngày, tuần hoặc tháng. Chính sách về hạn mức thực thi các giới hạn tiêu thụ trên các ứng dụng khách bằng cách duy trì bộ đếm được phân phối để kiểm tra các yêu cầu được gửi đến.
Sử dụng chính sách hạn mức để thực thi các hợp đồng kinh doanh hoặc thoả thuận mức độ cung cấp dịch vụ (SLA) với các nhà phát triển và đối tác, thay vì quản lý lưu lượng truy cập trong hoạt động. Ví dụ: Bạn có thể dùng một hạn mức để giới hạn lưu lượng truy cập cho một dịch vụ miễn phí, đồng thời vẫn cho phép những khách hàng trả phí có toàn quyền truy cập.
Sử dụng tính năng chặn đột biến để ngăn chặn việc lưu lượng truy cập API tăng đột biến. Thông thường, các cuộc tấn công tăng đột biến được dùng để ngăn chặn các cuộc tấn công DDoS hoặc những cuộc tấn công độc hại khác có thể xảy ra.