FreeSource : Software/HighAvailability

Эта страница была перенесена на altlinux.org. Текст на freesource.info заморожен.

Для построения решений с High Availability (иначе – отказоустойчивых кластеров) в Сизифе / Бранче? 4.0 в настоящее время есть:



Кроме того, для упрощения конфигурации удобно использовать какую-либо систему виртуализации, например Open VZ?.

Как постоить отказоустойчивый кластер, написано здесь:



Однако heartbeat слишком крив, монстрообразен и имеет кучу лишних зависимостей (т.к. включает в себя слишком много того, что мне, например, не нужно). Поэтому я начал его перепиливать, но закончить не смог. Пишу об этом здесь, чтобы помочь тем, кому heartbeat потребуется и кто сможет довести эту работу до конца.

Первое, что я сделал – вместо нескольких бинарных пакетов собрал один, а затем с помощью ldd и тыка стал выкидывать лишнее ;) Для моей конфигурации, описанной в приведенных выше ссылках, оказалось достаточно:




+ /etc/ha.d/ocf/resource.d, перенесенный из /usr/lib/ocf (и замена пути в скриптах)

+ ldd /usr/lib/heartbeat/heartbeat ;)

Инитскрипт там тоже можно значительно упростить, убрав, как минимум, использование ha_logd.

Вот это все (не считая ресурсов) я планировал упаковать в пакет heartbeat, под каждый необходимый мне ресурс я планировал держать отдельный пакет вида linux-ha-resource-[name] или linux-ha-resource-ocf-[name]. ha_logd и ha_logger я планировал выносить в отдельный пакет и писать для первого отдельный инитскрипт. Еще один пакет – это heartbeat-crm, куда я планировал положить все, необходимое для того, чтобы описать свою конфигурацию в стиле 2.x. Еще отдельно нужно было бы упаковать heartbeat-management и haclient. Разумеется, все 
это косметика, но на большее я и не претендовал. Бороться с warnings – это в случае heartbeat вообще борьба с мельницами :( Не зря lakostis@
включил unresolved=relaxed ...

По ходу борьбы с heartbeat выяснилось, что у него есть более простые альтернативы (все Active / Standby?, хотя сам heartbeat поддерживает и Active / Active?-конфигурации):


Последний выглядит наиболее перспективным, к страничке прикреплен оригинальный архив jhad и первая попытка его опакетить. Инитскрипт там надо переписывать по аналогии c postgresql (т.к. jhad не успевает остановиться за время, выделяемое stop_daemon), вместо скриптов, которые запускают/останавливают сервисы, там просто заглушки, реальные скрипты нужно писать по аналогии с соляркиными.

По вопросам работы jhad обращаться к Sergey Pinaev <dfo at antex.ru>, хотя мне тоже желательно рассказать о результатах ;)

Важный, как мне кажется, фрагмент из переписки с Сергеем:
>>Вопрос по логике работы: как я понял (в основном из английской
>> документации), starthasrv не будет вызван до тех пор, пока не запустятся
>> хотя бы 2 узла, при этом starthasrv будет запущен на том узле, где
>> значение uname окажется меньше ;) Затем уже один из узлов может умереть
>> (тот, который RUNNING, например, тогда соседний STANDBY станет RUNNING),
>> и все время, пока узел остается единственным, на него даже дышать
>> нельзя, поскольку если он остановится, то повторно уже не стартует. Да,
>> остановка единственного узла – это очень плохо (это совершенно нештатная
>> ситуация), но невозможность запуска после остановки еще хуже. Очень
>> напоминает кластер My SQL, кстати.
>>
>> Судя по ответу:
>>
>>> Если узел один – послать SIGUSR1.
>>> Если несколько и какой-то из них RUNNING – пойти на него и перевести
>>> в STANDBY.
>>
>>
>> это уже не так? Кстати, каким образом единственный узел может оказаться
>> в STANDBY?
>
>
>вроде бы как не так =)
>будет вызван, если had запущен с ключом -m (force main mode).
>
>может оказаться в STANDBY если ты его в него переведешь принудительно SIGHUP'ом.


UPDATED: HAD уже в Сизифе и в Бранче 4.0


UPDATED2: по результатам тестирования HAD оказался не так уж хорош. Но в результате я созрел сформулировать, что же мне все-таки нужно – /TZ/RazrabotkaNuzhnyxProgramm/ClusterManager. Реализация была начата, но затем отложена как обычно из-за недостатка времени. Впрочем, есть есть и другие желающие:

http://lists.altlinux.org/pipermail/community/2007-December/401931.html
http://www.radlinux.org/connexion/roadmap

Страницы, ссылающиеся на данную: EugeneProkopiev
TZ/RazrabotkaNuzhnyxProgramm/ClusterManager