Продвинутые механизмы стабильности и отказоустойчивости Apache APISIX
January 20, 2024
При выборе API-шлюзов стабильность и отказоустойчивость являются ключевыми факторами наряду с функциональностью, масштабируемостью и безопасностью. При проектировании Apache APISIX в 2019 году стабильность и отказоустойчивость были признаны важными, учитывая возможность серьезных инцидентов в производственной среде при обработке как внутренних, так и внешних запросов трафика.
Чтобы предоставить исследователям полное понимание, давайте углубимся в ключевые функции стабильности и отказоустойчивости Apache APISIX.
Разделение плоскости управления и плоскости данных
Apache APISIX использует разделенную архитектуру с плоскостью управления (например, etcd, Admin API) и безгосударственной плоскостью данных (например, API-шлюз может масштабироваться по требованию). Между ними нет зависимости. Это означает, что даже если плоскость управления столкнется с аномалиями (такими как сбои сети или аварийные завершения), плоскость данных может продолжать нормально работать, обрабатывая новые запросы трафика. Это разделение обеспечивает высокую доступность APISIX.

Механизм синхронизации данных
Между плоскостью данных и плоскостью управления существует эффективный механизм синхронизации данных. Плоскость данных действует как etcd Watcher, активно уведомляемый etcd об изменениях данных. Она обновляет свою конфигурацию и правила соответственно. Поэтому, когда администратор записывает конфигурацию в etcd через Admin API, плоскость данных быстро получает уведомления об изменениях и сохраняет конфигурацию в памяти. Этот механизм позволяет избежать необходимости извлекать конфигурацию из etcd для каждого входящего запроса, снижая нагрузку на систему. Однако важно отметить, что при аномалиях плоскости управления следует избегать перезапуска экземпляров плоскости данных, чтобы предотвратить потерю конфигураций в памяти.
Аномалии плоскости управления
Прерывание сетевой связи
В случае прерывания сетевой связи между API-шлюзом и etcd конфигурации, записанные в etcd через Admin API, не достигнут шлюза. Однако шлюз продолжает использовать ранее сохраненную конфигурацию в памяти для обработки новых запросов трафика, предотвращая аварийные завершения из-за потери соединения с etcd. Как только соединение между шлюзом и etcd восстанавливается, шлюз получает последнюю конфигурацию и возобновляет нормальную работу.
Аварийный сбой etcd
Если etcd столкнется с аварийным сбоем, администраторы не смогут записывать конфигурации через Admin API. Однако это не влияет на работу шлюза, который продолжает функционировать и обрабатывать запросы трафика. В этом случае поведение шлюза аналогично ситуации после прерывания сети.
Многоузловое развертывание и балансировка нагрузки
Для обеспечения высокой доступности рекомендуется развертывать несколько экземпляров шлюза и настраивать балансировщик нагрузки (например, AWS Load Balancer или F5) между ними. Эти балансировщики нагрузки имеют механизмы проверки состояния для оценки состояния экземпляров шлюза. Если экземпляр шлюза выходит из строя, балансировщик нагрузки оперативно удаляет его из обслуживания и может добавлять новые узлы шлюза. Эта стратегия многоузлового развертывания и балансировки нагрузки помогает предотвратить перебои в работе бизнеса из-за сбоя одного узла.
Заключение
В заключение, Apache APISIX демонстрирует выдающуюся стабильность и отказоустойчивость при отключении плоскости управления и плоскости данных. Его разделенная архитектура, эффективный механизм синхронизации данных и стратегия многоузлового развертывания обеспечивают высокую доступность даже в исключительных обстоятельствах. Дизайн Apache APISIX учитывает различные аномалии сети и компонентов, что делает его исключительно эффективным при обработке запросов трафика на уровне предприятия.