Пожалуйста, войдите здесь. Часто задаваемые вопросы О нас
Задайте Ваш вопрос

Катастрофоустойчивость

0

Добрый день. Есть такая задача. Существует сервер Астериск, установленный в офисе и n-ное количество внешних sip клиентов, то есть подключающихся через интернет. Сам астериск имеет несколько выходов наружу, но это не важно. Необходимо создать еще 1 сервер астериск, но уже вне офиса, что бы в случае отказа офисного клиенты смогли подключаться на резервный (в каждом клиенте прописаны 2 адреса sip сервера - primary и secondary). Синхронизация баз, настройка правил и организация канала наружу - вопросы второго плана и я представляю себе их решение. Вопрос в другом. Если основной сервер отказывает, клиенты цепляются ко второму, но как их заставить переехать обратно автоматически, когда основной восстанавливается? То есть надо как-то мониторить sip на первом со второго и в случае падения первого поднимать второй, а потом при поднятии первого второй тушить....

удалить закрыть спам изменить тег редактировать

спросил 2013-09-09 18:08:18 +0400

tim77 Gravatar tim77
9 1 1

Comments

единственное до чего додумался - это держать оба поднятыми и соединить их по iax и правила перезвона настроить соответственно

tim77 ( 2013-09-09 18:21:59 +0400 )редактировать

Мне чисто для себя, а что за клиенты используете?

godlike ( 2013-09-09 18:23:30 +0400 )редактировать

да разные железяки - telco 211, draytek 2110, dlink-и еще какие то

tim77 ( 2013-09-09 18:59:38 +0400 )редактировать

DNS не катит - НУ будет 2 IP и что? DNS ресолвит адреса рандомно. То есть в 50% случаев он выдаст не рабочий IP

tim77 ( 2013-09-09 19:05:37 +0400 )редактировать

Виртуальный IP тоже не катит. Сервера стоят в совершенно разных сегментах интернета

tim77 ( 2013-09-09 19:06:17 +0400 )редактировать

не профи но первое что приходит на ум - Heartbeat (Linux-HA) через OpenVPN плюс динамический DNS (например связка Bind+Mysql) с минимальным TTL далее меняем IPшник для A record или SRV когда надо. пиров регим по домену. Это при учете что DNS сервера не лягут. HA умеет мониторить в т.ч. SIP и запускать скрипт на slave когда master лежит автоматом и наоборот. при этом придется накидать скрипт который править записи DNS и поднимает Астер на слейве. Еще на телефонах желательно ставить минимальную регистрацию (пиры реплицируются в базах - у меня это RealTime PgSQL + Slony). возможная проблема - рассинхронизация баз - базу бэкапного SIP сервера надо делать рид полюбому или поднимать master-master что тот еще гимморой.. синхронизировать мастер-мастер можно теоретические отдельные таблицы - например логи, если база умеет а остальные ридонли. у меня был самый актуальный вопрос синхронизации лицевого счета, который к сожалению нельзя сделать рид онли ( это если конечно пользуется онлайн биллинг).

octopas ( 2013-09-09 20:20:08 +0400 )редактировать

Объясняю, почему ничего из того, что вы предлагаете не подходит. НА не подходит, т.к. разные сегменты. Вынести все на внешний VPS тоже не вариант, т.к. сервак юзают еще и офиные клиенты и они должны иметь возможность внутренней связи без интернета. Динамическая DNS запись через easydns, dyndns и прочие сервисы тоже не канает ибо она рассчитана на отказ всего сервака, а бывает что сервак работает, а виснет asterisk например. А городить OpenVPN и сверху него HA это совсем уж навороты. Гораздо проще в моем случае поднять второй рабочий сервак и надо его линковать с первым и правилами уже разруливать если доступен, то туда, если не доступен, то сюда итд. С синхронизацией баз вопрос не стоит, т.к. критична только таблица с SIP аккаунтами, а она довольно статична и меняется редко

tim77 ( 2013-09-10 10:47:37 +0400 )редактировать

я говорил про ситуацию когда пользуем именно свои DNS сервера и в их конфигурации (RealTime) можно править скриптом в случае отказа Астера, что в сочетании с TTL=0 дает то что вам нужно... или в офисе нельзя службу DNS поднять? думаю bind настроить несложно на работу с базой...

octopas ( 2013-09-11 01:18:34 +0400 )редактировать

Проблема в том, как мониторить сам астериск что он не упал?

tim77 ( 2013-09-11 10:51:07 +0400 )редактировать

sipsak в скриптах

octopas ( 2013-09-11 16:27:11 +0400 )редактировать

VPS: да просто всё решается - в офисе 2 линка на инет от разных провов и надежный роутер. Не мазохируйте)

Zavr2008 ( 2013-09-11 16:51:33 +0400 )редактировать

5 Ответов

0

Я бы сделал виртуальный IP на первом и скрипт на втором поднимающий тот-же IP если первый сервер не доступен.

ссылка удалить спам редактировать

ответил 2013-09-09 18:39:52 +0400

amonra Gravatar amonra flag of Ukraine
2261 24 13 63
http://lantec.ua/
0

использовать DNS при регистрации а в srv записи прописать 2 IP.

ссылка удалить спам редактировать

ответил 2013-09-09 18:54:34 +0400

komrad123 Gravatar komrad123
3780 5 3 42
0

Почему просто не взять VPS или дедик и не переехать основой в какой-либо датацентр? Ну а в своем офисе одним линком с ним и связать.

ссылка удалить спам редактировать

ответил 2013-09-09 19:45:43 +0400

Zavr2008 Gravatar Zavr2008 flag of Russian Federation
2685 11 9 37
http://mh.otx.ru/

обновил 2013-09-09 19:46:28 +0400

0

читайте http://www.linux-ha.org/wiki/Main_Page

все ваши вопросы там давно уже решили.

если в разных сегментах, то переносите днс запись или используйте http://support.easydns.com/Failoverfaq.php

ссылка удалить спам редактировать

ответил 2013-09-09 23:05:33 +0400

meral Gravatar meral flag of Ukraine
21228 24 19 169
http://pro-sip.net/

обновил 2013-09-09 23:06:58 +0400

0

Если правильно понял вашу задачу и не ошибаюсь в том что скажу, то вам вроде достаточно на secondary-сервере короткого периода регистрации клиентов (defaultexpiry), по истечении которого те снова будут вынуждены (где-то) регаться.

Если ошибаюсь, и при этом клтенты будут регаться снова на secondary, сам он, проверяя периодически доступность primary-сервера, может делать редирект на основной (когда тот будет восстановлен) средствами самого SIP-протокола, без использования сторонних сервисов.

Проверять доступность основного secondary-серв может так-же по SIP - проверяя именно доступность VoIP, без прочих сервисов...

ссылка удалить спам редактировать

ответил 2013-09-14 21:29:05 +0400

viktorkho Gravatar viktorkho flag of Kazakhstan
434 4 3 9

Comments

  • доступность VoIP - как-то громко сказано.. Если канал хороший, можно при каждом звонке, поступившем на слейва, попытаться дозвониться до примарика.. Или делать это преодически, хешируя результат (0 или 1, можно просто во временный файл. Можно просто пустой lock-файл. Можно даже соответствующей командой (man lockfile))
viktorkho ( 2013-09-14 21:34:32 +0400 )редактировать

Ну и мониторить/запускать/тушить - это же один-два скрипта в десяток строк.. Но это уже для ресурса не профиль..

viktorkho ( 2013-09-14 21:40:19 +0400 )редактировать

Ваш ответ

Please start posting your answer anonymously - your answer will be saved within the current session and published after you log in or create a new account. Please try to give a substantial answer, for discussions, please use comments and please do remember to vote (after you log in)!
[скрыть предварительный просмотр]

Закладки и информация

Добавить закладку

подписаться на rss ленту новостей

Статистика

Задан: 2013-09-09 18:08:18 +0400

Просмотрен: 314 раз

Обновлен: Sep 14 '13

Похожие вопросы:

Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией GNU GPL.