Sử dụng plugin

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 Gửi dữ liệu phân tích từ Edge Microgateway cho Apigee Edge.
oauth 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ợ:

  1. Dừng Edge Microgateway.
  2. 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.
  3. 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
  1. Đị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
    
  1. Lưu tệp.
  2. 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 đó.

  1. Đăng nhập vào tài khoản tổ chức Apigee của bạn.
  2. 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.
    1. Trong giao diện người dùng, chọn Sản phẩm từ trình đơn Xuất bản.
    2. Mở sản phẩm có chứa API mà bạn muốn áp dụng hạn mức.
    3. Nhấp vào Chỉnh sửa.
    4. 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ờ.

  1. Nhấp vào Lưu.
  2. 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, monthdefault. (Đã 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-auth lên phiên bản 3.0.7 trở lên và đặt cấu hình sau:

edgemicro:
...
quotas:
  useDebugMpId: true
...

Khi bạn đặt useDebugMpId, các phản hồi về hạn mức từ Edge sẽ chứa mã MP và sẽ được Edge Microgateway ghi lại. Ví dụ:

{
    "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.