Soluzione 1:
Preferisco usare keepalived per l'alta disponibilità. Trovo più semplice da configurare (un demone e una configurazione) rispetto a heartbeat e compagnia. L'unico inconveniente in cui mi imbatto è che keepalived non ha un'opzione unicast per impostazione predefinita e utilizza solo VRRP per la comunicazione (l'autore di HAProxy ha comunque scritto una patch unicast per keepalived)
Soluzione 2:
In realtà sto lavorando a qualcosa di molto simile a quello che hai descritto (un cluster di failover su EC2) e, dopo aver provato Heartbeat, ho optato per Corosync come livello di messaggistica. Corosync funzionerà su più server e supporta Unicast (UDPU) a partire dalla versione 1.3.0 (da novembre 2010). Ho configurato e testato Corosync sul cloud EC2 di Amazon (utilizzando l'AMI Linux di Amazon) e posso confermare che funziona senza problemi.
Un file udpu di esempio è installato in /etc/corosync.
Aggiungi un blocco membro alla sezione di interfaccia per ciascun nodo e specifica il trasporto come updu. (Ho usato la stessa porta di heartbeat nell'esempio qui sotto, ma puoi cambiarla come desideri).
ad esempio:
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 dovrebbe supportare 3+ cluster di nodi nelle versioni 1.2.3+, anche se non l'ho mai provato personalmente e non so se funzionerebbe con Unicast).
Soluzione 3:
Siamo spiacenti, ma la parte relativa a Pacemaker non è vera. I test di regressione e rilascio di Pacemaker fanno ampio uso dell'automazione.
Per eseguire la configurazione senza un cluster attivo, anteporre a tutti i comandi CIB_file=/var/lib/heartbeat/crm/cib.xml
o impostalo nel tuo ambiente. Assicurati solo di rimuovere il file .sig prima di avviare il cluster.
Per i cluster senza quorum, la maggior parte se non tutti gli strumenti dovrebbero supportare -f
o --force
che istruirà il cluster ad accettare comunque la modifica. Se trovi uno strumento che non funziona, segnala un bug.
Soluzione 4:
Nel mondo open source, c'è RedHat Cluster Suite. Sono passati diversi anni da quando ho implementato RHCS, quindi oggi non ho molte cose rilevanti da dire al riguardo.
Commercialmente esiste Veritas Cluster Server. Nessuna esperienza con esso.
Uno strumento HA molto più semplice e open source è UCARP. UCARP non fornisce quasi lo stesso tipo di "infrastruttura" di Heartbeat/Pacemaker/CoroSync, ma puoi creare soluzioni HA attorno ad essa.
Puoi anche creare un'infrastruttura a disponibilità elevata con le tecnologie di virtualizzazione, ma queste soluzioni tendono a concentrarsi sulla disponibilità a livello di host anziché sulla disponibilità a livello di applicazione.