...
Самый простой – keepalived
Можно поставить скрипты из пакета ringme-setup-redundant и вписать общий внешний айпи в файл /usr/local/admin/vrrp/ext_ip.txt, без маски, например 1.2.3.4
А файл /etc/keepalived/keepalived.conf привести к виду
Code Block |
---|
global_defs {
notification_email {
admin1@domain.ru
admin2@domain.ru
}
notification_email_from keepalived@domain.ru
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id domain_node1
}
! vrrp_sync_groups make sure that several router instances
! stay together on a failure - a good example of this is
! that the external interface on one router fails and the backup server
! takes over, you want the internal interface on the failed server
! to failover as well, otherwise nothing will work.
! you can have as many vrrp_sync_group blocks as you want.
vrrp_sync_group G1 {
group {
VI_1
VI_2
}
notify /usr/local/admin/vrrp/notify.sh
}
! each interface needs at least one vrrp_instance
! each vrrp_instance is a group of VIPs that are logically grouped
! together
! you can have as many vrrp_instaces as you want
vrrp_instance VI_1 {
state BACKUP
nopreempt
interface eth1
virtual_router_id 61
priority 90
! how often should we vote, in seconds?
advert_int 1
authentication {
auth_type PASS
auth_pass somerandompass
}
virtual_ipaddress {
1.2.3.4/32
2.3.4.5/32
}
smtp_alert
notify /usr/local/admin/vrrp/notify.sh
}
vrrp_instance VI_2 {
state BACKUP
nopreempt
interface eth2
virtual_router_id 62
priority 90
! how often should we vote, in seconds?
advert_int 1
authentication {
auth_type PASS
auth_pass somerandompass
}
virtual_ipaddress {
192.168.100.100/32
}
smtp_alert
notify /usr/local/admin/vrrp/notify.sh
} |
Переменные, которые нужно изменить:
notification_email -- сюда вписываем 1 или несколько почтовых адресов, кто будет получать письма о переключении.
notification_email_from – адрес отправителя. Для корректной отправки почты системными администраторами должна быть настроена почтовая система.
router_id -- уникальный id сервера, он же будет в теме писем.
interface в обоих секциях instance -- вписываем реальные интерфейсы с внутренним и внешним IP, где VI_1 -- внешний интерфейс, VI_2 – внутренний.
nopreempt – не возвращаться в slave после возврата старого мастера. В случае, если один сервер должен быть всегда мастером, комментируем/удаляем эту опцию в обоих блоках и на мастер-сервере state меняем на MASTER и priority в 100.
auth_pass – сюда вписываем некий пароль, который должен быть одинаковым на всех серверах.
virtual_ipaddress – вписываем сюда все айпи, за которыми keepalive будет следить, в VI_1 – внешние адреса, в VI_2 – внутренние.
У keepalived есть нюанс: если между серверами потеряна связь, они оба становятся мастерами, и при восстановлении связи происходит перевыбор мастера, так что им может стать и старый мастер.