Настройка VRRP состоит из двух этапов. Первый этап – подготовка конфигурационного файла /etc/keepalived/notify_common.conf, который отвечает за управление скриптом /etc/keepalived/scripts/notify_common. Второй этап – настройка VRRP из cisco-like консоли.
1. Приведите файл /etc/keepalived/notify_common.conf к виду:
Настройка данного конфигурационного файла требуется для того, чтобы резервная нода, находящаяся в состояниях Backup или Fault, имела доступ до заданной подсети (в данном сценарии в Интернет) через активную ноду.
Hub1-n1#run nano /etc/keepalived/notify_common.conf
FLAG_MANAGE_ROUTES="true"
RESERVE_ROUTES="0.0.0.0/0"
RESERVE_NEXTHOP="192.168.100.1"
RESERVE_METRIC="1"
При изменении данных параметров на уже работающей ноде кластера нужно перезапускать сервис keepalived:
Hub1-n1# run systemctl restart keepalived.service
Описание параметров:
· FLAG_MANAGE_ROUTES – флаг, который отвечает за управление резервными маршрутами, заданными в переменной RESERVE_ROUTES. Если флаг имеет значение true, то маршруты заданные в переменной RESERVE_ROUTES будут добавляться в таблицу маршрутизации в состояниях Backup и Fault и удаляться в состоянии Master. Если значение флага false, то управление резервными маршрутами не происходит.
· RESERVE_ROUTES – переменная, задающая маршруты, которые будут добавляться в таблицу маршрутизации в состояниях Backup и Fault и удаляться в состоянии Master. Если нужно указать несколько маршрутов, то они должны быть перечислены через пробел, например: RESERVE_ROUTES="1.1.1.1/32 192.168.1.0/24".
· RESERVE_NEXTHOP – переменная, задающая адрес шлюза для маршрутов, заданных в переменной RESERVE_ROUTES. В переменной RESERVE_NEXTHOP должен быть указан кластерный IP адрес внутреннего интерфейса.
· RESERVE_METRIC – переменная, задающая метрику для маршрутов, заданных в переменной RESERVE_ROUTES. Менять значение на нуль нельзя.
Если функционала конфигурационного файла /etc/keepalived/notify_common.conf недостаточно, то можно самостоятельно внести изменения в скрипт /etc/keepalived/scripts/notify_common. Во избежание проблем, настоятельно рекомендуется, согласовать изменения скрипта с производителем Продукта, обратившись в техническую поддержку.
2. Настройте VRRP в соответствии со схемой стенда на внешнем GigabitEthernet0/0 и внутреннем GigabitEthernet0/1 интерфейсах (по умолчанию все VRRP интерфейсы синхронизированы в группу номер ноль):
Hub1-n1#configure terminal
Hub1-n1(config)#interface GigabitEthernet0/0
Hub1-n1(config-if)# vrrp 1 ip 172.16.100.100 255.255.255.0
Hub1-n1(config-if)# vrrp 1 timers advertise 3
Hub1-n1(config-if)# vrrp 1 timers garp 5
Hub1-n1(config-if)# vrrp 1 priority 100
Hub1-n1(config-if)# no vrrp 1 preempt
Hub1-n1(config-if)#exit
Hub1-n1(config-if)#
Hub1-n1(config)#interface GigabitEthernet0/1
Hub1-n1(config-if)# vrrp 2 ip 192.168.100.1 255.255.255.0
Hub1-n1(config-if)# vrrp 2 timers advertise 3
Hub1-n1(config-if)# vrrp 2 timers garp 5
Hub1-n1(config-if)# vrrp 2 priority 100
Hub1-n1(config-if)# no vrrp 2 preempt
Hub1-n1(config-if)#
Hub1-n1(config-if)#exit
Для стабильности работы кластера не рекомендуется уменьшать advertisement интервал (команда: vrrp <VRID> timers advertise <SECONDS>) и отключать периодическую отсылку gARP пакетов (команда: vrrp <VRID> timers garp <SECONDS>).
3. Настройте VRRP маршрут, который будет добавляться в таблицу маршрутизации, когда нода будет переходить в состояние Master (в качестве src нужно указать кластерный IP адрес внешнего интерфейса):
Hub1-n1(config)#vrrp ip route 0.0.0.0 0.0.0.0 172.16.100.1 src 172.16.100.100
VRRP маршрут не должен пересекаться с обычными маршрутами, задаваемыми командой ip route.
4. Включите выполнение скрипта /etc/keepalived/scripts/notify_common при переходах между состояниями:
Hub1-n1(config)#vrrp notify common
5. Примените настройки (настройки VRRP и IPsec применяются по выходе из режима конфигурирования):
Hub1-n1(config)#end
Hub1-n1#
6. Проверьте состояние VRRP:
Hub1-n1#show vrrp
Interface VRID State
-------------------------------------------
GigabitEthernet0/0 1 Master
GigabitEthernet0/1 2 Master
7. Убедитесь, что маршрут по умолчанию добавлен через 172.16.100.1:
Hub1-n1#show ip route
Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2
i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
ia - IS-IS inter area, * - candidate default, U - per-user static route
o - ODR, P - periodic downloaded static route
Gateway of last resort is 172.16.100.1 to network 0.0.0.0
S* 0.0.0.0/0 [1/0] via 172.16.100.1
172.16.0.0/24 is subnetted, 1 subnets
C 172.16.100.0 is directly connected, GigabitEthernet0/0
C 192.168.100.0/24 is directly connected, GigabitEthernet0/1
8. Чтобы посмотреть получившийся конфигурационный файл /etc/keepalived/keepalived.conf сервиса keepalived выполните:
При настройке VRRP через cisco-like консоль менять файл /etc/keepalived/keepalived.conf вручную категорически запрещено, это может привести к неработоспособности кластера.
Hub1-n1#run cat /etc/keepalived/keepalived.conf
global_defs {
enable_dbus
}
vrrp_sync_group 0 {
group {
eth0_1
eth1_2
}
}
vrrp_instance eth0_1 {
interface eth0
virtual_routes {
src 172.16.100.100 0.0.0.0/0 via 172.16.100.1 dev eth0
}
virtual_ipaddress {
172.16.100.100/24 label eth0:900
}
nopreempt
priority 100
advert_int 3
garp_master_refresh 5
virtual_router_id 1
}
vrrp_instance eth1_2 {
interface eth1
virtual_ipaddress {
192.168.100.1/24 label eth1:900
}
nopreempt
priority 100
advert_int 3
garp_master_refresh 5
virtual_router_id 2
}