网络工程 · 2 12 月, 2023 0

拆弹专家:关于PaloAlto设备HA连接的断开顺序问题

发生什么事了

在机房对两台PaloAlto防火墙设备进行冗余测试。环境中有两台设备(A和B),以“Active-Active”模式工作。两台设备通过三根网线(分别设置为HA1,HA2,HA3)相互连接,实现数据同步和状态确认等。

UPLINK 1       UPLINK 2
  ||             ||
------         ------
|    |-- HA1 --|    |
|FW A|-- HA2 --|FW B|
|    |-- HA3 --|    |
|----|         |----|
  ||             ||
DOWNLINK 1     DOWNLINK 2

现在对HA3进行拔线操作。结果线一拔,A机上下行接口居然一下子全都down掉了。。
好在上行接口连接的设备也是冗余构造(主active-从standby),A机直连的主机检测到下行线路异常立即启动主从切换,避免了更大悲剧的发生。

为什么会这样

事后通过日志和客服得知,在HA1和HA2(其实主要是HA1)没有断开的情况下,首先断开HA3会使处在“Active-Secondary”模式的设备进入“Non-functional”模式,从而导致上下行接口被关闭。
喵喵喵,怎么感觉出现了很多新名词?

Active模式的优先级

虽然是“Active-Active”模式,但在相互连通的PaloAlto设备之间,“Active”模式也是有区别的。
具体来说,事发时A和B所处的模式分别为:

A:Active-Secondary
B:Active-Primary

Primary和Secondary是怎么决定的

1. ID比较

两台设备在初次HA关系形成时会进行协商,设备ID较小的那台自动成为Primary。
ID较大的那台如果原先是Primary,那么HA形成时会经历如下迁移:

Active-Primary -> Tentative -(5s)-> Active-Secondary

这里出现了新的状态“Tentative”,会持续5秒。在这5秒之中,设备自己不处理数据,而会通过HA3将数据交由Primary设备处理。(因此需要确保Primary设备此时可用)

2. 使用中状态迁移

已经建立HA的两机会因为种种事件导致状态迁移。目前通过实验已知的迁移规则如下:
※Active-Primary机和Active-Secondary机这里简称P和S

HA事件 P事件 P状态 S事件 S状态
关机 启动后变成S 变成P
不变 关机 不变
HA3掉线 不变 变成Non-functional
HA1掉线 不变 变成P

简而言之,P停机会导致P和S角色互换,并且不会因为原P重启而自动切回去。
这也是此次冗余测试开始前B机变成Primary可能的原因。毕竟之前各种试验,A机已经不知道被停机过多少次了。

3. 手动切换

“Active-Primary”和“Active-Secondary”是可以通过设置手动切换的。生产环境不建议这么做,因为切换会导致一时的断网。

如何避免悲剧发生

如果需要在不断网的前提下断开两台PaloAlto的HA连接,需要按照如下顺序:

HA1 → HA2 → HA3

只要HA1断开,Secondary机会变成Primary。这之后再断开别的HA连接,状态都不会变了。
同理,重连也要按照如下顺序:

HA3 → HA2 → HA1

总之只要HA1没连上,两台机器就无法互通有无,自然也就没了状态互换一说。
整的跟拆炸弹似的😅💣