Используйте плагины

Вы просматриваете документацию Apigee Edge .
Перейдите к документации Apigee X.
информация

Edge Microgateway v. 2.5.x

Аудитория

Этот раздел предназначен для операторов Edge Microgateway, которые хотят использовать существующие плагины, установленные вместе с микрошлюзом. Здесь также подробно обсуждаются плагины блокировки пиков и квот (оба включены в установку). Если вы разработчик, желающий разрабатывать новые плагины, см. раздел «Разработка пользовательских плагинов» .

Что такое плагин Edge Microgateway?

Плагин — это модуль Node.js, который добавляет функциональность Edge Microgateway. Модули подключаемых модулей следуют единому шаблону и хранятся в месте, известном Edge Microgateway, что позволяет микрошлюзу автоматически обнаруживать и загружать их. Edge Microgateway включает в себя несколько существующих плагинов, но вы также можете создавать собственные плагины, как описано в разделе «Разработка пользовательских плагинов» .

Существующие плагины в комплекте с Edge Microgateway

Несколько существующих плагинов поставляются с Edge Microgateway при установке. К ним относятся:

Плагин Включено по умолчанию Описание
аналитика Да Отправляет аналитические данные из Edge Microgateway в Apigee Edge.
клятва Да Добавляет токен OAuth и проверку ключа API в Edge Microgateway. См. Установка и настройка Edge Microgateway .
квота Нет Обеспечивает соблюдение квоты на запросы к Edge Microgateway. Использует Apigee Edge для хранения квот и управления ими. См. Использование плагина квот .
шипостойкий фиксатор Нет Защищает от скачков трафика и DoS-атак. См. раздел «Использование плагина остановки пиков» .
верхний регистр заголовка Нет Пример прокси-сервера с комментариями, предназначенный в качестве руководства, помогающего разработчикам создавать собственные плагины. См . пример плагина Edge Microgateway .
накапливать-запрос Нет Собирает данные запроса в один объект перед передачей данных следующему обработчику в цепочке плагинов. Полезно для написания плагинов преобразования, которым необходимо работать с одним накопленным объектом содержимого запроса.
аккумулировать-ответ Нет Собирает данные ответа в один объект перед передачей данных следующему обработчику в цепочке плагинов. Полезно для написания плагинов преобразования, которым необходимо работать с одним накопленным объектом содержимого ответа.
преобразование в верхний регистр Нет Преобразует данные запроса или ответа. Этот плагин представляет собой лучшую реализацию плагина преобразования. Пример плагина выполняет тривиальное преобразование (преобразует данные запроса или ответа в верхний регистр); однако его можно легко адаптировать для выполнения других видов преобразований, например преобразования XML в JSON.
json2xm л Нет Преобразует данные запроса или ответа на основе заголовков принятия или типа содержимого. Подробности смотрите в документации плагина на GitHub .
квотная память Нет Обеспечивает соблюдение квоты на запросы к Edge Microgateway. Хранит и управляет квотами в локальной памяти.
проверка здоровья Нет Возвращает информацию о процессе Edge Microgateway — использование памяти, использование процессора и т. д. Чтобы использовать плагин, вызовите URL-адрес /healthcheck на своем экземпляре Edge Microgateway. Этот плагин задуман как пример, который вы можете использовать для реализации собственного плагина проверки работоспособности.

Где найти существующие плагины

Существующие плагины, входящие в состав 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. Настройте плагин. Некоторые плагины имеют дополнительные параметры, которые вы можете настроить в файле конфигурации. Например, вы можете добавить следующий раздел, чтобы настроить плагин блокировки пиков. Дополнительную информацию см. в разделе «Использование плагина остановки всплесков» .
    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 , и они будут переопределять любые другие параметры конфигурации.

spikearrest:
   timeUnit: hour   
   allow: 10000   
   buffersize: 0

Использование плагина остановки спайков

Плагин блокировки всплесков защищает от всплесков трафика. Он ограничивает количество запросов, обрабатываемых экземпляром 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 : Как часто сбрасывается окно выполнения блокировки пиков. Допустимые значения: секунды или минуты.
  • разрешить : максимальное количество запросов, разрешенных в течение timeUnit. См. также раздел «Если вы используете несколько процессов Edge Micro» .
  • ufferSize : (необязательно, по умолчанию = 0), если bufferSize > 0, при блокировке пиков это количество запросов сохраняется в буфере. Как только наступит следующее «окно» выполнения, сначала будут обработаны буферизованные запросы. См. также Добавление буфера .

Как работает спайк-арест?

Рассматривайте блокировку пиков как способ общей защиты от пиков трафика, а не как способ ограничить трафик определенным количеством запросов. Ваши API и серверная часть могут обрабатывать определенный объем трафика, а политика блокировки всплесков помогает сглаживать трафик до желаемого общего объема.

Поведение блокировки всплесков во время выполнения отличается от того, что вы могли бы ожидать от вводимых вами буквальных значений в минуту или в секунду.

Например, предположим, что вы указываете скорость 30 запросов в минуту, например:

spikearrest:
   timeUnit: minute
   allow: 30

При тестировании вы могли подумать, что можете отправить 30 запросов за 1 секунду, если они приходят в течение минуты. Но это не то, как политика обеспечивает соблюдение настроек. Если подумать, 30 запросов в течение 1 секунды в некоторых средах можно считать небольшим скачком.

Что тогда происходит на самом деле? Чтобы предотвратить пиковое поведение, функция блокировки пиков сглаживает разрешенный трафик, разделяя настройки на более мелкие интервалы следующим образом:

Поминутные тарифы

Поминутные ставки сглаживаются до разрешенных интервалов времени в секундах. Например, 30 запросов в минуту сглаживаются следующим образом:

60 секунд (1 минута) / 30 = 2-секундные интервалы или примерно 1 запрос разрешен каждые 2 секунды. Второй запрос в течение 2 секунд завершится неудачно. Кроме того, 31-й запрос в течение минуты завершится неудачно.

Посекундные ставки

Посекундные ставки сглаживаются до запросов, разрешенных с интервалом в миллисекунды. Например, 10 запросов в секунду сглаживаются следующим образом:

1000 миллисекунд (1 секунда) / 10 = интервалы по 100 миллисекунд или примерно 1 запрос разрешен каждые 100 миллисекунд. Второй запрос в течение 100 мс завершится неудачно. Кроме того, 11-й запрос в течение секунды завершится неудачно.

Когда лимит превышен

Если количество запросов превышает лимит в течение указанного интервала времени, остановка пиков возвращает это сообщение об ошибке со статусом HTTP 503:

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

Добавление буфера

У вас есть возможность добавить буфер в политику. Допустим, вы установили буфер на 10. Вы увидите, что API не возвращает ошибку сразу же, когда вы превышаете предел блокировки всплесков. Вместо этого запросы буферизуются (до указанного количества), а буферизованные запросы обрабатываются, как только становится доступно следующее подходящее окно выполнения. Размер буфера по умолчанию равен 0.

Если вы используете несколько процессов Edge Micro

Количество разрешенных запросов зависит от количества запущенных рабочих процессов Edge Micro. Spike арест вычисляет допустимое количество запросов на рабочий процесс. По умолчанию количество процессов Edge Micro равно количеству процессоров на компьютере, на котором установлен Edge Micro. Однако вы можете настроить количество рабочих процессов при запуске Edge Micro, используя параметр --processes в команде start . Например, если вы хотите, чтобы арест пиковых значений запускался при 100 запросах за определенный период времени, и если вы запускаете Edge Microgateway с опцией --processes 4 , установите allow: 25 в конфигурации ареста пиковых значений. Таким образом, практическое правило состоит в том, чтобы установить для параметра конфигурации allow значение «желаемое количество пиковых арестов / количество процессов».

Использование плагина квот

Квота определяет количество сообщений-запросов, которые приложению разрешено отправлять в API в течение часа, дня, недели или месяца. Когда приложение достигает предела квоты, последующие вызовы API отклоняются. См. также В чем разница между пиковым арестом и квотой ?

Добавление плагина квот

См. Добавление и настройка плагинов .

Конфигурация продукта в Apigee Edge

Вы настраиваете квоты в пользовательском интерфейсе Apigee Edge, где настраиваете продукты API. Вам необходимо знать, какой продукт содержит прокси-сервер с поддержкой микрошлюза, который вы хотите ограничить квотой. Этот продукт необходимо добавить в приложение разработчика. Когда вы выполняете вызовы API, аутентифицированные с помощью ключей в приложении разработчика, к этим вызовам API будет применяться квота.

  1. Войдите в свою учетную запись организации Apigee Edge.
  2. В пользовательском интерфейсе Edge откройте продукт, связанный с прокси-сервером с поддержкой микрошлюза, к которому вы хотите применить квоту.
    1. В пользовательском интерфейсе выберите «Продукты» в меню «Опубликовать».
    2. Откройте продукт, содержащий API, к которому вы хотите применить квоту.
    3. Нажмите «Изменить» .
    4. В поле Квота укажите интервал квоты. Например, 100 запросов каждую минуту. Или 50000 запросов каждые 2 часа.

  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

Параметры конфигурации квоты

Дополнительные параметры настройки плагина квот не предусмотрены.

Тестирование плагина квот

При превышении квоты клиенту возвращается статус HTTP 403 вместе со следующим сообщением:

{"error": "exceeded quota"}

В чем разница между пиковым арестом и квотой?

Важно правильно выбрать инструмент для выполняемой работы. Политики квот настраивают количество сообщений с запросами, которые клиентскому приложению разрешено отправлять в API в течение часа, дня, недели или месяца. Политика квот устанавливает ограничения на потребление клиентских приложений, поддерживая распределенный счетчик, который подсчитывает входящие запросы.

Используйте политику квот для обеспечения соблюдения деловых контрактов или соглашений об уровне обслуживания с разработчиками и партнерами, а не для оперативного управления трафиком. Например, квота может использоваться для ограничения трафика для бесплатной услуги, обеспечивая при этом полный доступ платящим клиентам.

Используйте блокировку пиков для защиты от внезапных всплесков трафика API. Обычно пиковый арест используется для предотвращения возможных DDoS-атак или других вредоносных атак.