Replica beanstalkd per alta disponibilità


15

Il titolo dice tutto.

Qualcuno conosce un modo per replicare beanstalkd in modo tale che se un server beanstalk si arrestasse, altri schiavi potrebbero subentrare?

Ecco un approccio a cui ho pensato: potrei fare in modo che beanstalk scriva il suo binlog (con -b) in una posizione condivisa, e quindi in qualche modo un server di backup / secondario avvii beanstalkd se il primario fallisce.

Tuttavia, deve esserci un modo migliore.

Risposte:


5

Dal momento che sta scrivendo su disco tramite binlog, penso che potresti fare qualcosa di simile a quello che fanno generalmente gli amministratori MySQL: battito cardiaco con DRBD ( esempio qui).

L'ultima volta che ho provato a utilizzare il battito cardiaco, tuttavia, non supportava il controllo non multicast tra i nodi, il che significa che era più o meno impossibile eseguire su infrastruttura cloud / VPS (AWS, Linode, Slicehost, ecc.). In effetti, la maggior parte dei servizi di clustering usa il multicast. Questo potrebbe non essere più il caso, ma è qualcosa di cui essere consapevoli. Potresti essere in grado di utilizzare keepalived per fornire il failover basato su ip, che supporta anche multicast MA ha una patch disponibile tramite Willy Tarreau (autore di HAProxy ) per aggiungere supporto unicast . L'ho testato personalmente su una coppia di server VPS Linode e keepalived è in grado di eseguire il failover di un indirizzo IP condiviso in caso di errore del server principale.

Una cosa che puoi fare, che è probabilmente meno ottimale, è scrivere lavori su un numero di server beanstalkd (aka partizionamento). Se uno di questi si interrompe, fai in modo che la tua app lo rilevi e scriva invece alle altre istanze. I tuoi dipendenti dovranno eseguire il polling intelligente di ciascuna delle istanze beanstalkd ed essere in grado di ignorare le istanze morte. Poiché stai eseguendo il binlogging, il backup di un'istanza dovrebbe essere semplice come il riavvio e l'app / i lavoratori lo rileveranno e continueranno normalmente (e inizieranno a elaborare i lavori nell'istanza appena avviata). Sto ovviamente semplificando il processo, ma è un altro modo per gestirlo.


1
Corosync supporta unicast ed è lo strumento di clustering predefinito nelle distribuzioni basate su Redhat.
Terence Johnson,

Grazie, non sapevo di Corosync. Lo terrò a mente per i progetti futuri.
Andrew,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.