Выбор архитектуры для масштабирования
Когда нагрузка на АТС растет, перед инженером встает выбор: как развивать систему, чтобы она не «легла» в час пик. Asterisk работает как B2BUA (Back-to-Back User Agent). Это значит, что он пропускает через себя и сигнальный трафик (SIP), и голос (RTP). Такая архитектура дает гибкость в управлении звонками, но быстро съедает ресурсы процессора.
Разберем два способа справиться с ростом трафика.
Вертикальное масштабирование: «Наращивание мышц»
Вертикальное масштабирование — это покупка более мощного железа: добавление ядер CPU, оперативной памяти или установка быстрых NVMe-дисков.
Это самый простой путь для администратора FreePBX: вам не нужно менять логику диалплана или сетевую топологию. Но у Asterisk есть «стеклянный потолок». Из-за особенностей обработки SIP-пакетов и внутренних блокировок (locks) в коде приложения, производительность не растет бесконечно.
После порога в 500–800 одновременных вызовов (особенно с записью) простое добавление ядер перестает помогать. Появляются задержки, которые пользователи слышат как «кваканье» или прерывание звука.
| Параметр | Описание |
|---|---|
| Плюсы | Минимум настроек, привычный интерфейс FreePBX. |
| Минусы | Есть предел мощности, сервер остается единой точкой отказа. |
| Когда применять | Если в компании до 300–400 одновременных звонков. |
Горизонтальное масштабирование: «Разделяй и властвуй»
Если ресурсов одного сервера мало или бизнес требует стопроцентной отказоустойчивости, применяют горизонтальное масштабирование. Вы не усиливаете один сервер, а добавляете в систему новые узлы.
Нагрузка распределяется между несколькими инстансами Asterisk. Чтобы это работало, нужно вынести общие данные на отдельные серверы:
- Базы данных: Внешний кластер PostgreSQL или MariaDB для конфигов и CDR.
- Хранилище: Сетевые файловые системы (NFS) или S3-корзины для записей разговоров.
- Состояние: Redis для синхронизации статусов абонентов (BLF) между серверами.
Роль SIP-прокси в высоконагруженных системах
При добавлении новых серверов возникает вопрос: на какой IP-адрес настраивать телефоны сотрудников? Чтобы не менять настройки на тысячах аппаратов, используют SIP-прокси (например, Kamailio или OpenSIPS).
SIP-прокси — это «умный диспетчер» на входе. В отличие от Asterisk, он может работать в режиме Stateless (не запоминая состояние вызова). Это позволяет ему обрабатывать десятки тысяч регистраций, потребляя копейки ресурсов.
Как показано на Схеме 1, SIP-прокси отделяет слой регистрации от логики обработки вызова.
Зачем нужен SIP-прокси 🛰️
- Балансировка: Прокси видит загрузку серверов Asterisk и отправляет вызов на свободный узел.
- Скрытие топологии: Абоненты видят только один IP (прокси). Вы можете добавлять или удалять серверы Asterisk «за ним» незаметно для пользователей.
- Защита: Прокси эффективнее отсекает DDoS-атаки и попытки подбора паролей.
- Разгрузка (Offloading): Прокси сам отвечает на служебные запросы
OPTIONSилиREGISTER, не отвлекая Asterisk от передачи голоса.
Рекомендации по выбору архитектуры
- Одиночный сервер (Монолит): До 150 сотрудников. Хватит стандартной установки FreePBX Distro.
- Отказоустойчивая пара (HA-кластер): Если связь критична, но нагрузка умеренная. Два сервера работают через виртуальный IP (Keepalived/Pacemaker).
- Распределенная ферма с SIP-прокси: От 1000 абонентов или при работе с географически удаленными офисами.
Важно: При горизонтальном масштабировании диалплан на всех узлах должен быть идентичным. Используйте инструменты автоматизации (Ansible/Puppet), чтобы изменения в
extensions_custom.confмгновенно разлетались по всей ферме. 🛠️
Мы разобрали, как проектировать системы, готовые к любым нагрузкам. Теперь, когда у вас есть понимание архитектуры «взрослых» решений, пора подвести итоги.
В следующем уроке мы структурируем все полученные навыки — от базовой настройки в GUI до проектирования высоконагруженных платформ.
Понравился урок?
Сохраните прогресс и получите персональный курс по любой теме — без форм и паролей
Продолжить в Telegram