Отказоустойчивый Phone API Gateway: как не положить SIP при росте нагрузки
Phone API Gateway — это не один сервер, а контур: SIP edge, media relay, балансировщик, кластер приложений и отдельный слой хранения состояния. Если смешать регистрацию, маршрутизацию вызовов и RTP в одном узле, отказ любого компонента превращается в простой всей телефонии.
Базовая схема строится так:
• на входе — Kamailio/OpenSIPS для SIP routing и NAT traversal;
• медиа выносится в RTPengine или аналог, чтобы не держать RTP на приложении;
• Asterisk/FreeSWITCH — только там, где реально нужна логика звонка;
• state хранится вне узла: Redis, БД, очередь событий, чтобы failover не терял диалплан и сессию.
Критичные точки отказа — DNS, VIP, таблицы регистрации и асимметричная маршрутизация. Если INVITE приходит через один edge, а BYE уходит через другой без корректного Record-Route, получите «висящие» звонки и логи без очевидной ошибки. Разбираем дамп трафика в Wireshark, и вот что мы там видим: исчезает согласованность по branch, нарушается media anchoring, а NAT начинает рвать RTP.
Практика для высокой нагрузки: разделяйте control plane и media plane, включайте health-check не только по TCP, но и по SIP OPTIONS, держите несколько edge-узлов в разных отказных доменах, а sticky-sessions используйте только если они действительно нужны для диалплана. Отказоустойчивость — это не роскошь, а базовое требование к SIP-платформе.
Работа с API телефонии
@phone_api_gateway_arb
Отказоустойчивый Phone API Gateway: как не положить SIP при росте нагрузки
Этот пост опубликован в Telegram-канале Работа с API телефонии. Подписаться можно по ссылке: @phone_api_gateway_arb.