Запретить мастеру возвращаться к мастеру после сбоя
Я использую 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
}
2 ответа
У меня была такая же проблема, как и у вас. Решил это, установив nopreempt на обоих серверах keepalived, а также (что очень важно согласно http://article.gmane.org/gmane.linux.keepalived.devel/1537), установив оба сервера в состояние BACKUP (с разными приоритетами),
Работает отлично!:-)
Возможно, это не самое элегантное решение, но не могли бы вы перестать поддерживать жизнь в notify_backup
а также notify_fault
скрипты на мастера? Таким образом, вам придется перезапустить его, чтобы снова получить контроль.
Что-то вроде того:
notify_backup "/etc/init.d/keepalived stop"
notify_fault "/etc/init.d/keepalived stop"