Keepalived используется для отказоустойчивости между двумя серверами.
Это средства для балансировки нагрузки и обеспечения доступности к основанным на Linux инфраструктурам.
Сервис работает по протоколу VRRP (Протокол резервирования виртуального маршрутизатора).
У нас имеется два сервера LA ( load balance ), использемые HAProxy, и теперь мы должны реализовать VRRP между обоими серверами.
Это учебное руководство поможет вам конфигурировать KeepAlived и чтобы сконфигурировать HAProxy на обоих серверах.
Исходные данные в студию :
1. LB1 Server: 192.168.10.111 ( eth1 )
2. LB2 Server: 192.168.10.112 ( eth1 )
3. Virtual IP: 192.168.10.121
Теперь мы проведем установку отказоустойчивости между LB1 и серверами LB2.
Схема по установке:
Шаг 1: установим пакеты
# yum install gcc kernel-headers kernel-devel
# yum install keepalived
Шаг2: сконфигурируем Keepalived на LB1. Правим файл /etc/keepalived/keepalived.conf следующим видом:
! Configuration File for keepalived
global_defs {
notification_email {
sysadmin@mydomain.com
support@mydomain.com
}
notification_email_from lb1@mydomain.com
smtp_server localhost
smtp_connect_timeout 30
}
vrrp_instance VI_1 {
state MASTER
interface eth1
virtual_router_id 51
priority 101
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.10.121
}
}
Шаг 3: сконфигурируем KeepAlived на LB2.
Отредактируем конфигурационный файл Keepalived на LB2 и добавьте следующую конфигурацию.
При внесении изменений в конфигурационном файле LB2 удостоверьтесь, что установили приоритетные значения таким образом, чтобы понизить значение priority по отношению к тому же значению LB1.
Например, ниже в конфигурации указано значение 100 , в отличии от LB1, где оно равно 101.
! Configuration File for keepalived
global_defs {
notification_email {
sysadmin@mydomain.com
support@mydomain.com
}
notification_email_from lb2@mydomain.com
smtp_server localhost
smtp_connect_timeout 30
}
vrrp_instance VI_1 {
state MASTER
interface eth1
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.10.121
}
}
Шаг 4: запускаем KeepAlived
Выполянем команду старта нашего сервиса и назначаем автоматическую загрузку это службы при запуске операционной системы.
# service keepalived start
# chkconfig keepalived on
Шаг 5: проверяем виртуальный ip адресс
Виртуальным IP по умолчанию будет IP присвоенный главному серверу.
В случае если Master падает, он будет автоматически присвоен slave серверу. Используем следующую команду, чтобы показать присвоенный виртуальный IP в интерфейсе.
# ip addr show eth1
Пример вывода:
2: eth1: <broadcast,multicast,up,lower_up> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 1000
link/ether 00:0c:29:6f:ed:60 brd ff:ff:ff:ff:ff:ff
inet 192.168.10.111/24 brd 192.168.1.255 scope global eth1
inet 192.168.10.121/32 scope global eth1
inet6 fe80::20c:29ff:fe6f:ed60/64 scope link
valid_lft forever preferred_lft forever
Выполняем проверку:
- Останавливаем LB1:
# ip addr show eth1
- Теперь стартуем LB2 и проверяем аналогично:
# ip addr show eth1
- Смотрим логи и проверяем работу:
# tailf /var/log/messages
Пример вывода:
Mar 19 17:30:24 localhost Keepalived_vrrp[6958]: VRRP_Instance(VI_1) Transition to MASTER STATE
Mar 19 17:30:25 localhost Keepalived_vrrp[6958]: VRRP_Instance(VI_1) Entering MASTER STATE
Mar 19 17:30:25 localhost Keepalived_vrrp[6958]: VRRP_Instance(VI_1) setting protocol VIPs.
Mar 19 17:30:25 localhost Keepalived_healthcheckers[6957]: Netlink reflector reports IP 192.168.10.121 added
Mar 19 17:30:25 localhost avahi-daemon[1407]: Registering new address record for 192.168.10.121 on eth1.IPv4.
Mar 19 17:30:25 localhost Keepalived_vrrp[6958]: VRRP_Instance(VI_1) Sending gratuitous ARPs on eth1 for