Můj první problém je, že nevím, jak mohu ručně povýšit otroka na master?
Jednomu ze strojů můžete přikázat, aby se snížil z MASTER na SLAVE, a to takto:
killall -USR2 ucarp
na MASTER.
Používám keepalived a o ucarp toho moc nevím, ale vždy jsem prostě zakázal hlavní rozhraní. To nutí otroka převzít vládu. Pokud chci ze slave udělat master, překonfiguruji jej a restartuji službu. Poté znovu nakonfiguruji starou hlavní jednotku na slave, restartuji službu a povolím rozhraní.
Následující citovaný text může pomoci vysvětlit, co dělá parametr advskew.
"advskew:Tento volitelný parametr určuje, jak moc se má zkreslit advbase při odesílání reklam CARP. Manipulací s advskew lze vybrat hlavního hostitele CARP. Čím vyšší číslo, tím méně preferovaný bude hostitel při výběru hlavního hostitele. Výchozí hodnota je 0. Přijatelné hodnoty jsou od 0 do 254." - http://www.openbsd.org/faq/pf/carp.html
"... pro zjištění doby, než si uzel CARP myslí, že je to hlavní, vypočítejte 3 * (advbase + (advskew / 255))" - http://kerneltrap.org/node/5607
Takže pokud máte tři hostitele, jednoho master a dva slave a slave jsou nakonfigurováni takto:
slave1 – 3 * 1 + (10 / 255) =3,117 sekund
slave2 – 3 * 1 + (20 / 255) =3,235 sekund
Potom se slave1 vždy stane pánem před slave2, protože inzeruje častěji. Pokud je z nějakého důvodu slave1 mimo provoz, slave2 se stane pánem.