Il mio primo problema è che non so come posso promuovere manualmente lo slave a master?
Puoi dire a una delle macchine di retrocedere da MASTER a SLAVE facendo:
killall -USR2 ucarp
sul MASTER.
Uso keepalived e non so molto di ucarp ma ho sempre disabilitato le interfacce principali. Ciò costringe lo schiavo a subentrare. Se voglio rendere lo slave il master, lo riconfiguro e riavvio il servizio. Quindi riconfiguro il vecchio master come slave, riavvio il servizio e abilito le interfacce.
Il seguente testo citato potrebbe aiutare a spiegare cosa fa il parametro advskew.
"advskew:questo parametro facoltativo specifica quanto inclinare l'advbase quando si inviano annunci CARP. Manipolando advskew, è possibile scegliere l'host CARP principale. Più alto è il numero, meno preferito sarà l'host quando si sceglie un master. L'impostazione predefinita è 0. I valori accettabili sono compresi tra 0 e 254." - http://www.openbsd.org/faq/pf/carp.html
"... per calcolare il tempo fino a quando un nodo CARP pensa di essere il master, calcola 3 * (advbase + (advskew / 255))" - http://kerneltrap.org/node/5607
Quindi, se hai tre host, un master e due slave e gli slave sono configurati in questo modo:
slave1 - 3 * 1 + (10/255) =3,117 secondi
slave2 - 3 * 1 + (20/255) =3,235 secondi
Quindi slave1 diventerà sempre master prima di slave2 poiché pubblicizza più spesso. Se per qualche motivo slave1 è inattivo, slave2 diventerà master.