Replikowanie komponentu beanstalkd w celu zapewnienia wysokiej dostępności


15

Tytuł mówi wszystko.

Czy ktoś zna sposób na replikację beanstalkd w taki sposób, że gdyby upadł serwer beanstalk, inni niewolnicy mogliby przejąć kontrolę?

Oto jedno podejście, o którym myślałem: Mógłbym zmusić Beanstalk do zapisania swojego binlogu (z -b) we współdzielonej lokalizacji, a następnie w jakiś sposób uruchomić pomocniczy / zapasowy serwer beanstalkd, jeśli podstawowy się nie powiedzie.

Musi być jednak lepszy sposób.

Odpowiedzi:


5

Ponieważ zapisuje się na dysk przez binlog, myślę, że możesz zrobić coś podobnego do tego, co zwykle robią administratorzy MySQL: bicie serca z DRBD ( przykład tutaj).

Ostatnim razem, gdy próbowałem użyć pulsu, nie obsługiwał on sprawdzania non-multicast między węzłami, co oznacza, że ​​było mniej lub bardziej niemożliwe do uruchomienia w infrastrukturze chmury / VPS (AWS, Linode, Slicehost itp.). W rzeczywistości większość usług klastrowych korzysta z multiemisji. Być może już tak nie jest, ale należy o tym pamiętać. Być może będziesz mógł użyć keepalived do zapewnienia pracy awaryjnej opartej na IP, która obsługuje także tylko multiemisję, ALE ma łatkę dostępną za pośrednictwem Willy Tarreau (autor HAProxy ), aby dodać obsługę emisji pojedynczej . Osobiście przetestowałem to na parze serwerów VPS Linode i keepalived jest w stanie przełączyć się na udostępniony adres IP w przypadku awarii serwera głównego.

Jedną z rzeczy, które możesz zrobić, która jest prawdopodobnie mniej optymalna, jest zapisywanie zadań na wielu serwerach beanstalkd (inaczej partycjonowanie). Jeśli jeden z nich ulegnie awarii, poproś aplikację o wykrycie tego i napisz do innych instancji. Twoi pracownicy będą musieli inteligentnie sondować każdą instancję łodygi fasoli i będą mogli ignorować martwe instancje. Ponieważ binlogowanie, przywracanie instancji powinno być tak proste, jak ponowne uruchomienie, aplikacja / pracownicy wykryją to i będą kontynuować jak zwykle (i zaczną przetwarzać zadania w nowo uruchomionej instancji). Oczywiście upraszczam ten proces, ale jest to jeszcze jeden sposób, aby sobie z tym poradzić.


1
Corosync obsługuje emisję pojedynczą i jest domyślnym narzędziem do grupowania w dystrybucjach opartych na Redhat.
Terence Johnson

Dzięki, nie wiedziałem o Corosync. Będzie o tym pamiętać przy przyszłych projektach.
andrew
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.