Вы просматриваете документацию Apigee Edge .
Перейдите к документации Apigee X. информация
Edge Microgateway v. 3.1.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
Добавление и настройка плагинов
Следуйте этому шаблону, чтобы добавить и настроить плагины:
- Остановите Edge Microgateway.
- Откройте файл конфигурации Edge Microgateway. Подробности см. в разделе «Внесение изменений в конфигурацию опций».
- Добавьте плагин в элемент
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
- Настройте плагин. Некоторые плагины имеют дополнительные параметры, которые вы можете настроить в файле конфигурации. Например, вы можете добавить следующий раздел, чтобы настроить плагин блокировки пиков. Дополнительную информацию см. в разделе «Использование плагина остановки всплесков» .
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
- Сохраните файл.
- Перезапустите или перезагрузите 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 будет применяться квота.
- Войдите в свою учетную запись организации Apigee Edge.
- В пользовательском интерфейсе Edge откройте продукт, связанный с прокси-сервером с поддержкой микрошлюза, к которому вы хотите применить квоту.
- В пользовательском интерфейсе выберите «Продукты» в меню «Опубликовать».
- Откройте продукт, содержащий API, к которому вы хотите применить квоту.
- Нажмите «Изменить» .
- В поле Квота укажите интервал квоты. Например, 100 запросов каждую минуту. Или 50000 запросов каждые 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 ...
Вариант | Описание |
---|---|
buffersize | (Целое число) Размер буфера, который необходимо установить для указанного интервала времени. Допустимые единицы времени: hour , minute , day , week , month и default . |
failOpen | Если эта функция включена, если произойдет ошибка обработки квоты или если запрос «Применить квоту» к Edge не сможет обновить счетчики удаленных квот, квота будет обрабатываться на основе локальных счетчиков только до тех пор, пока не произойдет следующая успешная удаленная синхронизация квот. В обоих этих случаях в объекте запроса устанавливается флаг quota-failed-open .Чтобы включить функцию «открытия при сбое» квоты, установите следующую конфигурацию: edgemicro: ... quotas: failOpen: true... |
useDebugMpId | Установите для этого флага значение true , чтобы включить регистрацию идентификатора MP (обработчика сообщений) в ответах на квоту.Чтобы использовать эту функцию, необходимо установить следующую конфигурацию: edgemicro: ... quotas: useDebugMpId: true ... Если установлено { "allowed": 20, "used": 3, "exceeded": 0, "available": 17, "expiryTime": 1570748640000, "timestamp": 1570748580323, "debugMpId": "6a12dd72-5c8a-4d39-b51d-2c64f953de6a" } |
useRedis | Если установлено значение true плагин использует Redis для резервного хранилища квот. Подробности см. в разделе Использование резервного хранилища Redis для квоты . |
Использование резервного хранилища Redis для квоты
Чтобы использовать резервное хранилище Redis для квоты, используйте ту же конфигурацию, которая используется для функции синхронизатора. Ниже приведена базовая конфигурация, необходимая для использования Redis для хранения квот:
edgemicro: redisHost: localhost redisPort: 6379 redisDb: 2 redisPassword: codemaster quotas: useRedis: trueПодробную информацию о параметрах
edgemicro.redis*
см. в разделе Использование синхронизатора .Тестирование плагина квот
При превышении квоты клиенту возвращается статус HTTP 403 вместе со следующим сообщением:
{"error": "exceeded quota"}
В чем разница между пиковым арестом и квотой?
Важно правильно выбрать инструмент для выполняемой работы. Политики квот настраивают количество сообщений с запросами, которые клиентскому приложению разрешено отправлять в API в течение часа, дня, недели или месяца. Политика квот устанавливает ограничения потребления для клиентских приложений, поддерживая распределенный счетчик, который подсчитывает входящие запросы.
Используйте политику квот для обеспечения соблюдения деловых контрактов или соглашений об уровне обслуживания с разработчиками и партнерами, а не для оперативного управления трафиком. Например, квота может использоваться для ограничения трафика для бесплатной услуги, обеспечивая при этом полный доступ платящим клиентам.
Используйте блокировку пиков для защиты от внезапных всплесков трафика API. Обычно пиковый арест используется для предотвращения возможных DDoS-атак или других вредоносных атак.