Это старая версия документа!
/etc/hosts - обязательно на каждой ноде прописываем все хосты на случай если что то может случиться с DNS
Этот сервис предназначен для мониторинга и управления выделенным виртуальным адресом в кластере серверов.
Устанавливаем его:
yum install -y keepalived
Для того, что бы HAProxy смог использовать виртуальный IP адрес, мы добавляем параметр в файл /etc/sysctl.conf
net.ipv4.ip_nonlocal_bind=1
И запускам
sysctl -p
Теперь настраиваем на keepalived на нодах.
Файл: /etc/keepalived/keepalived.conf
vrrp_script chk_haproxy { # Requires keepalived-1.1.13 script "killall -0 haproxy" # cheaper than pidof interval 2 # check every 2 seconds weight 2 # add 2 points of prio if OK } vrrp_instance VI_1 { interface eth0 state MASTER virtual_router_id 51 priority 101 # 101 on master, 100 on backup virtual_ipaddress { 192.168.0.99 } track_script { chk_haproxy } }
И запускаем keepalived
service keepalived start
Проверям конфигурацию. Должно получиться что то подобное:
# ip addr sh eth0 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 1000 link/ether 00:0c:29:63:f7:5c brd ff:ff:ff:ff:ff:ff inet 192.168.0.100/24 brd 192.168.0.255 scope global eth0 inet 192.168.0.99/32 scope global eth0 inet6 fe80::20c:29ff:fe63:f75c/64 scope link valid_lft forever preferred_lft forever
Файл: /etc/keepalived/keepalived.conf
Небольшое, но очень важное отличие - мы используем здесь priority 100 вместо priority 101, что бы сделать вторую ноду запасной (slave или hot-standby)
vrrp_script chk_haproxy { # Requires keepalived-1.1.13 script "killall -0 haproxy" # cheaper than pidof interval 2 # check every 2 seconds weight 2 # add 2 points of prio if OK } vrrp_instance VI_1 { interface eth0 state MASTER virtual_router_id 51 priority 100 # 101 on master, 100 on backup virtual_ipaddress { 192.168.0.99 } track_script { chk_haproxy } }
Запускаем:
/etc/init.d/keepalived start
И смотрим, что получилось:
# ip addr sh eth0 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 1000 link/ether 00:0c:29:be:7b:3b brd ff:ff:ff:ff:ff:ff inet 192.168.0.101/24 brd 192.168.0.255 scope global eth0 inet6 fe80::20c:29ff:febe:7b3b/64 scope link valid_lft forever preferred_lft forever