asterisk high-availability
как реализовать арбитраж?
Откуда: Уфа
Сообщений: 5856
|
asterisk high-availability
Полагаю, все кто на этом форуме присутствуют, задавались вопросом, как сделать систему еще надежнее. Самый простой способ - поднять linux ha. Кому интересно, тому сюда:
http://www.opennet.ru/docs/RUS/ha_cluster/
http://www.opennet.ru/base/sys/ha_cluster_setup.txt.html
http://xgu.ru/wiki/DRBD
http://www.trixbox.org/forums/trixbox-forums/open-discussion/looking-ha-asterisk-solution
Когда linux ha поднимается, имеем обычно 2 сервера, один из них - первичный, другой - вторичный. Оба имеют дисковый drbd раздел, который непрерывно реплицируется на вторичный узел. Когда первичный валится, вторичный становится первичным и имеет полную копию данных. На нем монтируется для записи drbd раздел, поднимаются сервисы и общий IP, drbdlinks делает символические ссылки, сопоставляя нужным элементам ФС элементы на разделяемом разделе.
Все это работает нормально, но есть недостатки. Неочевидно, но нужно 3 сервера. Иначе возможна ситуация, когда связь между серверами порвалась и оба сервера, решив что они неисправны, сами себя отключают. В итоге - ничего не работает. Нужна третья сторона, которая осуществляет арбитраж. Помимо проблемы с арбитражом имеется и другая. На моей практике из-за корявого прова сам сервер виснет (я писал на форуме), но продолжает пинговаться. Linux HA на сколько я понимаю, смотрит, есть ли пинги, а нужно определять доступны ли сервисы.
Идея:
Берем любой телефон (или шлюз, и лучше - несколько), который имеет 2 регистрации: на основном и резервном сервере. Если SIP сервис недоступен, то телефон автоматом регистрируется на резервном сервере. Скрипт на резервном (и на основном) сервере периодически смотрит, есть ли регистрация этого телефона, и если есть, узел становится первичным.
Трудности:
1) нужно отключать первичный сервер. Можно использовать шлюз или телефон, у которого загорается лампочка, если пропадает регистрация (dlink новой серии, thomson), этой лампочкой управлять реле и тд по вкусу. Мне, например, технически не сложно собрать копеешный usb девайс на AVR309 и несложную прогу на дельфи (кому интересно, можете погуглить, действительно все просто), которая будет простейшим sip клиентом, работать под виндой (я не умею под линь програмить), мониторить наличие sip коннекта и при случае, мочить отказавший сервак.
2) если мониторить появление sip регистрации на резервном сервере, то asterisk должен быть запущен, что идет в разрез с идеологией linux ha, где астериск - резервиремый сервис. К тому же drbd не позволяет получить доступ к данным с вторичного узла, только если он стал первичным. Как вариант - * всегда запущен на обоих машинах, но скрипы linux HA не запускают его при останове узла, а перезапускают тогда, когда drbdlinks подставил вместо дефолтных конфигов - общие. Но что в этом случае делать с отказавшим сервером?
Резервирование ZAP не рассматриваю, так как это отдельная тема. Интересует только SIP.
вопрос в зал:
1) Кто и как решает подобные задачи, если не секрет? Ведь 1 физический сервер на 500-1000 пользователей это несерьезно с точки зрения отказоустойчивости.
2) Что делать после восстаноления сбоя? Как назначить/прибить первичный linux ha узел из командной строки?
|
Сообщений: 21
|
Re: asterisk high-availability
как вариант - использование SRV записей, с их помощью можно описать алгоритм резервирования и распределения нагрузки, поддерживаются многими ip-телефонами. При желании можно дополнительно управлять записями с помощью внешних скриптов, проверяющих работоспособность серверов. Регистрации между серверами также можно реплицировать с помощью скриптов. Для совсем тупых клиентов, не умеющих работать с DNS, поднять vrrp. В результате получаем кластер Active/Active. Конечно полностью эмулировать функционал одной машины не удасться, но основные сервисы работать будут.
|
Откуда: Уфа
Сообщений: 5856
|
Re: asterisk high-availability
В свой монастырь со своим уставом не ходят... Большинство клиентов (вернее все клиенты) используют windows server...
Попробуем Active/Active и плавающем IP. Оттестирую во всех режимах и сообщу результатах.
И куда делись сообщения в этой ветке?
|
Сообщений: 6521
|
Re: asterisk high-availability
switch, Вы создали два одинаковых топика, процесс форкнулся :)
|
Откуда: Уфа
Сообщений: 5856
|
Re: asterisk high-availability
интересно, как так получилось... просто отвечал в тему...
|
Сообщений: 6521
|
Re: asterisk high-availability
Вы с самого начала создали два одинаковых, отвечали то в одном, то в другом.
|
Откуда: Уфа
Сообщений: 5856
|
Re: asterisk high-availability
капец.. это как? я просто заходил по ссылке
http://asterisk-support.ru/forum/topics/3257/
авториазция - по кукисам похоже...
|
Откуда: Уфа
Сообщений: 5856
|
Re: asterisk high-availability
продолжаю тему, хочу выставить идею на суд общественности:
1) первичный сервер сливает ежедневно бакап FreePBX по FTP на вторичный. Вторичный в свою очередь этот бакап также ежедневно загружает себе и применяет настройки. Преимущество подхода - никакой возни с drbd, актуальная информация всегда на первичном сервере, вторичный сервер всегда активен, нет эффекта "разделения мозга".
2) каждый сервер имеет один свой IP и один IP на двоих - разделяемый. по дефлоту, разделяемый - на первичном сервере. при зависании астериска разделяемый ИП должен перейти на вторичный. Как гарантировано обеспеспечить переход разделяемого ИП на вторичный?
3) периодически, раз в минуту, вторичный сервер звонит на первичный по SIP протоколу, первичный отражает его обратно. Вторичный принимает отраженный звонок, убеждается, что первичный жив. Если первичный не ответил, то см. п 4
4) к сервакам подключена куча оборудования, на определенных железках прописаны настройки не для разделяемого ИП, а для первичного и вторичного (в качетсвтве резервного) серверов. если скрипт на вторичном увидел регистрацию определенных пиров, то берет основной ИП на себя. В свою очередь, если первичный сервер увидел, что потерял регистрацию тех же пиров, он убирает с интрефейса разделяемый ИП. это на случай обрыва сетевого соединения и вообще. Думаю, целесообразно вообще останавливать сервисы запетла и астериска.
Добавлять/удалять ИП хочу такими командами:
ifconfig eth0 add 10.10.1.245
ifconfig eth0:0 del 10.10.1.245
что скажете?
|
Сообщений: 1573
|
Re: asterisk high-availability
Asterisk+Realtime+Dundy+Ser[LVS] = отказоустойчивый кластер с баллансировкой нагрузки.
Зачем изобретать велосипед?
|
Откуда: Уфа
Сообщений: 5856
|
Re: asterisk high-availability
потому что:
1) клиента не заставишь купить 3 сервера
2) не будет presence между узлами
3) нет готового вебинтерфейса для управления всем этим хозяйством, типа фрипбх
4) балансировка нагрузки не нужна.
есть конкретная задача: сделать отказоустойчивый кластер.
и кстати, есть инфа по Dundy на русском?
|
|