Вход | Регистрация
Вы здесь: Главная / Форум / Главный форум по Asterisk / Конфигурация и настройка / asterisk high-availability

asterisk high-availability

как реализовать арбитраж?
1 23>
Avatara of switch
Откуда: Уфа
Сообщений: 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 узел из командной строки?
http://www.lynks.ru - Решения телефонии, мини-АТС, VoIP на основе Trixbox и Asterisk
2008-06-04 10:22

Сообщений: 21

Re: asterisk high-availability

как вариант - использование SRV записей, с их помощью можно описать алгоритм резервирования и распределения нагрузки, поддерживаются многими ip-телефонами. При желании можно дополнительно управлять записями с помощью внешних скриптов, проверяющих работоспособность серверов. Регистрации между серверами также можно реплицировать с помощью скриптов. Для совсем тупых клиентов, не умеющих работать с DNS, поднять vrrp. В результате получаем кластер Active/Active. Конечно полностью эмулировать функционал одной машины не удасться, но основные сервисы работать будут.
2008-06-05 10:07

Avatara of switch
Откуда: Уфа
Сообщений: 5856

Re: asterisk high-availability

В свой монастырь со своим уставом не ходят... Большинство клиентов (вернее все клиенты) используют windows server...
Попробуем Active/Active и плавающем IP. Оттестирую во всех режимах и сообщу результатах.

И куда делись сообщения в этой ветке?
http://www.lynks.ru - Решения телефонии, мини-АТС, VoIP на основе Trixbox и Asterisk
2008-06-05 21:13

Сообщений: 6521

Re: asterisk high-availability

switch, Вы создали два одинаковых топика, процесс форкнулся :)
2008-06-06 00:34

Avatara of switch
Откуда: Уфа
Сообщений: 5856

Re: asterisk high-availability

интересно, как так получилось... просто отвечал в тему...
http://www.lynks.ru - Решения телефонии, мини-АТС, VoIP на основе Trixbox и Asterisk
2008-06-06 11:32

Сообщений: 6521

Re: asterisk high-availability

Вы с самого начала создали два одинаковых, отвечали то в одном, то в другом.
2008-06-06 11:58

Avatara of switch
Откуда: Уфа
Сообщений: 5856

Re: asterisk high-availability

капец.. это как? я просто заходил по ссылке
http://asterisk-support.ru/forum/topics/3257/
авториазция - по кукисам похоже...
http://www.lynks.ru - Решения телефонии, мини-АТС, VoIP на основе Trixbox и Asterisk
2008-06-06 14:01

Avatara of switch
Откуда: Уфа
Сообщений: 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

что скажете?
http://www.lynks.ru - Решения телефонии, мини-АТС, VoIP на основе Trixbox и Asterisk
2008-08-20 11:46

Сообщений: 1573

Re: asterisk high-availability

Asterisk+Realtime+Dundy+Ser[LVS] = отказоустойчивый кластер с баллансировкой нагрузки.

Зачем изобретать велосипед?
2008-08-20 12:34

Avatara of switch
Откуда: Уфа
Сообщений: 5856

Re: asterisk high-availability

потому что:
1) клиента не заставишь купить 3 сервера
2) не будет presence между узлами
3) нет готового вебинтерфейса для управления всем этим хозяйством, типа фрипбх
4) балансировка нагрузки не нужна.

есть конкретная задача: сделать отказоустойчивый кластер.

и кстати, есть инфа по Dundy на русском?
http://www.lynks.ru - Решения телефонии, мини-АТС, VoIP на основе Trixbox и Asterisk
2008-08-20 17:01

1 23>
Добавить страницу в закладки:  Delicious Google Slashdot Yahoo Yandex.ru Reddit Digg Technorati Bobrdobr.ru Newsland.ru Smi2.ru Rumarkz.ru Vaau.ru Memori.ru Rucity.com Moemesto.ru News2.ru Mister-Wong.ru Myscoop.ru 100zakladok.ru