Alternatywy dla Heartbeat, Pacemaker i CoroSync?

26

Czy istnieją inne alternatywy dla automatycznego przełączania awaryjnego w systemie Linux oprócz typowych kombinacji Heartbeat / Pacemaker / CoroSync? W szczególności konfiguruję przełączanie awaryjne dla instancji EC2, które obsługują tylko emisję pojedynczą - bez emisji grupowej lub emisji. W szczególności staram się obsłużyć kilka programów, które mamy, które nie mają jeszcze automatycznego przełączania awaryjnego i nie obsługują środowisk multi-master. Obejmuje to narzędzia takie jak HAProxy i Solr.

Mam Heartbeat + Pacemaker działający, ale nie jestem tym podekscytowany. Oto niektóre z moich problemów:

  • Bicie serca - samo w sobie, ograniczone do dwóch węzłów. Chciałbym mieć 3+.
  • Stymulator serca - Niemożliwa konfiguracja automatyczna. Klaster musi działać z kworum, a następnie nadal wymaga ręcznej konfiguracji.
  • CoroSync - nie obsługuje emisji pojedynczej.

Stymulator serca działa bardzo dobrze, chociaż jego moc utrudnia konfigurację. Prawdziwy problem z Pacemaker polega na tym, że nie ma łatwego sposobu na zautomatyzowanie konfiguracji. Naprawdę chcę uruchomić instancję EC2, zainstalować Chef / Puppet i uruchomić cały klaster bez mojej interwencji.

organicveggie
źródło

Odpowiedzi:

17

Wolę używać keepalived dla wysokiej dostępności. Łatwiej jest mi skonfigurować (jeden demon i konfigurację) niż bicie serca i towarzystwo. Jedyną wadą, na jaką się natknęłam, jest to, że keepalived nie ma domyślnie opcji emisji pojedynczej i używa tylko VRRP do komunikacji (autor HAProxy napisał jednak łatkę emisji pojedynczej dla keepalived)

JimB
źródło
Unicast jest koniecznością, ale przyjrzę się łatce.
organicveggie
4
+1 Byłem przyzwyczajony do używania bicia serca we wszystkich sytuacjach „przełączania awaryjnego”, dopóki nie przeczytałem postu (gdzieś) autora haproxy, dlaczego robiłem to źle (lub przynajmniej nieefektywnie) i zamiast tego powinienem używać keepalived . Wszystko zależy od tego, czy ważną rzeczą jest awaria ścieżki sieci (np. Przeniesienie adresu IP na inny serwer - utrzymywanie aktywności), czy konieczność zapewnienia tylko jednego dostępu do zasobu (np. Połączenie SAN - bicie serca).
Coops
5
To jest poczta, do której odnosi się @Coops,
Henrik
4
Od wydania 1.2.8 (2013-08-05) Keepalived obsługuje Unicast ( keepalived.org/changelog.html ).
Dynom,
Artykuł wprowadzający: opentodo.wordpress.com/2012/04/29/...
Vadzim
14

Właściwie pracuję nad czymś bardzo podobnym do tego, co opisałeś (klaster pracy awaryjnej w EC2), a po wypróbowaniu Heartbeat zdecydowałem się na Corosync jako moją warstwę wiadomości. Corosync będzie działał na wielu serwerach i obsługuje Unicast (UDPU) od wersji 1.3.0 (od listopada 2010). Skonfigurowałem i przetestowałem Corosync na chmurze EC2 Amazon (używając Amazon AMI Linux) i mogę potwierdzić, że działa bez problemu.

Przykładowy plik udpu jest zainstalowany w / etc / corosync.

Dodaj jeden blok elementu do sekcji interfejsu dla każdego węzła i określ transport jako updu. (Użyłem tego samego portu co puls w poniższym przykładzie, ale możesz go zmienić zgodnie z potrzebami).

na przykład:

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 ma obsługiwać klastry węzłów 3+ w wersjach 1.2.3+, chociaż nigdy nie próbowałem tego osobiście i nie wiem, czy będzie działać z Unicast).

cyberx86
źródło
Skonfigurowałem klaster 3 komputerów za pomocą udpu i to działało dobrze. Po prostu dodajesz do nich bloki członków.
devicenull
11

Przepraszamy, ale część o Pacemaker nie jest prawdziwa. Testy regresji i zwolnienia stymulatora w szerokim zakresie wykorzystują automatyzację.

Aby skonfigurować bez aktywnego klastra, poprzedź wszystkie polecenia za pomocą CIB_file=/var/lib/heartbeat/crm/cib.xmllub ustaw je w swoim środowisku. Przed uruchomieniem klastra upewnij się, że usunąłeś plik .sig.

Dla klastrów bez kworum, większość, jeśli nie wszystkie narzędzia powinny wspierać -flub --forcektóry poinstruuje klaster, aby zaakceptować zmianę i tak. Jeśli znajdziesz narzędzie, którego nie ma - zgłoś błąd.

Andrew Beekhof
źródło
Przepraszam, moja opinia była oparta na opiniach, które otrzymałem z listy mailowej Pacemaker. Dam ci sugestię.
organicveggie
3

W świecie open source istnieje pakiet RedHat Cluster Suite . Minęło kilka lat, odkąd wdrożyłem RHCS, więc nie mam dziś wiele istotnych rzeczy do powiedzenia na ten temat.

Na rynku dostępny jest Veritas Cluster Server . Bez doświadczenia.

Znacznie prostszym i otwartym narzędziem HA jest UCARP . UCARP nie zapewnia prawie tego samego rodzaju „infrastruktury”, co Heartbeat / Pacemaker / CoroSync, ale można wokół niego budować rozwiązania HA.

Można również budować wysoce dostępną infrastrukturę za pomocą technologii wirtualizacji, ale rozwiązania te koncentrują się na dostępności na poziomie hosta, a nie na poziomie aplikacji.

rthomson
źródło
Dzięki. Przyjrzę się RHcS, VCS i UCARP. Zaktualizowałem moje pytanie, aby odzwierciedlić fakt, że korzystam z Amazon EC2, więc dostępność na poziomie hosta nie jest czymś, nad czym mam dużą kontrolę ... dlatego patrzę na dostępność na poziomie aplikacji.
organicveggie
1

Istnieje Oracle Clusterware dla Oracle Unbreakable Linux, chociaż go nie używałem.

Kendall
źródło
1

Jeśli już korzystasz z EC2, dlaczego nie zastosować Elastycznego równoważenia obciążenia ? Umożliwi to osiągnięcie dostępności na poziomie aplikacji bez konieczności samodzielnego konfigurowania przełączania awaryjnego.

manku
źródło
Istnieje kilka powodów, dla których ELB nie pasuje. Po pierwsze, ELB działa tylko dla żądań przychodzących z publicznego Internetu - nie można go używać do wewnętrznych żądań, chyba że skierujesz swoje żądania na publiczny adres ELB, a następnie zapłacisz za cały ruch. Po drugie, ELB jest bardzo prostym modułem równoważącym - nie możesz stosować żadnych reguł ani wzorców do jego działania i nie możesz mieć serwerów rezerwowych. Na przykład nie chcesz, aby dwa osobne wystąpienia HAProxy aktywnie wskazywały na ten sam serwer WWW, ponieważ nie będą miały pojęcia o rzeczywistym obciążeniu docelowego serwera WWW.
organicveggie
1

Klaster Veritas jest świetny (w porównaniu do Linux-Heartbeat, AIX-hacmp, HP-Serviceguard i Sun klaster), ale kosztuje dużo pieniędzy. Ostatnim razem, gdy na niego spojrzałem, jego cena była oparta na rdzeniach procesora klastra. Obecny dostawca ist Symantec ...

Nils
źródło
0

opensvc ( https://www.opensvc.com ) obsługuje wiele sterowników pulsu:

  • Unicast
  • multicast
  • wspólny dysk
  • Przekaźnik strony trzeciej

a także mają mechanizmy kworum w przypadku podzielonego mózgu.

Udało mi się automatycznie skonfigurować klaster 4 węzłów złożony z 2 instancji Google Cloud + 2 instancji Amazon z terraformem + ansible.

Chaoxiang N.
źródło