Настройка RHI#

RHI (Route Health Injection) позволяет динамически управлять маршрутами, анонсируемыми протоколами динамической маршрутизации, например BGP и OSPF, на основе данных о состоянии апстримов в балансировщике нагрузки. RHI позволяет автоматически отзывать префиксы при недоступности апстримов, минимизируя возможные циклы объявлений и отзывов. Апстрим считается недоступным, если все его бэкенды не прошли проверки работоспособности (health probes).

Для работы RHI необходимо:

  1. Настроить BGP или OSPF в зависимости от свойств сети (через командную строку, примеры см. ниже).

  2. Задать проверки работоспособности для балансировщика нагрузки (в веб-интерфейсе Angie ADC, пример см. ниже).

  3. Задать конфигурацию RHI (в веб-интерфейсе Angie ADC, инструкцию см. ниже).

Настройка BGP#

Настройка BGP проводится через интерфейс командной строки.

Пример#

hostname angie-va
no ipv6 forwarding
ip prefix-list myapp1_pair seq 5 permit 2.2.2.2/32
interface lo
 ip address 2.2.2.2/32
exit
router bgp 1
 no bgp ebgp-requires-policy
 neighbor 10.0.0.1 remote-as 2
 address-family ipv4 unicast
  redistribute connected route-map myapp1_pair
 exit-address-family
exit
route-map myapp1_pair permit 10
 match ip address prefix-list myapp1_pair
exit

Проверка#

Angie ADC должен увидеть свои объявления:

angie-va# sh ip bgp
BGP table version is 14, local router ID is 2.2.2.2, vrf id 0
Default local pref 100, local AS 1
Status codes:  s suppressed, d damped, h history, u unsorted, * valid, > best, = multipath,
               i internal, r RIB-failure, S Stale, R Removed
Nexthop codes: @NNN nexthop's vrf id, < announce-nh-self
Origin codes:  i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found

    Network          Next Hop            Metric LocPrf Weight Path
*>  2.2.2.2/32       0.0.0.0                  0         32768 ?

Displayed 1 routes and 1 total paths

Соседний маршрутизатор должен увидеть объявления от Angie ADC:

abstract-router# sh ip bgp
BGP table version is 14, local router ID is 10.0.0.1, vrf id 0
Default local pref 100, local AS 2
Status codes:  s suppressed, d damped, h history, u unsorted, * valid, > best, = multipath,
               i internal, r RIB-failure, S Stale, R Removed
Nexthop codes: @NNN nexthop's vrf id, < announce-nh-self
Origin codes:  i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found

    Network          Next Hop            Metric LocPrf Weight Path
*>  2.2.2.2/32       10.21.20.6               0             0 1 ?

Displayed 1 routes and 1 total paths

В случае если объявления не видны, можно попробовать сбросить сессию BGP на обоих маршрутизаторах:

clear ip bgp * soft

Отзыв префиксов#

Отзыв префиксов реализован через автоматическое изменение префикс-листов.

Например:

ip prefix-list myapp1_pair seq 5 deny 2.2.2.2/32

Объявление префиксов после восстановления работы апстрима#

При восстановлении работоспособности апстримов префикс-листы не меняются автоматически.

Чтобы вручную вернуть префикс-лист к изначальному виду, выполните команды:

conf t
 ip prefix-list myapp1_pair seq 5 permit 2.2.2.2/32

Примечание

Если вы хотите, чтобы префиксы автоматически анонсировались после восстановления апстримов, установите флажок Объявлять префиксы при восстановлении апстримов в настройках конфигурации RHI.

Настройка OSPF#

Настройка OSPF также проводится через интерфейс командной строки.

Пример#

hostname angie-va
no ipv6 forwarding
ip prefix-list myapp1_pair seq 5 permit 2.2.2.2/32
interface ens33
 ip address 192.168.0.20/24
 ip ospf 1 area 0
exit
interface lo
 ip address 2.2.2.2/32
exit
router ospf 1
 ospf router-id 192.168.0.20
 redistribute connected route-map myapp1_pair
exit
route-map myapp1_pair permit 10
match ip address prefix-list myapp1_pair
exit

Проверка#

Если серверы в бэкенде доступны:

angie-va#sho ip ospf 1 database external self-originate
OSPF Instance: 1
       OSPF Router with ID (2.2.2.2)
                AS External Link States
  LS age: 28
  Options: 0x2  : *|-|-|-|-|-|E|-
  LS Flags: 0xb
  LS Type: AS-external-LSA
  Link State ID: 2.2.2.2 (External Network Number)
  Advertising Router: 192.168.0.20
  LS Seq Number: 80000001
  Checksum: 0x139b
  Length: 36
  Network Mask: /32
        Metric Type: 2 (Larger than any link state path)
        TOS: 0
        Metric: 20
        Forward Address: 0.0.0.0
        External Route Tag: 0

Если серверы в бэкенде недоступны:

angie-va#sho ip ospf 1 database external self-originate
OSPF Instance: 1
       OSPF Router with ID (192.168.0.20)
                AS External Link States
  LS age: 3600
  Options: 0x2  : *|-|-|-|-|-|E|-
  LS Flags: 0x8b
  LS Type: AS-external-LSA
  Link State ID: 2.2.2.2 (External Network Number)
  Advertising Router: 2.2.2.2
  LS Seq Number: 80000001
  Checksum: 0x139b
  Length: 36
  Network Mask: /32
        Metric Type: 2 (Larger than any link state path)
        TOS: 0
        Metric: 20
        Forward Address: 0.0.0.0
        External Route Tag: 0

Отзыв префиксов#

Отзыв маршрута в OSPF происходит следующим образом: после удаления префикса OSPF изменяет значение возраста LSA в поле LS age на 3600, информируя соседей, что LSA устарела и нужно перестать ее использовать. Через некоторое время эта LSA будет полностью удалена из LSDB.

Объявление префиксов после восстановления работы апстрима#

При восстановлении работоспособности апстримов префикс-листы не меняются автоматически.

Чтобы вручную вернуть префикс-лист к изначальному виду, выполните команды:

conf t
 ip prefix-list myapp1_pair seq 5 permit 2.2.2.2/32

Примечание

Если вы хотите, чтобы префиксы автоматически анонсировались после восстановления апстримов, установите флажок Объявлять префиксы при восстановлении апстримов в настройках конфигурации RHI.

Настройка балансировщика нагрузки#

Конфигурация балансировщика нагрузки настраивается в веб-интерфейсе Angie ADC (см. инструкцию).

Для работы RHI необходимо настроить следующие параметры:

  • upstream_probe;

  • параметры для получения информации о состоянии балансировщика нагрузки.

Пример#

Приведены только строки, добавленные в дефолтную конфигурацию.

### Часть конфигурации опущена для краткости
}
### Бэкенды
upstream myapp1 {
    zone myapp1 1m;
    server server1;
    server server2;
}
### Переменная для health probe
map $upstream_status $good {
    200     "1";
}
server {
### Часть конфигурации опущена для краткости
    location / {
        proxy_pass http://myapp1;
        # Апстрим-пробы
        upstream_probe myapp1_probe
            interval=1s
            test=$good
            essential
            mode=always;
    }
### Часть конфигурации опущена для краткости
}
}

Настройка конфигурации RHI#

Конфигурация RHI настраивается в веб-интерфейсе Angie ADC.

Чтобы настроить конфигурацию, выполните следующие действия:

  1. Откройте веб-интерфейс Angie ADC и перейдите Управление трафикомКонфигурация RHI.

    Откроется окно настройки RHI.

  2. Задайте префиксы. Для этого нажмите Добавить и укажите следующие параметры:

    • VIP-адрес (CIDR) — виртуальный IP-адрес для апстрима. Указывается в формате X.X.X.X/mask.

      Примечание

      Значение должно быть уникальным в рамках одного префикс-листа.

    • Приоритет — номер последовательности, определяющий порядок обработки правил. Маршрут с меньшим приоритетом обрабатывается первым.

      Примечание

      Значение должно быть уникальным в рамках одного префикс-листа.

    • Имя префикс-листа — имя префикс-листа для маршрутизации.

    • Имя апстрима — апстрим, для которого настраивается отзыв префикса.

  3. Установите флажок Объявлять префиксы при восстановлении апстримов, если хотите, чтобы Angie ADC автоматически анонсировал префиксы в маршрутизируемую сеть при восстановлении работоспособности апстримов. По умолчанию флажок снят.

  4. Нажмите Сохранить.

    Настройки RHI будут сохранены и сразу применены.

Удаление префиксов#

Вы можете удалить неиспользуемые префиксы из конфигурации RHI, нажав на значок удаления напротив этих префиксов.

Примечание

При удалении префиксов через интерфейс Angie ADC они удаляются из базы данных и перестают влиять на объявление и отзыв маршрутов, но сохраняются в списках, отображаемых через командную строку.

Чтобы полностью удалить префикс-лист, необходимо выполнить следующие команды:

conf t
no ip prefix-list <имя префикс-листа>

Это поведение будет скорректировано в следующих релизах.