Назад | Перейти на главную страницу

Запретить мастеру вернуться к мастеру после неудачи

Я использую keepalived для настройки виртуального IP-адреса, указывающего на главный сервер. Когда происходит аварийное переключение, он должен указывать виртуальный IP-адрес на резервную копию, и IP-адрес должен оставаться там, пока я вручную не включу (исправлю) мастер.

Причина, по которой это важно, заключается в том, что я запускаю репликацию mysql на серверах, и записи должны выполняться только на главном сервере. При переключении на отказ я повышаю подчиненное устройство до уровня главного.

Главный сервер:

  global_defs {
    ! this is who emails will go to on alerts
     notification_email {
           xx@gmail.com
     ! add a few more email addresses here if you would like
   }
   notification_email_from root@xx.se 

   ! 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
}

Сервер резервного копирования:

 global_defs {
   ! this is who emails will go to on alerts
   notification_email {
       xx@gmail.com
   ! add a few more email addresses here if you would like
  }
  notification_email_from root@xx.se 

  ! 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
}

У меня была такая же проблема, как и у вас. Решил, установив nopreempt на обоих поддерживающих серверах, а также (что очень важно в соответствии с http://article.gmane.org/gmane.linux.keepalived.devel/1537) установка обоих серверов в состояние РЕЗЕРВНОЕ КОПИРОВАНИЕ (с разными приоритетами).

Прекрасно работает! :-)

Возможно, это не самое элегантное решение, но не могли бы вы перестать поддерживать активность в notify_backup и notify_fault скрипты на мастере? Таким образом, вам придется перезапустить его, чтобы снова получить контроль.

Что-то такое:

notify_backup "/etc/init.d/keepalived stop"
notify_fault "/etc/init.d/keepalived stop"