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).

Схожие статьи

Как произвести DeadBeef настройку: руководство для пользователей
Linux

Как произвести DeadBeef настройку: руководство для пользователей

Linux

Почему операционные системы на базе Linux считаются более безопасными, чем Windows

Linux

Зачем нужна запись awverify CNAME для Azure?

Linux

Почему плохо иметь слабый пароль пользователя mysql в доверенной сети?