Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Самый простой – 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 есть нюанс: если между серверами потеряна связь, они оба становятся мастерами, и при восстановлении связи происходит перевыбор мастера, так что им может стать и старый мастер.