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

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

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

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

Кардиостимулятор работает очень хорошо, хотя его мощность затрудняет настройку. Настоящая проблема с Pacemaker заключается в том, что нет простого способа автоматизировать настройку. Я действительно хочу запустить экземпляр EC2, установить Chef / Puppet и запустить весь кластер без моего вмешательства.

Я предпочитаю использовать оставайся живым для высокой доступности. Мне проще настроить (один демон и конфигурацию), чем сердцебиение и компанию. Единственный недостаток, с которым я столкнулся, заключается в том, что keepalived по умолчанию не имеет опции одноадресной рассылки и использует только VRRP для связи (автор HAProxy написал одноадресный патч однако для поддержки активности)

На самом деле я работаю над чем-то очень похожим на то, что вы описали (отказоустойчивый кластер на EC2), и, попробовав Heartbeat, остановился на Corosync в качестве уровня обмена сообщениями. Corosync будет работать на нескольких серверах и поддерживает Unicast (UDPU) начиная с версии 1.3.0 (с ноября 2010 г.). Я настроил и протестировал Corosync в облаке Amazon EC2 (с использованием AMI Amazon Linux) и могу подтвердить, что он работает без проблем.

Образец файла udpu устанавливается в / etc / corosync.

Добавьте один блок-член в раздел интерфейса для каждого узла и укажите транспорт как 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).

Извините, но часть Pacemaker не соответствует действительности. Регрессионные и релиз-тесты Pacemaker широко используют автоматизацию.

Для настройки без активного кластера поставьте перед всеми командами префикс CIB_file=/var/lib/heartbeat/crm/cib.xml или установите его в своей среде. Просто убедитесь, что вы удалили файл .sig перед запуском кластера.

Для кластеров без кворума большинство, если не все инструменты должны поддерживать -f или --force который в любом случае проинструктирует кластер принять изменение. Если вы найдете инструмент, которого нет - сообщите об ошибке.

В мире с открытым исходным кодом есть RedHat Cluster Suite. С тех пор, как я внедрил RHCS, прошло несколько лет, поэтому сегодня мне нечего сказать по этому поводу.

В коммерческом отношении существует Кластерный сервер Veritas. Нет опыта с этим.

Гораздо более простой инструмент высокой доступности с открытым исходным кодом - UCARP. UCARP не предоставляет почти такую ​​же «инфраструктуру», как Heartbeat / Pacemaker / CoroSync, но вы можете создавать на ее основе решения высокой доступности.

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

Есть Oracle Clusterware для Oracle Unbreakable Linux, хотя я им не пользовался.

Если вы уже используете EC2, почему бы не использовать Эластичная балансировка нагрузки ? Это позволит вам достичь доступности на уровне приложения без необходимости самостоятельно настраивать аварийное переключение.

Veritas Cluster великолепен (по сравнению с Linux-Heartbeat, AIX-hacmp, HP-Serviceguard и Sun cluster), но стоит больших денег. В последний раз, когда я смотрел на него, его цена была основана на ядрах процессора кластера. Текущий поставщик - Symantec ...

opensvc (https://www.opensvc.com) поддерживают несколько драйверов сердцебиения:

  • одноадресная передача
  • многоадресная передача
  • общий диск
  • Реле третьего места

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

Мне удалось автоматически настроить кластер с 4 узлами, состоящий из 2 экземпляров облака Google + 2 экземпляров Amazon с terraform + ansible.

Я написал диспетчер отказоустойчивого кластера в оболочке posix: https://github.com/nackstein/back-to-work

взгляните на это, я ищу тех, кто хочет попробовать и помочь в разработке.