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


26

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

У мене працює Heartbeat + пейсмейкер, але я не в захваті від цього. Ось деякі мої проблеми:

  • Серцебиття - сама по собі, обмежена двома вузлами. Я хотів би мати 3+.
  • Пейсмейкер - неможливо налаштувати автоматично. Кластер повинен працювати з кворумом, і тоді він все ще потребує конфігурації вручну.
  • CoroSync - не підтримує одноадресну передачу.

Футбольний пейсмейкер працює дуже добре, хоча його потужність ускладнює налаштування. Справжня проблема Pacemaker полягає в тому, що не існує простого способу автоматизації конфігурації. Я дуже хочу запустити екземпляр EC2, встановити Chef / Puppet і запустити весь кластер без мого втручання.

Відповіді:


17

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


Unicast - це обов'язково, але я погляну на патч.
organicveggie

4
+1 Я звик використовувати серцебиття у всіх ситуаціях, коли "перебувають у аварійному режимі", поки я не прочитав (десь) публікацію автора haproxy про те, чому я робив це неправильно (або, принаймні, неефективно), і замість цього потрібно використовувати keepalived . Все залежить від того, чи важливим є провал мережевого шляху (наприклад, переміщення IP-адреси на інший сервер - збережений файл) або потрібно забезпечити лише один доступ до ресурсу (наприклад, з'єднання SAN - серцебиття).
Чашки

5
Це пошта, на яку посилається @Coops, я вірю formilux.org/archives/haproxy/1003/3259.html
Генрік

4
З моменту випуску 1.2.8 (2013-08-05) Keepalived підтримує Unicast ( keepalived.org/changelog.html ).
Дином

Вступна стаття: opentodo.wordpress.com/2012/04/29/…
Вадим

14

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

Зразок файлу udpu встановлюється в / etc / corosync.

Додайте один блок-член до розділу інтерфейсу для кожного вузла та вкажіть транспорт як оновлений. (Я використовував той самий порт, що і серцебиття в наведеному нижче прикладі, але ви можете змінити його за бажанням).

наприклад:

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


Я налаштував кластер з 3-х машин за допомогою udpu, і це працювало чудово. Ви просто продовжуєте додавати до них блоки членів.
devicenull

11

Вибачте, але частина про пейсмейкера не відповідає дійсності. Тести регресії та випуску Pacemaker широко використовують автоматизацію.

Щоб налаштувати без активного кластера, префікс усіх команд з CIB_file=/var/lib/heartbeat/crm/cib.xmlабо встановити їх у вашому оточенні. Будьте впевнені, що ви видалите .sig файл перед запуском кластеру.

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


Вибачте, моя думка грунтувалася на відгуках, які я отримав зі списку розсилки Pacemaker. Я дам вам пропозицію.
organicveggie

3

У світі з відкритим кодом є RedHat Cluster Suite . Минуло кілька років з моменту впровадження RHCS, тому я не маю сьогодні багато про що сказати.

Комерційно існує Veritas Cluster Server . Немає досвіду з цим.

Набагато простішим та відкритим кодом інструменту HA є UCARP . UCARP не забезпечує майже таку саму "інфраструктуру", яку робить Heartbeat / Pacemaker / CoroSync, але навколо неї можна будувати рішення HA.

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


Спасибі. Я погляну на RHcS, VCS та UCARP. Я оновив своє запитання, щоб відобразити той факт, що я використовую Amazon EC2, тому доступність на рівні хоста - це не те, над чим я дуже контролюю ... отже, чому я дивлюся на доступність на рівні програми.
organicveggie


1

Якщо ви вже використовуєте EC2, чому б не використовувати Еластичне балансування навантаження ? Це дозволить вам досягти доступності на рівні програми без необхідності самостійно налаштовувати відмову.


Є кілька причин, що ELB не підходить. По-перше, ELB працює лише для запитів, що надходять із загальнодоступного Інтернету - його не можна використовувати для внутрішніх запитів, якщо тільки ви не направите свої запити на загальнодоступну адресу ELB і потім оплатите весь трафік. По-друге, ELB - це дуже простий балансир - ви не можете застосовувати будь-які правила чи зразки до того, як він працює, і ви не можете мати резервні сервери. Наприклад, ви не хочете, щоб два окремих екземпляри HAProxy активно вказували на один і той же веб-сервер, оскільки вони не матимуть уявлення про фактичне завантаження цільового веб-сервера.
organicveggie

1

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



0

opensvc ( https://www.opensvc.com ) підтримує декілька драйверів серцебиття:

  • однодумний
  • багатоадресна передача
  • спільний диск
  • 3-е реле сайту

а також мають механізми кворуму у разі розщеплення мозку.

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.