Резервирование с помощью протокола OSPF#
Введение#
В этом разделе описана настройка высокой доступности с использованием протокола OSPF в режиме резервирования (Active-Standby). Для настройки OSPF используется командная строка Angie ADC CLI.
В качестве протокола динамической маршрутизации используется OSPFv2 для адресного семейства IPv4 unicast. Отказоустойчивость в рамках IPv6 unicast настраивается аналогично.
Для обеспечения отказоустойчивости нужны две системы балансировки Angie ADC — основная и резервная. Резервная система Angie ADC будет принимать нагрузку при отказе основной.
Пример типового участка сети с системами балансировки Angie ADC (ADC #1 и ADC #2):

Рис. 1
Введем IP-адресацию:
В сегменте сети, куда подключаются External router, ADC #1 и ADC #2, будет использоваться подсеть 192.168.0.0/24.
В сегменте сети, куда подключаются Internal router, ADC #1 и ADC #2, будет использоваться подсеть 192.168.1.0/24.
Четвертый октет адреса для каждого устройства (в рамках соответствующей подсети) показан на схеме ниже.

Рис. 2
Адресация клиентов не приводится, так как в данном случае мы будем считать, что их адреса формально не определены, то есть, они могут подключаться из любой сети, включая сеть интернет. Для этих целей External router будет анонсировать маршрут по умолчанию по OSPF для ADC #1 и ADC #2. Мы будем использовать OSPF-домен, включающий в себя четыре устройства: External router, Internal router, ADC #1 и ADC #2.
Красным текстом на схеме ниже отмечены IP-адреса виртуальных серверов. Это те адреса, к которым подключаются клиенты снаружи. Системы балансировки Angie ADC должны анонсировать маршруты до этих виртуальных серверов в сторону External router, причем маршрут через ADC #1 должен быть более предпочтительным. Добиться этого можно разными способами, например, манипулируя значением метрики внешнего маршрута в OSPF. Чем больше значение метрики, тем менее предпочтительный маршрут. В данном документе мы будем вручную задавать косты для интерфейсов системы балансировки.

Рис. 3
Трафик от серверов в сторону клиента должен проходить через ту же систему балансировки, что и трафик от клиентов к серверам. Добиться этого можно также путем манипулирования значением метрики для префикса 0.0.0.0/0. Манипуляции с маршрутом по умолчанию нужны при включении опции IP transparency. В противном случае трафик и так будет возвращаться через ту же систему балансировки, так как поведение ADC напоминает операцию sNAT.
Обработка типовых сбоев#
Ниже описаны сценарии работы Angie ADC при сбоях. В этом случае оба OSPF-соседства с ADC #1 разрываются,
никакие объявления маршрутов через ADC #1 не пролетают.
Остается связь по OSPF только с ADC #2.
То есть, переключение на резервную систему производится полностью автоматически,
никакие дополнительные настройки не требуются. Красными стрелками обозначены рабочие OSPF-соседства: Рис. 4 Предлагаемая схема не имеет возможности отслеживания и реагирования на частичные отказы.
Пример такого отказа представлен на схеме ниже. Рис. 5 В случае обозначенного на схеме отказа линка разрывается OSPF-сессия между ADC #1 и External router.
ADC #1 теперь не может объявить маршрут до адреса виртуального сервера в сторону External router напрямую.
Internal router рассчитывает маршрут по умолчанию только через ADC #2, а External router считает маршрут до адреса виртуального сервера только через полностью работающий ADC #2. Отказ линка между ADC #1 и Internal router более сложная ситуация:
если OSPF-соседство между External router и ADC #1 сохраняется,
то ADC #1 будет продолжать анонсировать маршрут до адреса виртуального сервера,
хотя реальные сервера для системы балансировки ADC #1 уже недостижимы. Таким образом, мы получаем классический пример black hole для трафика: Рис. 6 Чтобы избежать этой проблемы, необходимо, чтобы ситуация отказа только одного из линков была невозможной,
т.е. нужно обеспечить отказоустойчивое подключение к сети для хоста виртуализации, на котором работает ADC. Рекомендованная схема подключения: Объединить в одну LAG-группу все физические интерфейсы хоста виртуализации
и использовать этот виртуальный LAG-интерфейс в качестве транка,
то есть передавать по нему тегированными несколько виртуальных сетей
(один VLAN для external сети, второй VLAN для internal сети). Для резервирования коммутаторов можно использовать технологию vPC или стекирование,
пример представлен на схеме ниже. Из соображений простоты на схеме не отображено резервирование внешнего и внутреннего маршрутизаторов. Рис. 7Полный отказ ADC #1#
Отказ внешнего интерфейса ADC #1#
Отказ линка между ADC #1 и Internal router#
Настройки маршрутизации#
Приведем ключевые настройки маршрутизации для External router, Internal router, ADC #1 и ADC #2. Выполним проверку работы системы маршрутизации, когда ADC #1 и ADC #2 находятся в полностью работоспособном состоянии. Примечание В листингах ниже отсутствуют префиксы, не относящиеся к обсуждаемым вопросам отказоустойчивости. Маршрутизатор External router видит маршрут к адресу виртуального сервера через обе системы балансировки, однако маршрут через ADC #1 является более предпочтительным. Маршрутизатор Internal router видит маршрут по умолчанию (путь через ADC #1 является более предпочтительным). Отключим теперь ADC #1 полностью и проверим маршрутизацию. Маршрутизатор Internal router: Маршрутизатора External router: После возвращения в строй системы балансировки ADC #1 маршрутизация через это устройство восстанавливается.Ключевые настройки маршрутизации для External router#
hostname external
!Имя устройства
interface GigabitEthernet0/0
ip address 192.168.0.1 255.255.255.0
!Интерфейс в сторону систем балансировки
router ospf 1
network 192.168.0.0 0.0.0.255 area 0
!Включение OSPF на интерфейсе в сторону систем балансировки
default-information originate always
!Анонсирование маршрута по умолчанию
end
Ключевые настройки маршрутизации для Internal router#
hostname internal
!Имя устройства
interface GigabitEthernet0/0
ip address 192.168.1.1 255.255.255.0
!Интерфейс в сторону систем балансировки
interface GigabitEthernet1/0
ip address 192.168.2.1 255.255.255.0
!Интерфейс в сторону подсети с реальными серверами
router ospf 1
redistribute connected subnets
!добавление в OSPF информации о подсети с серверами
network 192.168.1.0 0.0.0.255 area 0
!Включение OSPF на интерфейсе в сторону систем балансировки
end
Ключевые настройки маршрутизации системы балансировки ADC #1#
hostname adc1
!Имя устройства
interface ens33
!Интерфейс в сторону маршрутизатора external router
description external
ip address 192.168.0.2/24
ip ospf 1 area 0
!Включение OSPF на интерфейсе
ip ospf cost 10
!Назначение стоимости интерфейса в OSPF вручную
exit
interface ens37
!Интерфейс в сторону маршрутизатора internal router
description internal
ip address 192.168.1.2/24
ip ospf 1 area 0
!Включение OSPF на интерфейсе
exit
interface lo
!Интерфейс лупбек для назначения адресов виртуальных серверов
ip address 2.2.2.2/32
!Адрес тестового виртуального сервера
exit
ip prefix-list c2o seq 5 permit 2.2.2.2/32
!Префикс-лист, который используется для отбора префиксов для добавления в OSPF
route-map c2o permit 10
match ip address prefix-list c2o
!Route-map с помощью которой производится отбор префиксов для добавления в OSPF
exit
router ospf 1
!Настройки процесса маршрутизации OSPF
ospf router-id 2.2.2.2
!Необходимо вручную задать идентификатор маршрутизатора для OSPF
!Если этого не сделать, то автоматика может выбрать одинаковые для ADC#1 и ADC#2
redistribute connected metric 10 route-map c2o
!Добавление информации о подключенных сетях в OSPF
!Метрика 10, чтобы стать более предпочтительным next-hop по сравнению с ADC#2
exit
end
Ключевые настройки маршрутизации системы балансировки ADC #2#
hostname adc2
!Имя устройства
interface ens33
!Интерфейс в сторону маршрутизатора external router
description external
ip address 192.168.0.3/24
ip ospf 1 area 0
!Включение OSPF на интерфейсе
ip ospf cost 100
!Назначение стоимости интерфейса в OSPF вручную
exit
interface ens37
!Интерфейс в сторону маршрутизатора internal router
description internal
ip address 192.168.1.3/24
ip ospf 1 area 0
!Включение OSPF на интерфейсе
exit
interface lo
!Интерфейс лупбек для назначения адресов виртуальных серверов
ip address 2.2.2.2/32
!Адрес тестового виртуального сервера
exit
ip prefix-list c2o seq 5 permit 2.2.2.2/32
!Префикс-лист, который используется для отбора префиксов для добавления в OSPF
route-map c2o permit 10
match ip address prefix-list c2o
!Route-map с помощью которой производится отбор префиксов для добавления в OSPF
exit
router ospf 1
!Настройки процесса маршрутизации OSPF
ospf router-id 22.22.22.22
!Необходимо вручную задать идентификатор маршрутизатора для OSPF
!Если этого не сделать, то автоматика может выбрать одинаковые для ADC#1 и ADC#2
redistribute connected metric 10 route-map c2o
!Добавление информации о подключенных сетях в OSPF
!Метрика 20, чтобы стать менее предпочтительным next-hop по сравнению с ADC#1
exit
end
Проверка работы#
external#sho ip ro os
Codes: L - local, 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, H - NHRP, l - LISP
+ - replicated route, % - next hop override
Gateway of last resort is not set
2.0.0.0/32 is subnetted, 1 subnets
O E2 2.2.2.2 [110/10] via 192.168.0.2, 00:41:28, GigabitEthernet0/0
external#sho ip os da ex 2.2.2.2
OSPF Router with ID (192.168.0.1) (Process ID 1)
Type-5 AS External Link States
Routing Bit Set on this LSA in topology Base with MTID 0
LS age: 898
Options: (No TOS-capability, No DC, Upward)
LS Type: AS External Link
Link State ID: 2.2.2.2 (External Network Number )
Advertising Router: 2.2.2.2
LS Seq Number: 80000003
Checksum: 0xAA0C
Length: 36
Network Mask: /32
Metric Type: 2 (Larger than any link state path)
MTID: 0
Metric: 10
Forward Address: 0.0.0.0
External Route Tag: 0
LS age: 885
Options: (No TOS-capability, No DC, Upward)
LS Type: AS External Link
Link State ID: 2.2.2.2 (External Network Number )
Advertising Router: 22.22.22.22
LS Seq Number: 80000003
Checksum: 0xB4A7
Length: 36
Network Mask: /32
Metric Type: 2 (Larger than any link state path)
MTID: 0
Metric: 20
Forward Address: 0.0.0.0
External Route Tag: 0
internal#sho ip ro os
Codes: L - local, 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, H - NHRP, l - LISP
+ - replicated route, % - next hop override
Gateway of last resort is 192.168.1.2 to network 0.0.0.0
O*E2 0.0.0.0/0 [110/1] via 192.168.1.2, 00:43:21, GigabitEthernet0/0
internal#sho ip os da ext 0.0.0.0
OSPF Router with ID (192.168.2.1) (Process ID 1)
Type-5 AS External Link States
Routing Bit Set on this LSA in topology Base with MTID 0
LS age: 992
Options: (No TOS-capability, DC, Upward)
LS Type: AS External Link
Link State ID: 0.0.0.0 (External Network Number )
Advertising Router: 192.168.0.1
LS Seq Number: 80000003
Checksum: 0x2521
Length: 36
Network Mask: /0
Metric Type: 2 (Larger than any link state path)
MTID: 0
Metric: 1
Forward Address: 0.0.0.0
External Route Tag: 1
internal#sho ip ro os
Codes: L - local, 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, H - NHRP, l - LISP
+ - replicated route, % - next hop override
Gateway of last resort is 192.168.1.3 to network 0.0.0.0
O*E2 0.0.0.0/0 [110/1] via 192.168.1.3, 00:01:08, GigabitEthernet0/0
external#sho ip ro os
Codes: L - local, 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, H - NHRP, l - LISP
+ - replicated route, % - next hop override
Gateway of last resort is not set
2.0.0.0/32 is subnetted, 1 subnets
O E2 2.2.2.2 [110/10] via 192.168.0.3, 00:00:10, GigabitEthernet0/0
Заключение#
Все описанное выше относится к режиму работы системы балансировки трафика с включенной опцией IP transparency. При опции IP Transparency Angie ADC сохраняет исходный адрес отправителя в IP-пакетах, позволяя серверам на сетевом уровне различать клиентские подключения. Очень часто администраторы систем балансировки отключают эту опцию, в этом случае Angie ADC будет выполнять не только dNAT, но sNAT над трафиком, приходящим от клиентов. Если система балансировки выполняет sNAT, то в этом случае маршрутизация несколько упрощается, так как в этом случае нет необходимости анонсировать в сторону Internal router маршрут по умолчанию. Если ADC #1 и ADC #2 выполняют sNAT в разные адреса, то в этом случае нет необходимости заботиться о том, с какими значениями метрики маршруты до соответствующих адресов попадают на маршрутизатор Internal router, так как анонсы будут уникальными.