Существуют ли какие-либо основные альтернативы для автоматического обхода отказа в Linux, помимо типичных комбинаций Heartbeat/Pacemaker/CoroSync? В частности, я настраиваю обход отказа на экземплярах EC2, который поддерживает только одноадресную рассылку — никакой многоадресной или широковещательной рассылки. Я специально пытаюсь справиться с несколькими имеющимися у нас частями программного обеспечения, которые еще не имеют автоматического обхода отказа и не поддерживают многомастерные среды. Сюда входят такие инструменты, как HAProxy и Solr.
У меня работает Heartbeat+Pacemaker, но я не в восторге от него. Вот некоторые из моих проблем:
Heartbeat — сам по себе ограничен двумя узлами. Я бы хотел иметь 3+.
Pacemaker — невозможно настроить автоматически. Кластер должен быть запущен с кворумом, а затем все равно требуется ручная настройка.
CoroSync — не поддерживает одноадресную рассылку.
Pacemaker работает очень хорошо, хотя его мощность затрудняет его настройку. Настоящая проблема Pacemaker заключается в том, что нет простого способа автоматизировать конфигурацию. Я действительно хочу запустить экземпляр EC2, установить Chef/Puppet и запустить весь кластер без моего вмешательства.
Ответ 1
Я как раз работаю над чем-то похожим на то, что вы описали (отказоустойчивый кластер на EC2), и после опробования Heartbeat остановился на Corosync в качестве уровня обмена сообщениями. Corosync будет работать на нескольких серверах и поддерживает одноадресную рассылку (UDPU) начиная с версии 1.3.0. Я настроил и протестировал Corosync на облаке Amazon EC2 (используя Amazon Linux AMI) и могу подтвердить, что он работает без проблем.
Пример файла udpu установлен в /etc/corosync.
Добавьте один блок member в раздел interface для каждого узла и укажите транспорт как updu (я использовал тот же порт, что и heartbeat в примере ниже, но вы можете изменить его по своему усмотрению).
Например:
totem {
version: 2
secauth: off
interface {
member {
memberaddr: 10.xxx.xxx.xxx
}
member {
memberaddr: 10.xxx.xxx.xxx
}
ringnumber: 0
bindnetaddr: 10.xxx.xxx.xxx
mcastport: 694
}
transport: udpu
}
(Heartbeat должен поддерживать кластеры из 3+ узлов в версиях 1.2.3+, хотя я никогда не пробовал это лично и не знаю, будет ли это работать с Unicast).
Ответ 2
Извините, но часть о Pacemaker не соответствует действительности. В регрессионных и релизных тестах Pacemaker широко используется автоматизация. Для конфигурирования без активного кластера префикс всех команд содержит CIB_file=/var/lib/heartbeat/crm/cib.xml, или задайте его в своем окружении. Только не забудьте удалить файл .sig перед запуском кластера. Для кластеров без кворума большинство, если не все инструменты, должны поддерживать -f или --force, что даст кластеру команду принять изменение в любом случае.
Ответ 3
В мире открытого кода есть RedHat Cluster Suite. Прошло несколько лет с тех пор, как я внедрял RHCS, поэтому сегодня мне нечего сказать о нем.
На коммерческой основе существует Veritas Cluster Server. Опыта работы с ним нет.
Гораздо более простой инструмент «HA» с открытым исходным кодом — UCARP. UCARP не предоставляет почти такой же «инфраструктуры», как Heartbeat/Pacemaker/CoroSync, но вы можете строить «HA»-решения на его основе.
Вы также можете построить высокодоступную инфраструктуру с помощью технологий виртуализации, но эти решения, как правило, сосредоточены на доступности на уровне хоста, а не на доступности на уровне приложений.
Ответ 4
opensvc (https://www.opensvc.com) поддерживает несколько драйверов:
одноадресная рассылка;
многоадресная рассылка;
общий диск;
ретрансляция на третий сайт;
а также имеет механизмы кворума на случай разделения систем.
Мне удалось автоматически настроить 4-узловой кластер из 2 облачных экземпляров google + 2 экземпляров amazon с помощью terraform + ansible.
Ответ 5
Veritas Cluster великолепен (по сравнению с Linux-Heartbeat, AIX-hacmp, HP-Serviceguard и кластером Sun), но он стоит больших денег. В последний раз, когда я смотрел на него, его цена была основана на процессорных ядрах кластера. Текущий поставщик — Symantec…
Ответ 6
Я предпочитаю использовать keepalived для обеспечения высокой доступности. Я нахожу его более простым в настройке (один демон и конфигурация), чем heartbeat и company. Единственный недостаток, с которым я столкнулся, — это то, что keepalived по умолчанию не имеет опции unicast и использует только VRRP для связи (автор HAProxy написал патч unicast для keepalived).
Linux