Кластер
Кластер
0.3 NEW — Балансировка нагрузки между несколькими серверами.
Кластерный режим позволяет объединить несколько серверов Al(co)pac в каскад. Трафик и нагрузка распределяются между всеми нодами.
Архитектура
+-------------+
Клиенты ---> | Primary |
| (основной) |
+--+----+--+--+
| | |
+--------+ | +--------+
| | |
v v v
+---------+ +---------+ +---------+
| Node 1 | | Node 2 | | Node 3 |
+---------+ +---------+ +---------+- Primary — принимает все запросы от клиентов и распределяет нагрузку
- Node — выполняет запросы к балансерам и возвращает результат primary-серверу
Настройка Primary
[cluster]
enable = true
mode = "primary"
api_key = "shared_secret_key_123" # общий секрет для аутентификации между нодами
[[cluster.nodes]]
host = "http://192.168.1.10:888"
weight = 1 # относительный вес (больше = больше трафика)
[[cluster.nodes]]
host = "http://192.168.1.11:888"
weight = 2 # эта нода получает вдвое больше запросов
[[cluster.nodes]]
host = "http://192.168.1.12:888"
weight = 1Настройка Node
[cluster]
enable = true
mode = "node"
api_key = "shared_secret_key_123" # тот же секрет, что и на primaryАлгоритм распределения
Используется least-connections с учётом весов:
- Запрос направляется на ноду с наименьшим количеством активных соединений (пропорционально весу)
- Если нода недоступна — автоматический failover на другую
- Кэш потоков синхронизируется между нодами
Что распределяется
| Тип запроса | Распределение |
|---|---|
Балансеры (/lite/*) | Да — самая тяжёлая нагрузка |
| Browser-сессии (Mirage, Alloha) | Да — по одной на ноду |
| TMDB proxy | Нет — каждая нода кэширует локально |
| Статика, авторизация | Нет — обрабатывает primary |
Требования
- Все ноды должны быть доступны по сети с primary
api_keyдолжен совпадать на всех серверах- Ноды могут иметь разные токены балансеров (для обхода rate-limits)