Планирование и настройка базового HA-кластера

Мы переходим от теории высокой доступности к практике. Наша задача — превратить два отдельных сервера в единый живой механизм, который мы будем называть базовый HA-кластер.

Для реализации этой схемы в российских сетях 2026 года мы используем проверенный стек: Keepalived для управления сетевым адресом и механизмы репликации для синхронизации данных.

Виртуальный IP: сердце отказоустойчивости

Виртуальный IP (Virtual IP, VIP) — это «плавающий» адрес. Именно его вы прописываете в настройках телефонов и транков. В обычном режиме адрес держит основной сервер (MASTER). Если он «падает», адрес мгновенно переходит на резервный (BACKUP).

Передачу адреса обеспечивает протокол VRRP, на котором работает демон Keepalived. Как показано на Схеме 1, для внешних устройств смена «железа» остается незаметной.

Настройка Keepalived

Keepalived постоянно проверяет «пульс» соседа. Если MASTER перестает слать VRRP-пакеты, BACKUP забирает VIP себе.

Пример конфига /etc/keepalived/keepalived.conf для MASTER. Мы добавили скрипт проверки: кластер переключится, даже если сервер включен, но сам процесс Asterisk завис или упал.

vrrp_script check_asterisk {
    script "/usr/bin/pgrep asterisk" # Проверяем, запущен ли процесс
    interval 2                       # Проверка каждые 2 секунды
    weight 2                         
}

vrrp_instance VI_1 {
    state MASTER
    interface eth0                   # Имя вашего сетевого интерфейса
    virtual_router_id 51             # Одинаковый на обоих узлах
    priority 101                     # На BACKUP поставьте 100
    advert_int 1

    authentication {
        auth_type PASS
        auth_pass secret_pass        # Пароль для защиты от чужих узлов в сети
    }

    virtual_ipaddress {
        192.168.1.100/24             # Тот самый Виртуальный IP (VIP)
    }

    track_script {
        check_asterisk
    }
}

☁️ Нюанс облаков: В 2026 году в инфраструктурах вроде Yandex Cloud стандартный VRRP часто блокируется. Там переключение VIP делают через API провайдера, но логика Keepalived (скрипты проверки) остается той же.

Репликация конфигураций и данных

Переключить IP мало. Если на втором сервере нет актуальных учетных записей, звонки не пройдут. Репликация конфигураций — это синхронизация настроек между узлами.

Данные делим на два типа:

  1. Статика: Файлы в /etc/asterisk/. Используем rsync + cron или lsyncd.
  2. Динамика: Базы данных FreePBX (MySQL/MariaDB) и AstDB.

Для базы FreePBX настройте стандартную репликацию MariaDB (Master-Slave). Тогда любое изменение в GUI на основном сервере мгновенно попадет на резервный.

Как делать нельзя

Не синхронизируйте /etc/asterisk/ целиком. Файл asterisk.conf содержит уникальные ID узла и пути. Если их скопировать «как есть», возникнет конфликт.

Как делать правильно

Синхронизируйте только логику и описание пиров: extensions*.conf, pjsip*.conf, sip*.conf. Системные настройки каждого инстанса оставьте уникальными.

Проблема Split Brain

Split Brain («разрыв мозга») — критический сбой, когда серверы теряют связь друг с другом, но оба остаются в сети. Каждый считает себя MASTER и поднимает VIP. Итог: конфликт IP-адресов и паралич связи. 🧠⚡️

Как минимизировать риск:

  • Выделенный линк: Соедините серверы прямым кабелем для VRRP-трафика.
  • Fencing (изоляция): Настройте проверку внешнего шлюза. Если сервер не видит интернет/шлюз, он не имеет права забирать VIP.

Тестирование: контролируемая авария

Кластер считается рабочим только после трех тестов:

  1. Мягкий: Остановите службу Keepalived на MASTER (systemctl stop keepalived).
  2. Жесткий: Выдерните кабель питания из MASTER.
  3. Сервисный: Убейте процесс Asterisk. Скрипт vrrp_script должен инициировать переход.

📞 Важно: В базовом кластере текущие разговоры прервутся. Состояние звонка хранится в оперативной памяти. Однако телефоны перерегистрируются на VIP за секунды, и связь восстановится.

Теперь ваша система защищена от сбоев «железа». Далее мы научим АТС общаться с внешним миром через программные интерфейсы.

В следующей теме: Обзор методов интеграции (AMI, ARI, AGI). Разберемся, как связать Asterisk с CRM и внешними приложениями.

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

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

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