发生什么事了
在机房对两台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没连上,两台机器就无法互通有无,自然也就没了状态互换一说。
整的跟拆炸弹似的😅💣