Задача:
Получить отказоустойчивую систему (на уровне самих маршрутизаторов с резервированием состояний NAT-cессий) на основе маршрутизаторов Cisco 4331, поскольку в данных маршрутизаторах сейчас установлена IOS XE 15.5, то старый механизм
отказоустойчивости на основе Stateful NAT + VRRP/HSRP не поддерживается,
поскольку с IOS 15.0M не поддерживается Stateful NAT (End of Support c 31/01/2014).
Сisco заменила данный механизм другим, который называется на текущий момент NAT Box-to-Box High-Availability который появился с IOS 15.3(2)T or later.
Необходимо обеспечить сценарий, в котором Router1 (Маршрутизатор 1) был бы активным маршрутизатором в Redundancy Group (в которую входят как все NAT Outside, так и все NAT Inside интерфейсы), а Router 2 (Маршрутизатор 2) был бы резервным маршрутизатором в той же RG (относительно NAT Inside/Outside - все аналогично маршрутизатору 1)
Примерная схема включения выглядит следующим образом:
В схеме видно, что маршрутизаторы для синхронизации состояния отказоустойчивой группы (Redundancy Group = RG) используют интерфейсы Control/ Data/AR.
Вообще строго говоря, Cisco рекомендует использовать физические интерфейсы для этой цели, но у меня заработали все и на виртуальных VLAN SVI (рекомендую все таки воспользоваться рекомандациями Cisco и использовать физические интерфейсы для этой цели, более того имеет смысл для резервирования вообще использовать EtherChannel между маршрутизаторами для этих целей).
Реализация решения задачи:
Настройка основного механизма Redundancy:
Маршрутизатор 1:
redundancy
mode noneapplication redundancy
group 1
name RG1
preempt
priority 105
control Vlan999 protocol 1
data Vlan999
Маршрутизатор 2:
redundancy
mode none
application redundancy
group 1
name RG1
preempt
control Vlan999 protocol 1
data Vlan999
Настройки маршрутизаторов в части настройки Redundancy в принципе аналогичны, оба маршрутизатора входят в одну Application Group (RG1), однако для маршрутизатора 1 установлен приоритет в RG1 (105), в отличии от приоритета по умолчанию (100) для маршрутизатора 2, для синхронизации состояния RG между маршрутизаторами необходимо выбрать рабочие интерфейсы, в данном случае для Control/Data использован VLAN ID 999 (должен существовать на маршрутизаторах, должен иметь IP-адрес на SVI этого VLAN, должен быть в up, маршрутизаторы должны иметь IP-связность внутри сети данного VLAN)
Настройка интерфейсов:
Маршрутизатор 1:
description ** Link to ISP A **
vrf forwarding ISP1
ip address 1.1.1.1 255.255.255.0
ip nat outside
negotiation auto
redundancy rii 100
redundancy group 1 ip 1.1.1.3 exclusive decrement 100
ip virtual-reassembly
!
interface GigabitEthernet0/0/1
description ** Link to ISP B **
vrf forwarding ISP2
ip address 2.2.2.1 255.255.255.0
ip nat outside
negotiation auto
redundancy rii 101
redundancy group 1 ip 2.2.2.3 exclusive decrement 100
ip virtual-reassembly
!
description DMZ VLAN #1
ip address 172.30.100.2 255.255.255.0
ip nat inside
redundancy rii 200
redundancy group 1 ip 172.30.100.1 exclusive decrement 100
ip virtual-reassembly
!
interface Vlan120
description DMZ VLAN #2
ip address 172.30.120.2 255.255.255.0
ip nat inside
redundancy rii 201
redundancy group 1 ip 172.30.120.1 exclusive decrement 100
ip virtual-reassembly
!
interface Vlan192
description Internal LAN
ip address 192.168.0.252 255.255.255.0
ip nat inside
redundancy rii 300
redundancy group 1 ip 192.168.0.254 exclusive decrement 100
ip virtual-reassembly
!
interface Vlan999
description InterChassis HA Control/Data VLAN
ip address 172.31.254.1 255.255.255.252
!
interface GigabitEthernet0/0/0
description ** Link to ISP A **
vrf forwarding ISP1
ip address 1.1.1.2 255.255.255.0
ip nat outside
negotiation auto
redundancy rii 100
redundancy group 1 ip 1.1.1.3 exclusive decrement 100
ip virtual-reassembly
!
interface GigabitEthernet0/0/1
description ** Link to ISP B **
vrf forwarding ISP2
ip address 2.2.2.2 255.255.255.0
ip nat outside
negotiation auto
redundancy rii 101
redundancy group 1 ip 2.2.2.3 exclusive decrement 100
ip virtual-reassembly
!
description DMZ VLAN #1
ip address 172.30.100.3 255.255.255.0
ip nat inside
redundancy rii 200
redundancy group 1 ip 172.30.100.1 exclusive decrement 100
ip virtual-reassembly
!
interface Vlan120
description DMZ VLAN #2
ip address 172.30.120.3 255.255.255.0
ip nat inside
redundancy rii 201
redundancy group 1 ip 172.30.120.1 exclusive decrement 100
ip virtual-reassembly
!
interface Vlan192
description Internal LAN
ip address 192.168.0.253 255.255.255.0
ip nat inside
redundancy rii 300
redundancy group 1 ip 192.168.0.254 exclusive decrement 100
ip virtual-reassembly
!
interface Vlan999
description InterChassis HA Control/Data VLAN
ip address 172.31.254.2 255.255.255.252
!
Данные настройки назначаются уникальный идентификатор интерфейса в RG, подвязывают интерфейс к RG, назначают виртуальный IP (VIP) на RG, устанавливают декремент для решения надо ли делать Failover или нет при голосовании. Также показаны настройки для VLAN ID 999 который используется для сихронизации состоянии отказоустойчивой группы (RG).
Контроль за состоянием RG для целей отладки и проверки работоспособности:
Маршрутизатор 1:
Group ID:1
Group Name:RG1
Administrative State: No Shutdown
Aggregate operational state : Up
My Role: ACTIVE
Peer Role: STANDBY
Peer Presence: Yes
Peer Comm: Yes
Peer Progression Started: Yes
RF Domain: btob-one
RF state: ACTIVE
Peer RF state: STANDBY HOT
cisco4331-01#sh redundancy application control-interface group 1
The control interface for rg[1] is Vlan999
Interface is Control interface associated with the following protocols: 1
BFD Enabled
Interface Neighbors:
Peer: 172.31.254.2 Standby RGs: 1 BFD handle: 0
cisco4331-01#sh redundancy application data-interface group 1
The data interface for rg[1] is Vlan999
cisco4331-01#sh redundancy application protocol group 1
RG Protocol RG 1
------------------
Role: Active
Negotiation: Enabled
Priority: 105
Protocol state: Active
Ctrl Intf(s) state: Up
Active Peer: Local
Standby Peer: address 172.31.254.2, priority 100, intf Vl999
Log counters:
role change to active: 1
role change to standby: 1
disable events: rg down state 0, rg shut 0
ctrl intf events: up 1, down 1, admin_down 0
reload events: local request 0, peer request 0
RG Media Context for RG 1
--------------------------
Ctx State: Active
Protocol ID: 1
Media type: Default
Control Interface: Vlan999
Current Hello timer: 3000
Configured Hello timer: 3000, Hold timer: 10000
Peer Hello timer: 3000, Peer Hold timer: 10000
Stats:
Pkts 927, Bytes 57474, HA Seq 0, Seq Number 927, Pkt Loss 0
Authentication not configured
Authentication Failure: 0
Reload Peer: TX 0, RX 0
Resign: TX 0, RX 1
Standby Peer: Present. Hold Timer: 10000
Pkts 913, Bytes 31042, HA Seq 0, Seq Number 3046, Pkt Loss 0
Маршрутизатор 2:
Group ID:1
Group Name:RG1
Administrative State: No Shutdown
Aggregate operational state : Up
My Role: STANDBY
Peer Role: ACTIVE
Peer Presence: Yes
Peer Comm: Yes
Peer Progression Started: Yes
RF Domain: btob-one
RF state: STANDBY HOT
Peer RF state: ACTIVE
The control interface for rg[1] is Vlan999
Interface is Control interface associated with the following protocols: 1
BFD Enabled
Interface Neighbors:
Peer: 172.31.254.1 Active RGs: 1 BFD handle: 0
The data interface for rg[1] is Vlan999
RG Protocol RG 1
------------------
Role: Standby
Negotiation: Enabled
Priority: 100
Protocol state: Standby-hot
Ctrl Intf(s) state: Up
Active Peer: address 172.31.254.1, priority 105, intf Vl999
Standby Peer: Local
Log counters:
role change to active: 3
role change to standby: 3
disable events: rg down state 1, rg shut 0
ctrl intf events: up 2, down 1, admin_down 0
reload events: local request 0, peer request 0
RG Media Context for RG 1
--------------------------
Ctx State: Standby
Protocol ID: 1
Media type: Default
Control Interface: Vlan999
Current Hello timer: 3000
Configured Hello timer: 3000, Hold timer: 10000
Peer Hello timer: 3000, Peer Hold timer: 10000
Stats:
Pkts 3138, Bytes 194556, HA Seq 0, Seq Number 3138, Pkt Loss 0
Authentication not configured
Authentication Failure: 0
Reload Peer: TX 0, RX 0
Resign: TX 2, RX 0
Active Peer: Present. Hold Timer: 10000
Pkts 1004, Bytes 34136, HA Seq 0, Seq Number 1019, Pkt Loss 0
Попробуем протестировать Failover Virtual IP для RG1 (для примера будет использоваться Virtual IP 1.1.1.3 - общий внешний адрес на одном из NAT Outside интерфейсах):
до перезагрузки маршрутизатора 1:
Group ID:1
Group Name:RG1
Administrative State: No Shutdown
Aggregate operational state : Up
My Role: ACTIVE
Peer Role: STANDBY
Peer Presence: Yes
Peer Comm: Yes
Peer Progression Started: Yes
RF Domain: btob-one
RF state: ACTIVE
Peer RF state: STANDBY HOT
Group ID:1
Group Name:RG1
Administrative State: No Shutdown
Aggregate operational state : Up
My Role: STANDBY
Peer Role: ACTIVE
Peer Presence: Yes
Peer Comm: Yes
Peer Progression Started: Yes
RF Domain: btob-one
RF state: STANDBY HOT
Peer RF state: ACTIVE
перезагружаем Маршрутизатор 1:
Proceed with reload? [confirm]y
cisco4331-02#sh redundancy application group 1
Group ID:1
Group Name:RG1
Administrative State: No Shutdown
Aggregate operational state : Up
My Role: ACTIVE
Peer Role: UNKNOWN
Peer Presence: No
Peer Comm: No
Peer Progression Started: No
RF Domain: btob-one
RF state: ACTIVE
Peer RF state: DISABLED
на маршрутизаторе 2 в это время фиксируются следующие события в логе
*Jun 6 15:54:13.919: %RG_PROTOCOL-5-ROLECHANGE: RG id 1 role change from Standby to Active
и соответственно Маршрутизатор 2 перехватывает Virtual IP 1.1.1.3
При перехвате будет потеряно небольшое количество пакетов (у меня вышло примерно 4-5 ICMP-пакетов при непрерывном тестировании Virtual IP во время Failover, если тестировать при помощи Ping при настройках таймеров Failover по умолчанию.
После перезагрузки Маршрутизатора 1 в его логе появляются следующие записи:
*Jun 6 16:16:27.223: %RG_PROTOCOL-5-ROLECHANGE: RG id 1 role change from Init to Standby
*Jun 6 16:16:36.586: %RG_PROTOCOL-5-ROLECHANGE: RG id 1 role change from Standby to Active
*Jun 6 16:16:46.665: %RG_VP-6-BULK_SYNC_DONE: RG group 1 BULK SYNC to standby complete.
*Jun 6 16:16:46.666: %RG_VP-6-STANDBY_READY: RG group 1 Standby router is in SSO state
А у Маршрутизатора 2 в логах появляется следующая информация:
*Jun 6 16:17:31.004: %RG_PROTOCOL-5-ROLECHANGE: RG id 1 role change from Active to Init
*Jun 6 16:17:41.004: %RG_PROTOCOL-5-ROLECHANGE: RG id 1 role change from Init to Standby
То есть цикл смены ролей при перезагрузки Маршрутизатор 1 - следующий Init > Standby > Active, а для Маршрутизатора 2 Active > Init > Standby, при этом Маршрутизатор 1 забирает себе обратно Virtual IP, поскольку на нем настроен Preempt и он имеет приоритет RG1 выше чем Маршрутизатор 2:
cisco4331-01#sh redundancy application group 1
Group ID:1
Group Name:RG1
Administrative State: No Shutdown
Aggregate operational state : Up
My Role: ACTIVE
Peer Role: STANDBY
Peer Presence: Yes
Peer Comm: Yes
Peer Progression Started: Yes
RF Domain: btob-one
RF state: ACTIVE
Peer RF state: STANDBY HOT
Поскольку у нас настроен декремент 100, на интерфейсах входящих в RG1, то можно проверить Failover например по условию - падает интерфейс, входящий в RG1, для
примера возьмем активный маршрутизатор в RG1 - Маршрутизатор 1 и уроним у него один из интерфейсов из RG (для примера gigibitethernet 0/0/0):
до отключения интерфейса gi 0/0/0:
cisco4331-01#sh redundancy application group 1
Group ID:1
Group Name:RG1
Administrative State: No Shutdown
Aggregate operational state : Up
My Role: ACTIVE
Peer Role: STANDBY
Peer Presence: Yes
Peer Comm: Yes
Peer Progression Started: Yes
RF Domain: btob-one
RF state: ACTIVE
Peer RF state: STANDBY HOT
cisco4331-02#sh redundancy application group 1
Group ID:1
Group Name:RG1
Administrative State: No Shutdown
Aggregate operational state : Up
My Role: STANDBY
Peer Role: ACTIVE
Peer Presence: Yes
Peer Comm: Yes
Peer Progression Started: Yes
RF Domain: btob-one
RF state: STANDBY HOT
Peer RF state: ACTIVE
Кладем интерфейс gi/0/0/0 на Маршрутизаторе 1:
cisco4331-01(config)#interface gigabitEthernet 0/0/0
cisco4331-01(config-if)#shut
cisco4331-01(config-if)#exit
cisco4331-01(config)#exit
Cмотрим, что произошло:
Маршрутизатор 1:
cisco4331-01#sh redundancy application group 1
Group ID:1
Group Name:RG1
Administrative State: No Shutdown
Aggregate operational state : Up
My Role: STANDBY
Peer Role: ACTIVE
Peer Presence: Yes
Peer Comm: Yes
Peer Progression Started: Yes
RF Domain: btob-one
RF state: STANDBY HOT
Peer RF state: ACTIVE
*Jun 7 09:59:38.517: %RG_PROTOCOL-5-ROLECHANGE: RG id 1 role change from Active to Init
*Jun 7 09:59:38.707: %LINK-5-CHANGED: Interface GigabitEthernet0/0/0, changed state to administratively down
*Jun 7 09:59:39.707: %LINEPROTO-5-UPDOWN: Line protocol on Interface GigabitEthernet0/0/0, changed state to down
*Jun 7 09:59:48.518: %RG_PROTOCOL-5-ROLECHANGE: RG id 1 role change from Init to Standby
примера возьмем активный маршрутизатор в RG1 - Маршрутизатор 1 и уроним у него один из интерфейсов из RG (для примера gigibitethernet 0/0/0):
до отключения интерфейса gi 0/0/0:
cisco4331-01#sh redundancy application group 1
Group ID:1
Group Name:RG1
Administrative State: No Shutdown
Aggregate operational state : Up
My Role: ACTIVE
Peer Role: STANDBY
Peer Presence: Yes
Peer Comm: Yes
Peer Progression Started: Yes
RF Domain: btob-one
RF state: ACTIVE
Peer RF state: STANDBY HOT
cisco4331-02#sh redundancy application group 1
Group ID:1
Group Name:RG1
Administrative State: No Shutdown
Aggregate operational state : Up
My Role: STANDBY
Peer Role: ACTIVE
Peer Presence: Yes
Peer Comm: Yes
Peer Progression Started: Yes
RF Domain: btob-one
RF state: STANDBY HOT
Peer RF state: ACTIVE
Кладем интерфейс gi/0/0/0 на Маршрутизаторе 1:
cisco4331-01(config)#interface gigabitEthernet 0/0/0
cisco4331-01(config-if)#shut
cisco4331-01(config-if)#exit
cisco4331-01(config)#exit
Маршрутизатор 1:
cisco4331-01#sh redundancy application group 1
Group ID:1
Group Name:RG1
Administrative State: No Shutdown
Aggregate operational state : Up
My Role: STANDBY
Peer Role: ACTIVE
Peer Presence: Yes
Peer Comm: Yes
Peer Progression Started: Yes
RF Domain: btob-one
RF state: STANDBY HOT
Peer RF state: ACTIVE
*Jun 7 09:59:38.517: %RG_PROTOCOL-5-ROLECHANGE: RG id 1 role change from Active to Init
*Jun 7 09:59:38.707: %LINK-5-CHANGED: Interface GigabitEthernet0/0/0, changed state to administratively down
*Jun 7 09:59:39.707: %LINEPROTO-5-UPDOWN: Line protocol on Interface GigabitEthernet0/0/0, changed state to down
*Jun 7 09:59:48.518: %RG_PROTOCOL-5-ROLECHANGE: RG id 1 role change from Init to Standby
Маршрутизатор 2:
cisco4331-02#sh redundancy application group 1
Group ID:1
Group Name:RG1
Administrative State: No Shutdown
Aggregate operational state : Up
My Role: ACTIVE
Peer Role: STANDBY
Peer Presence: Yes
Peer Comm: Yes
Peer Progression Started: Yes
RF Domain: btob-one
RF state: ACTIVE
Peer RF state: STANDBY HOT
*Jun 7 10:00:30.796: %RG_PROTOCOL-5-ROLECHANGE: RG id 1 role change from Standby to Active
*Jun 7 10:00:40.871: %RG_VP-6-BULK_SYNC_DONE: RG group 1 BULK SYNC to standby complete.
*Jun 7 10:00:40.872: %RG_VP-6-STANDBY_READY: RG group 1 Standby router is in SSO state
Т.е текущая конфигурация делает Failover на Hot Standby соседа при падении любого из Traffic Interfaces входящих в RG1, также при падении маршрутизатора целиком.
Комментариев нет:
Отправить комментарий