Выбор архитектуры для масштабирования

Когда нагрузка на АТС растет, перед инженером встает выбор: как развивать систему, чтобы она не «легла» в час пик. 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-прокси 🛰️

  1. Балансировка: Прокси видит загрузку серверов Asterisk и отправляет вызов на свободный узел.
  2. Скрытие топологии: Абоненты видят только один IP (прокси). Вы можете добавлять или удалять серверы Asterisk «за ним» незаметно для пользователей.
  3. Защита: Прокси эффективнее отсекает DDoS-атаки и попытки подбора паролей.
  4. Разгрузка (Offloading): Прокси сам отвечает на служебные запросы OPTIONS или REGISTER, не отвлекая Asterisk от передачи голоса.

Рекомендации по выбору архитектуры

  • Одиночный сервер (Монолит): До 150 сотрудников. Хватит стандартной установки FreePBX Distro.
  • Отказоустойчивая пара (HA-кластер): Если связь критична, но нагрузка умеренная. Два сервера работают через виртуальный IP (Keepalived/Pacemaker).
  • Распределенная ферма с SIP-прокси: От 1000 абонентов или при работе с географически удаленными офисами.

Важно: При горизонтальном масштабировании диалплан на всех узлах должен быть идентичным. Используйте инструменты автоматизации (Ansible/Puppet), чтобы изменения в extensions_custom.conf мгновенно разлетались по всей ферме. 🛠️

Мы разобрали, как проектировать системы, готовые к любым нагрузкам. Теперь, когда у вас есть понимание архитектуры «взрослых» решений, пора подвести итоги.

В следующем уроке мы структурируем все полученные навыки — от базовой настройки в GUI до проектирования высоконагруженных платформ.

Понравился урок?

Сохраните прогресс и получите персональный курс по любой теме — без форм и паролей

Продолжить в Telegram