Linux

Альтернатива для Heartbeat, Pacemaker и CoroSync?

Существуют ли какие-либо основные альтернативы для автоматического обхода отказа в Linux, помимо типичных комбинаций Heartbeat/Pacemaker/CoroSync? В частности, я настраиваю обход отказа на экземплярах EC2, который поддерживает только одноадресную рассылку — никакой многоадресной или широковещательной рассылки. Я специально пытаюсь справиться с несколькими имеющимися у нас частями программного обеспечения, которые еще не имеют автоматического обхода отказа и не поддерживают многомастерные среды. Сюда входят такие инструменты, как HAProxy и Solr.

У меня работает Heartbeat+Pacemaker, но я не в восторге от него. Вот некоторые из моих проблем:

  1. Heartbeat — сам по себе ограничен двумя узлами. Я бы хотел иметь 3+.

  2. Pacemaker — невозможно настроить автоматически. Кластер должен быть запущен с кворумом, а затем все равно требуется ручная настройка.

  3. 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) поддерживает несколько драйверов:

  1. одноадресная рассылка;

  2. многоадресная рассылка;

  3. общий диск;

  4. ретрансляция на третий сайт;

  5. а также имеет механизмы кворума на случай разделения систем.

Мне удалось автоматически настроить 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

Как получить информацию о только что запущенном процессе

Linux

Как найти расположение MySQL my.cnf

Linux

Как лучше всего послать сигнал всем членам группы процессов

Linux

Как сгенерировать дамп ядра в Linux при ошибке сегментации