Настройка VRRP

Настройка 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

}