Mi primer problema es que no sé cómo puedo promocionar manualmente el esclavo a maestro.
Puede decirle a una de las máquinas que descienda de MAESTRO a ESCLAVO haciendo lo siguiente:
killall -USR2 ucarp
en el MAESTRO.
Uso keepalived y no sé mucho sobre ucarp, pero siempre deshabilité las interfaces maestras. Eso obliga al esclavo a hacerse cargo. Si quiero que el esclavo sea el maestro, lo reconfiguro y reinicio el servicio. Luego reconfiguro el antiguo maestro para que sea esclavo, reinicio el servicio y habilito las interfaces.
El siguiente texto citado podría ayudar a explicar qué hace el parámetro advskew.
"advskew:este parámetro opcional especifica cuánto sesgar la base de anuncios cuando se envían anuncios CARP. Al manipular advskew, se puede elegir el host maestro CARP. Cuanto mayor sea el número, menos preferido será el host al elegir un maestro. El valor predeterminado es 0. Los valores aceptables son de 0 a 254". - http://www.openbsd.org/faq/pf/carp.html
"... para calcular el tiempo hasta que un nodo CARP cree que es el maestro, calcule 3 * (advbase + (advskew / 255))" - http://kerneltrap.org/node/5607
Entonces, si tiene tres hosts, un maestro y dos esclavos y los esclavos están configurados así:
esclavo1 - 3 * 1 + (10 / 255) =3,117 segundos
esclavo2 - 3 * 1 + (20 / 255) =3,235 segundos
Entonces, Slave1 siempre se convertirá en maestro antes que Slave2, ya que se anuncia con más frecuencia. Si por alguna razón, el esclavo 1 está inactivo, el esclavo 2 se convertirá en el maestro.