Назад | Перейти на главную страницу

Службы IRC с поддержкой аварийного переключения?

У меня один сервер (назовите его "сервером А") IRC "сеть", и благодаря щедрости некоторых друзей мне дали второй сервер ('сервер B') что я могу запустить IRCd, чтобы обеспечить избыточность в случае сбоя сервера A. Это нормально, я могу настроить циклический DNS со связанными серверами. У меня проблема в том, что делать с услугами? Кто-нибудь знает, как заставить сервисы «переключиться» в случае отказа сервера? Например, Сервер A запускает службы, но внезапно дает сбой. Сервер B обнаруживает это и запускает свою собственную копию служб (в идеале с той же конфигурацией и данными, что и службы на сервере B).

Одно из решений, которое приходит в голову, - написать бота, который запускается на каждом сервере, который сидит в канале и периодически проверяет, находится ли в канале бот с другого сервера. Если да, то все хорошо. Если нет, то тогда отработка отказа. Я бы предпочел не кодировать это сам, хотя

В настоящее время мы используем службы Unreal IRCd и Anope в Linux.

Самое близкое к аварийному переключению, которое вы можете получить без программирования пользовательских сервисов (нетривиальная задача). - установить службы на несколько других учетных записей, из которых вы уже запускаете IRCd в своей сети, и настроить сценарий rsync для распространения базы данных служб на другие машины. Таким образом, если службы коробки включены, вы можете запускать службы с другой машины и по-прежнему иметь относительно современные базы данных.

Crontab нетрудно изучить, как и rsync, и он намного быстрее, чем создание собственного решения.

Лучше всего то, что этот метод работает со всеми существующими пакетами служб, использующими плоскую базу данных.

Короткий ответ: вы не могу с Anope (или любая другая система услуг, о которой я знаю)

Длинный ответ: ваша идея хороша, и вам, возможно, не придется кодировать с нуля - вы, вероятно, можете взять существующий код шаблона для простых IRC-ботов (например, на Python); им также необязательно нужно будет регулярно опрашивать других ботов, а просто обрабатывать сообщения о присоединении / части / выходе. Вам, конечно, придется каким-то образом иметь дело с различными состояниями гонки (например, netsplits, проблемы с доступом к базе данных и т. Д.)

Основываясь на заявлении @IRCGuru. Можно также настроить отключение DNS для каждого сервера, к которому будет осуществляться доступ viva region.irc.yourirc.net. Оба метода хорошо работают в среде, которую вы описываете, и при выполнении каких-либо задач в среде виртуальной машины.

Используя версию vm, вы можете просто развернуть второй экземпляр своего сервера и перенаправить входящий порт с одного на другой или даже сбалансировать нагрузку между ними, при этом оба они соединяются друг с другом внутри, чтобы предотвратить расщепления в ваших каналах.