Evitar que o mestre volte ao master após falha

3

Estou usando o keepalived para configurar um ip virtual que aponta para um servidor mestre. Quando um failover acontece, ele deve apontar o ip virtual para o backup, e o IP deve ficar lá até que eu ative (fixe) manualmente o mestre.

A razão pela qual isso é importante é que eu estou executando a replicação do mysql nos servidores e as gravações devem estar apenas no mestre. Quando eu faço failover eu promovo o escravo para dominar.

O servidor principal:

  global_defs {
    ! this is who emails will go to on alerts
     notification_email {
           [email protected]
     ! add a few more email addresses here if you would like
   }
   notification_email_from [email protected] 

   ! I use the local machine to relay mail
   smtp_server 127.0.0.1
   smtp_connect_timeout 30

   ! each load balancer should have a different ID
   ! this will be used in SMTP alerts, so you should make
   ! each router easily identifiable
    lvs_id APP1         
} 

vrrp_instance APP1 {
         interface eth0
         state EQUAL
         virtual_router_id 61
         priority 999
    nopreempt
         virtual_ipaddress {
             217.x.x.129
         }

    smtp_alert
}

Servidor de backup:

 global_defs {
   ! this is who emails will go to on alerts
   notification_email {
       [email protected]
   ! add a few more email addresses here if you would like
  }
  notification_email_from [email protected] 

  ! I use the local machine to relay mail
  smtp_server 127.0.0.1
  smtp_connect_timeout 30

  ! each load balancer should have a different ID
  ! this will be used in SMTP alerts, so you should make
  ! each router easily identifiable
   lvs_id APP2           
   } 

vrrp_instance APP2 {
    interface eth0
    state EQUAL
    virtual_router_id 61   
  priority 100            
    virtual_ipaddress {
        217.xx.xx.129
    }

notify_master "/etc/keepalived/notify.sh del app2"
notify_backup "/etc/keepalived/notify.sh add app2"
notify_fault "/etc/keepalived/notify.sh add app2”
smtp_alert
}
    
por Chrille 08.06.2012 / 12:04

2 respostas

2

Eu tive o mesmo problema que você. Resolvido, definindo nopreempt em ambos os servidores keepalived, e também (o que é muito importante de acordo com link ) definindo os dois servidores no estado BACKUP (com diferentes prioridades).

Funciona muito bem! : -)

    
por 05.06.2013 / 12:18
0

Esta pode não ser a solução mais elegante, mas você não pode parar de keepalived nos scripts notify_backup e notify_fault no mestre? Dessa forma, você teria que reiniciá-lo para ganhar o controle novamente.

Algo assim:

notify_backup "/etc/init.d/keepalived stop"
notify_fault "/etc/init.d/keepalived stop"
    
por 08.06.2012 / 13:57