플러그인 사용

<ph type="x-smartling-placeholder"></ph> 현재 Apigee Edge 문서를 보고 있습니다.
Apigee X 문서.
정보

Edge Microgateway v. 3.3.x

잠재고객

이 주제는 마이크로 게이트웨이와 함께 설치됩니다 또한 클라우드 서비스의 급증 저지 및 할당량 플러그인에 대해서도 세부정보 (둘 다 설치에 포함되어 있음)를 확인하세요. 새로운 유형의 광고를 개발하려는 자세한 내용은 개발 커스텀 플러그인입니다.

Edge Microgateway 플러그인이란 무엇인가요?

플러그인은 Edge Microgateway에 기능을 추가하는 Node.js 모듈입니다. 플러그인 모듈 일관된 패턴을 따르고 Edge Microgateway에 알려진 위치에 저장되므로 마이크로서비스로 애플리케이션을 탐색하고 자동으로 로드할 수 있습니다 Edge Microgateway는 여러 기존 맞춤 플러그인 개발에 설명된 대로 맞춤 플러그인을 만들 수도 있습니다.

Edge와 함께 번들로 제공되는 기존 플러그인 마이크로 게이트웨이

설치 시 다양한 플러그인이 Edge Microgateway와 함께 제공됩니다. 다음 표에는 가장 일반적으로 사용되는 몇 가지 플러그인이 설명되어 있습니다.

플러그인 기본적으로 사용 설정됨 설명
분석 Edge Microgateway에서 Apigee Edge로 분석 데이터를 전송합니다.
oauth OAuth 토큰 및 API 키 검증이 Edge Microgateway에 추가됩니다. 자세한 내용은 설정 Edge Microgateway 설정 및 구성에 대해 자세히 알아보세요.
할당량 아니요 Edge Microgateway 요청에 할당량을 적용합니다. Apigee Edge를 사용하여 저장 및 관리 지정할 수 있습니다 할당량 플러그인 사용을 참조하세요.
스파이크어레스트 아니요 트래픽 급증 및 DoS 공격으로부터 보호합니다. Sake arrest 플러그인 사용을 참고하세요.
헤더 대문자 아니요 개발자가 맞춤 플러그인을 작성하는 데 도움이 되도록 가이드로 작성된 샘플 프록시입니다. 를 참조하세요. Edge Microgateway 샘플 플러그인
accumulate-request 아니요 다음 핸들러에 전달합니다. Compute Engine에서 작동해야 하는 변환 플러그인을 작성하는 데 단일 누적 요청 콘텐츠 객체입니다.
accumulate-response 아니요 응답 데이터를 단일 객체로 축적한 후 데이터를 다음 핸들러에 전달합니다. Compute Engine에서 작동해야 하는 변환 플러그인을 작성하는 데 응답 콘텐츠 객체를 생성합니다.
변환 대문자 아니요 요청 또는 응답 데이터를 변환합니다. 이 플러그인은 Google Play에서 구현되어 있습니다. 예시 플러그인은 사소한 변환을 수행함 (요청 또는 응답 데이터를 대문자로 변환) 그러나 머신러닝 모델에 따라 쉽게 XML에서 JSON으로 변환하는 등 다른 종류의 변환을 수행할 수 있습니다.
json2xml 아니요 수락 또는 콘텐츠 유형 헤더를 기반으로 요청 또는 응답 데이터를 변환합니다. 대상 자세한 내용은 플러그인 참조 문서를 참조하세요.
할당량 메모리 아니요 Edge Microgateway 요청에 할당량을 적용합니다. 로컬 컴퓨터에 할당량을 저장 및 관리 사용할 수 있습니다
상태 점검 아니요 메모리 사용량, CPU 사용량, 플러그인을 사용하려면 Edge에서 URL /healthcheck를 호출합니다. Microgateway 인스턴스 이 플러그인은 Google Play에서 제공하는 자체 상태 점검 플러그인을 구현할 수 있습니다.

기존 플러그인을 찾을 수 있는 위치

Edge Microgateway와 번들로 제공되는 기존 플러그인은 여기([prefix])에 있습니다. 은 npm 프리픽스 디렉터리입니다. 를 참조하세요. 이 디렉터리를 찾을 수 없는 경우 Edge Microgateway가 설치된 위치를 확인하세요.

[prefix]/lib/node_modules/edgemicro/node_modules/microgateway-plugins

플러그인 추가 및 구성

플러그인을 추가하고 구성하려면 다음 패턴을 따르세요.

  1. Edge Microgateway를 중지합니다.
  2. Edge Microgateway 구성 파일을 엽니다. 자세한 내용은 을(를) 참조하세요. 옵션의 구성 변경
  3. 다음과 같이 구성 파일의 plugins:sequence 요소에 플러그인을 추가합니다. 플러그인은 이 목록에 표시된 순서대로 실행됩니다.
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. 플러그인을 구성합니다. 일부 플러그인에는 구성 파일을 참조하세요. 예를 들어 다음 스탠자를 추가하여 급상승 저지를 구성할 수 있습니다. 사용할 수 있습니다. Sake arrest 플러그인 사용을 참고하세요. 를 참조하세요.
    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. 파일을 저장합니다.
  2. 수정한 구성 파일에 따라 Edge Microgateway를 다시 시작하거나 새로고침합니다.

플러그인별 구성

다음 명령어로 구성 파일에 지정된 플러그인 매개변수를 재정의할 수 있습니다. 이 디렉터리에 있는 플러그인별 구성을 확인할 수 있습니다.

[prefix]/lib/node_modules/edgemicro/node_modules/microgateway-plugins/config

여기서 [prefix]npm 프리픽스 디렉터리입니다. 를 참조하세요. 이 디렉터리를 찾을 수 없는 경우 Edge Microgateway가 설치된 위치를 확인하세요.

plugins/<plugin_name>/config/default.yaml 예를 들어, plugins/spikearrest/config/default.yaml에서 차단하며, 이러한 포드는 config 설정을 구성합니다.

spikearrest:
   timeUnit: hour   
   allow: 10000   
   buffersize: 0

Sake arrest 플러그인 사용

급증 저지 플러그인은 트래픽 급증을 방지합니다. 요청 수를 제한합니다. Edge Microgateway 인스턴스에서 처리됩니다.

스파이크 저지 플러그인 추가

플러그인 추가 및 구성을 참조하세요.

샘플 구성 스파이크 체포

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

구성 옵션 스파이크 체포

  • timeUnit: 급증 저지 실행 기간이 재설정되는 빈도입니다. 유효한 값 은 초 또는 분입니다.
  • allow: timeUnit 동안 허용할 최대 요청 수입니다. 자세한 내용은 여러 Edge Micro를 절차에 따라 다릅니다.
  • bufferSize: (선택사항, 기본값 = 0) bufferSize가 > 이상인 경우 0, 급증 저지 는 이 요청 수를 버퍼에 저장합니다. 다음 실행 '기간' 즉시 발생하면 버퍼링된 요청이 먼저 처리됩니다. 버퍼입니다.

스파이크 방지는 어떻게 작동하나요?

급증 저지 기능은 일반적으로 트래픽 급증으로부터 보호하는 방법이라고 생각하면 됩니다. 트래픽을 특정 요청 수로 제한하는 방법입니다 API와 백엔드는 특정 트래픽 급증 저지 정책을 통해 있습니다.

런타임 급증 저지 동작은 리터럴에서 볼 수 있는 것과는 다릅니다. 초당 또는 초당 값을 선택할 수도 있습니다.

예를 들어 다음과 같이 분당 요청 30개의 속도를 지정한다고 가정해 보겠습니다.

spikearrest:
   timeUnit: minute
   allow: 30

테스트에서는 1초에 30개의 요청을 보낼 수 있다고 생각할 수 있는데, 1분 이내에 처리됩니다. 그러나 정책을 통해 설정을 시행하는 방법은 아닙니다. 생각해 보면, 30 일부 환경에서는 1초 내에 발생하는 요청이 작은 급증으로 간주될 수 있습니다.

그렇다면 실제로는 무슨 일이 일어날까요? 급증과 같은 동작을 방지하기 위해 급증 저지 기능은 허용된 다음과 같이 설정을 더 짧은 간격으로 나누어 보세요.

분당 요금

분당 요금은 허용된 시간(초) 간격으로 조정됩니다. 예를 들어 30 분당 요청 수는 다음과 같이 평탄해집니다.

60초 (1분) / 30 = 2초 간격 또는 2초마다 약 1개의 요청이 허용됩니다. 가 2초 이내에 두 번째 요청이 실패합니다 1분 내에 31번째 요청도 실패합니다.

초당 속도

초당 속도는 밀리초 간격으로 허용되는 요청으로 평활화됩니다. 예를 들어 초당 요청 10회는 다음과 같이 평탄화됩니다.

1, 000밀리초 (1초) / 10 = 100밀리초 간격 또는 약 1개의 요청 허용 100밀리초마다 측정됩니다 . 100밀리초 이내의 두 번째 요청은 실패합니다. 또한 1초는 실패합니다

한도 초과 시

요청 수가 지정된 시간 간격 내에 한도를 초과하면 급증 저지 는 HTTP 503 상태와 함께 다음 오류 메시지를 반환합니다.

{"error": "spike arrest policy violated"}

버퍼 추가

정책에 버퍼를 추가할 수 있습니다. 버퍼를 10으로 설정했다고 가정해 보겠습니다. 급증 저지를 초과하면 API에서 즉시 오류를 반환하지 않습니다. 있습니다. 대신 요청이 버퍼링되고 (지정된 수까지) 버퍼링된 요청은 즉시 처리됩니다. 기본값 bufferSize가 0인지 확인합니다.

여러 Edge Micro를 실행 중인 경우 프로세스

허용되는 요청 수는 사용 중인 Edge 마이크로 작업자 프로세스 수에 따라 다릅니다. 있습니다 급증 저지 기능은 작업자 프로세스당 허용 가능한 요청 수를 계산합니다. 기본적으로 Edge Micro 프로세스의 수는 Edge Micro가 설치해야 합니다. 하지만 Edge Micro를 시작할 때 작업자 프로세스 수를 구성할 수 있습니다. start 명령어에서 --processes 옵션을 사용합니다. 예를 들어 특정 기간 동안 100개의 요청에서 급증 저지를 트리거하려는 경우 Microgateway를 옵션으로 --processes 4 설정한 다음 allow: 25 스파이크 저지 구성의 일종입니다. 요약하면 allow 구성을 설정하는 것입니다. 매개변수를 '원하는 스파이크 저지 횟수 / 프로세스 수' 값으로 변경합니다.

할당량 플러그인 사용

할당량은 앱이 API에 제출할 수 있는 요청 메시지 수를 지정합니다. 한 시간, 하루, 한 주 또는 한 달 동안 그 시간에 대해 볼 수 있습니다. 앱이 할당량 한도에 도달하면 API 호출이 거부됩니다. 데이터와 운영 체제의 급증 저지 및 할당량에 대해 자세히 알아보세요.

할당량 플러그인 추가

플러그인 추가 및 구성을 참조하세요.

Apigee의 제품 구성 에지

API 제품을 구성하는 Apigee Edge UI에서 할당량을 구성합니다. 알아야 할 사항 할당량으로 제한하려는 Microgateway 인식 프록시가 포함된 제품을 확인합니다. 이 개발자 앱에 추가해야 합니다. 다음을 사용하여 인증된 API를 호출할 때 키가 있는 경우 할당량이 해당 API 호출에 적용됩니다.

  1. Apigee Edge 조직 계정에 로그인합니다.
  2. Edge UI에서 마이크로 게이트웨이 인식 프록시와 연결된 제품을 엽니다. 할당량을 적용할 수 있습니다
    1. UI의 게시 메뉴에서 제품을 선택합니다.
    2. 할당량을 적용할 API가 포함된 제품을 엽니다.
    3. 수정을 클릭합니다.
    4. 할당량 필드에 할당량 간격을 지정합니다. 예를 들어 1분입니다 또는 2시간마다 50,000개의 요청

  1. 저장을 클릭합니다.
  2. 제품이 개발자 앱에 추가되었는지 확인합니다. 이 앱의 키가 필요합니다. API 호출을 검증하는 데 사용됩니다

할당량 구성 샘플

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 요소를 추가합니다. 다음과 같습니다.

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
    isHTTPStatusTooManyRequestEnabled: true
...
옵션 설명
bufferSize

(정수) bufferSize 구성을 사용하면 Edge Microgateway 실행 빈도를 조정할 수 있습니다. 할당량 수를 Apigee Edge와 동기화합니다. 이해하다 bufferSize를 사용하는 경우 다음 구성 예시를 살펴보세요.

quotas:
 bufferSize:
  minute: 500
  default: 10000
 useDebugMpId: true
 failOpen: true

기본적으로 Microgateway는 다음 경우에는 할당량 카운터를 Apigee Edge와 5초마다 동기화합니다. 할당량 간격은 '분'으로 설정됩니다 위의 구성은 API 제품에서 할당량 간격이 'minute', Edge Microgateway는 Edge와 동기화하여 매초마다 현재 할당량 수를 가져옵니다. 500회 요청 또는 5초 후(둘 중 이른 시점 적용) 자세한 내용은 할당량 계산 방법 이해를 참조하세요.

허용된 시간 단위에는 minute, hour, day, week, month, default

isHTTPStatusTooManyRequestEnabled

상태 대신 HTTP 429 응답 상태를 반환하도록 할당량 플러그인을 구성합니다. 할당량 위반이 있는 경우 403입니다.

기본값: false 기본적으로 또는 플래그가 false로 설정된 경우 할당량은 403 HTTP 상태를 반환합니다 할당량 초과 시

플래그가 true로 설정되면 할당량에서 HTTP 상태 429을 반환합니다. 할당량 초과 시

기본 HTTP 반환 상태를 429로 변경하려면 다음 구성을 사용합니다.

edgemicro:
...
quotas:
  isHTTPStatusTooManyRequestEnabled: true
드림 ...
failOpen 이 기능을 사용 설정하면 할당량 처리 오류가 발생하는 경우 '할당량 적용' 여부 에지에 대한 요청이 원격 할당량 카운터를 업데이트하지 못하면, 할당량은 다음번 원격 할당량에 성공할 때까지 로컬 수만을 기준으로 처리됩니다. 자동으로 수행됩니다. 두 경우 모두 quota-failed-open 플래그가 설정됩니다. 요청 객체입니다.

할당량 'fail open'을 사용 설정하는 방법 기능을 사용하려면 다음 구성을 설정합니다.

edgemicro:
...
quotas:
  failOpen: true
드림 ...
useDebugMpId MP의 로깅을 사용 설정하려면 이 플래그를 true로 설정합니다. (메시지 프로세서) ID 할당량 응답입니다

이 기능을 사용하려면 다음 구성을 설정해야 합니다.

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

useDebugMpId가 설정되면 Edge의 할당량 응답에 MP ID가 포함됩니다. Edge Microgateway에서 로깅합니다. 예를 들면 다음과 같습니다.

{
    "allowed": 20,
    "used": 3,
    "exceeded": 0,
    "available": 17,
    "expiryTime": 1570748640000,
    "timestamp": 1570748580323,
    "debugMpId": "6a12dd72-5c8a-4d39-b51d-2c64f953de6a"
}
useRedis true로 설정하면 플러그인은 할당량 지원 저장소에 Redis를 사용합니다. 자세한 내용은 할당량에 Redis 지원 저장소 사용을 참조하세요.

할당량 계산 방법 이해

기본적으로 Microgateway는 다음 경우에는 할당량 카운터를 Apigee Edge와 5초마다 동기화합니다. 할당량 간격은 '분'으로 설정됩니다 간격이 '분'(예: '주') '월'을 선택할 경우 기본 새로고침 기간은 1분입니다.

여기서 중요한 점은 Apigee Edge에 정의된 API 제품에서 볼 수 있습니다. 할당량 간격은 허용되는 요청 수를 지정합니다. 분, 시간, 일, 주 또는 월 단위로 설정할 수 있습니다. 예를 들어 제품 A의 할당량 간격은 분당 요청 100개, 제품 B의 할당량 간격은 시간당 10,000개 요청일 수 있습니다.

Edge Microgateway quota 플러그인의 YAML 구성이 할당량을 설정하지 않음 interval; 로컬 Edge Microgateway가 전송되는 빈도를 조정하는 방법을 제공합니다. 인스턴스가 할당량을 동기화함 여러 옵션을 제공합니다

예를 들어 Apigee Edge에 다음과 같이 정의된 세 개의 API 제품이 있다고 가정해 보겠습니다. 지정된 할당량 간격:

  • 제품 A의 분당 요청 할당량은 100개입니다.
  • 제품 B의 할당량은 시간당 5,000개 요청입니다.
  • 제품 C의 월별 요청 할당량은 1000,000개입니다.

이러한 할당량 설정을 고려할 때 Edge Microgateway quota 플러그인은 어떻게 해야 하나요? 구성되나요? 가장 좋은 방법은 다음과 같은 동기화 간격으로 Edge Microgateway를 구성하는 것입니다. API 제품에 정의된 할당량 간격보다 짧습니다. 예를 들면 다음과 같습니다.

quotas:
    bufferSize:
      hour: 2000
      minute: 50
      month: 1
      default: 10000

이 구성은 설명된 API 제품에 대해 다음과 같은 동기화 간격을 정의합니다. 이전:

  • 제품 A는 '분'으로 설정되어 있습니다. 간격입니다. Edge Microgateway가 다음 기간 이후 Edge에 동기화됩니다. 50번째 요청마다 또는 5초마다(둘 중 이른 시점 적용)
  • 제품 B가 '시간'으로 설정되어 있음 간격입니다. Edge Microgateway가 다음 기간 이후 Edge에 동기화됩니다. 2, 000번째 요청마다 또는 1분마다(둘 중 이른 시점 적용)
  • 제품 C는 '월'로 설정됨 간격입니다. Edge Microgateway가 다음 기간 이후 Edge에 동기화됩니다. 1분 또는 1분 중 빠른 시간에 도달하도록 요청할 수 있습니다

Microgateway 인스턴스가 Edge와 동기화될 때마다 microgateway의 가져온 할당량으로 설정됩니다.

bufferSize 설정을 사용하면 할당량 카운터가 Edge와 동기화됩니다 트래픽이 많은 상황에서는 bufferSize 설정 기본 시간 기반 동기화가 트리거되기 전에 버퍼 카운터가 동기화되도록 허용합니다.

할당량 범위 이해

할당량 수는 조직의 환경으로 범위가 지정됩니다. 이 범위를 달성하려면 Edge Microgateway는 '조직 + env + appName + productName'

할당량에 Redis 지원 저장소 사용

할당량에 Redis 지원 저장소를 사용하려면 동기화 도구 기능 다음은 Redis를 사용하는 데 필요한 기본 구성입니다. 저장용량 한도:

edgemicro:
  redisHost: localhost
  redisPort: 6379
  redisDb: 2
  redisPassword: codemaster

quotas:
  useRedis: true
드림 edgemicro.redis* 매개변수에 관한 자세한 내용은 동기화기 사용을 참고하세요.

할당량 플러그인 테스트

할당량을 초과하면 HTTP 403 상태가 메시지가 표시됩니다.

{"error": "exceeded quota"}

어떤 차이가 있나요? 어떻게 해야 할까요?

당면한 작업에 적합한 도구를 선택하는 것이 중요합니다. 할당량 정책 구성 과정 중에 클라이언트 앱이 API에 제출할 수 있는 요청 메시지 수 확인할 수 있습니다 할당량 정책은 다음과 같이 클라이언트 앱에 소비 한도를 적용합니다. 수신 요청을 기록하는 분산 카운터를 유지관리합니다.

개발자 및 파트너와 비즈니스 계약 또는 SLA를 시행하려면 할당량 정책을 사용하는 것이 아니라 운영 트래픽 관리에 사용되어야 합니다 예를 들어, 할당량을 사용하여 무료 서비스로 제공하면서 유료 고객에게는 완전한 액세스 권한을 제공할 수 있습니다.

급증 저지를 사용하여 API 트래픽의 갑작스러운 급증을 방지합니다. 일반적으로 스파이크 저감은 DDoS 또는 다른 악의적인 공격을 막는 데 사용됩니다.