Настройка Apache APISIX как API Gateway для микросервисов

Когда микросервисная архитектура разрастается, обычные прокси-серверы перестают справляться с динамической маршрутизацией, а ручные правки конфигов замедляют каждый деплой. Мы настраиваем Apache APISIX как API Gateway, чтобы вы управляли трафиком гибко и без простоев. Наша команда реализует проект под ключ — от аудита до внедрения и последующей поддержки, обеспечивая стабильную работу и масштабирование вместе с вашим бизнесом.
Часто задаваемые вопросы

Настройка Apache APISIX как API Gateway для микросервисов

Мы постоянно сталкиваемся с ситуацией, когда микросервисная архитектура разрастается, а обычный Nginx или HAProxy перестают справляться с динамической маршрутизацией. Многолетний опыт с API-шлюзами показал: Apache APISIX — лучшее решение для гибкого управления трафиком без простоев. Гарантируем, что после настройки вы забудете о ручных правках конфигов и простое при каждом деплое.

APISIX — высокопроизводительный API gateway на базе OpenResty (Nginx + LuaJIT) с etcd в качестве хранилища конфигурации. Его главное отличие от Kong и других решений — конфигурация применяется без перезагрузки, а latency на изменение роутов измеряется миллисекундами. Для динамичных микросервисных окружений, где деплои происходят десятки раз в день, это существенно. Наши инженеры сертифицированы и настроили APISIX на проектах с нагрузкой 50 000 RPS.

Почему Apache APISIX быстрее других API Gateway?

APISIX в 2 раза быстрее Kong в сценариях частого обновления маршрутов благодаря etcd и hot-reload плагинов. Плагины выполняются на LuaJIT без переключения контекста. Это даёт latency около 1 мс на запрос даже с десятком активных плагинов. Для высоконагруженных систем — критично.

Архитектура и компоненты

APISIX состоит из трёх ключевых частей: data plane (обработка трафика), control plane (Admin API + Dashboard) и etcd (хранение конфигурации). В production-окружении data plane разворачивается как минимум в двух экземплярах за load balancer, control plane изолируется от внешнего доступа. Etcd-кластер должен включать не менее трёх реплик для отказоустойчивости и быстрой консистентности.

Kubernetes-деплой через Helm:

helm repo add apisix https://charts.apiseven.com
helm repo update
helm install apisix apisix/apisix \
  --namespace ingress-apisix \
  --create-namespace \
  --set gateway.type=LoadBalancer \
  --set ingress-controller.enabled=true \
  --set etcd.replicaCount=3 \
  --set apisix.replicaCount=2

После установки Admin API доступен на 9180/tcp — только внутри кластера. Никогда не выставляем его наружу.

Роутинг и upstream-конфигурация

Создание upstream и route через Admin API:

# Upstream — пул бэкендов
curl -X PUT http://apisix:9180/apisix/admin/upstreams/1 \
  -H "X-API-KEY: $ADMIN_KEY" \
  -d '{
    "type": "roundrobin",
    "nodes": {
      "orders-svc.default.svc.cluster.local:8080": 1,
      "orders-svc-v2.default.svc.cluster.local:8080": 1
    },
    "checks": {
      "active": {
        "http_path": "/health",
        "interval": 5,
        "successes": 2,
        "http_failures": 3
      }
    }
  }'

# Route — правило матчинга трафика
curl -X PUT http://apisix:9180/apisix/admin/routes/1 \
  -H "X-API-KEY: $ADMIN_KEY" \
  -d '{
    "uri": "/api/v1/orders/*",
    "host": "api.example.com",
    "upstream_id": 1,
    "plugins": {
      "rate-limiting": {
        "count": 1000,
        "time_window": 60,
        "key": "consumer_name"
      },
      "jwt-auth": {},
      "prometheus": {}
    }
  }'

Health checks встроены в upstream — APISIX автоматически исключает нездоровые ноды из балансировки. Это критично при rolling deploy: пока новый pod ещё не прошёл readiness probe, старые ноды принимают трафик.

Плагинная архитектура

Сила APISIX — в плагинах. Из коробки: аутентификация (JWT, OAuth 2.0, API key, LDAP), rate limiting с несколькими стратегиями (consumer, IP, service), трансформация запросов/ответов, circuit breaker, трассировка через OpenTelemetry и Zipkin, метрики для Prometheus.

Пример конфигурации circuit breaker для защиты от каскадных отказов:

"api-breaker": {
  "break_response_code": 503,
  "max_breaker_sec": 30,
  "unhealthy": {
    "http_statuses": [500, 502, 503],
    "failures": 5
  },
  "healthy": {
    "http_statuses": [200],
    "successes": 3
  }
}

Пять ошибок подряд — circuit открывается, запросы получают 503 без обращения к бэкенду. Три успешных ответа после таймаута — circuit закрывается. Бэкенд-сервис получает время восстановиться.

Кастомные плагины пишутся на Lua или через plugin runner на Go/Python/Java. Это отличает APISIX от решений, где расширение требует форка кода.

Как настроить канареечное развертывание с APISIX?

В Kubernetes-окружении конфигурация через CRD органичнее прямых API-вызовов:

apiVersion: apisix.apache.org/v2
kind: ApisixRoute
metadata:
  name: orders-route
spec:
  http:
    - name: orders
      match:
        hosts:
          - api.example.com
        paths:
          - /api/v1/orders/*
      backends:
        - serviceName: orders-svc
          servicePort: 8080
          weight: 90
        - serviceName: orders-svc-v2
          servicePort: 8080
          weight: 10
      plugins:
        - name: jwt-auth
          enable: true
        - name: prometheus
          enable: true

Canary 10%/90% между версиями сервиса управляется через weight — никаких ручных изменений при постепенном выкатывании новой версии.

Как APISIX масштабируется под нагрузку?

Data plane APISIX горизонтально масштабируется за счёт добавления реплик за load balancer. Для динамического масштабирования в Kubernetes используем HPA по метрикам CPU или RPS. Etcd-кластер также масштабируется — рекомендуем 3, 5 или 7 узлов в зависимости от нагрузки. При росте числа роутов (до 5000+) etcd сохраняет стабильную производительность.

Что входит в работу

Оценим ваш проект. В рамках настройки под ключ:

  • Проектирование топологии: количество data plane реплик, изоляция control plane, схема хранения конфигурации в etcd.
  • Установка в Kubernetes или bare metal.
  • Миграция существующих nginx/HAProxy правил в APISIX-конфигурацию.
  • Настройка аутентификации, rate limiting и наблюдаемости (Prometheus + Grafana dashboard).
  • Тестирование под нагрузкой с имитацией failover.
  • Документация административных процедур.
Масштаб Срок
Один кластер, до 20 сервисов 3-5 дней
Мультикластер, миграция с существующего GW 1-2 недели
Плагин Назначение Скорость (latency add)
jwt-auth Аутентификация JWT ~0.1 ms
rate-limiting Ограничение запросов ~0.2 ms
prometheus Метрики ~0.05 ms
api-breaker Circuit breaker ~0.1 ms

Стоимость рассчитывается индивидуально после аудита. Напишите нам — получите консультацию по вашему проекту. Закажите аудит вашей инфраструктуры — определим узкие места и подберём оптимальную конфигурацию. 5+ лет опыта с APISIX и 30+ внедрений гарантируют результат.

Наши компетенции:

Последние работы

  • Разработка сайта компании B2B ADVANCE
    Разработка сайта компании B2B ADVANCE
    1542
  • Разработка веб-приложения для компании FEEDME
    Разработка веб-приложения для компании FEEDME
    1393
  • Разработка веб-сайта для компании БЕЛФИНГРУПП
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    1081
  • Разработка интернет магазина для компании FURNORO
    Разработка интернет магазина для компании FURNORO
    1368
  • Разработка логотипа компании B2B Advance
    Разработка логотипа компании B2B Advance
    815
  • Разработка веб-приложения для компании Enviok
    Разработка веб-приложения для компании Enviok
    1139