基于 GARP 的 HA 架构(已放弃)
NES HA 架构是基于 Keepalived 的心跳链路检查 + GARP 的数据链路切换实现的主备架构。
Keepalived 的心跳链路检查
因为主备架构无法 100% 避免脑裂情况的出现,只能尽量的避免:
Keepalived 进程进行绑核和划分固定内存,避免主机卡顿导致的脑裂。
Keepalived 使用 bond 冗余的心跳链路。
GARP 的数据链路切换
基于 GARP 实现的数据链路切换:GARP 是一种特殊的 ARP 请求,报文中的 dstIP 和 srcIP 地址相同,且 srcMAC 为自身网卡 MAC 地址,dstMAC 为全 0/f。使用 GARP 可以让收到这个通告的交换机(或主机)的 ARP 缓存表被强制刷新(本机的 MAC 地址和直连交换机端口的映射关系),以此来实现交换机数据链路对的切换。当 NES 主机升级为 Master 时:
Upstream 发 EPC的 MAC 和 IP 地址构造的 GARP 报文,表示去 EPC 的数据报文走直连 NES Upstream 的端口(去 EPC 的报文从 Upstream 进入 NES 进行转发)。
Downstream 和 LBP 发 eNB 的 MAC 和 IP 地址构造的 GARP 报文,表示去 eNB 的数据报文走直连 NES Downstream 或 LBP 的端口(去 eNB 的报文从 Downstream 或 LBP 进入 NES 进行转发)。
注:Upstream、Downstream、LBP 本身没有 MAC 和 IP 地址,为了实现 “串联无感知” 的效果,Upstream 使用的是 eNB 的 MAC/IP,Downstream 使用的是 EPC 的 MAC/IP,LBP 使用的是 MEC GW 的 MAC/IP。
示例:
eNB: 192.168.1.1/90:E2:BA:6F:79:DD
EPC: 192.168.1.2/E4:1D:2D:17:79:70
MEC GW: 10.0.0.200/E4:1D:2D:17:7A:10
VLAN 100: eNB、NES Upstream
VLAN 200: EPC、NES Downstream
VLAN 300: MEC GW、NES LBP
当 NES1 升为 Master 时:
Upstream 发出:
srcIP: 192.168.1.2
dstIP: 192.168.1.2
srcMAC: E4:1D:2D:17:79:70
dstMAC: FF:FF:FF:FF:FF:FF
Downstream 发出:
srcIP: 192.168.1.1
dstIP: 192.168.1.1
srcMAC: 90:E2:BA:6F:79:DD
dstMAC: FF:FF:FF:FF:FF:FF
LBP 发出:
srcIP: 192.168.1.1
dstIP: 192.168.1.1
srcMAC: 90:E2:BA:6F:79:DD
dstMAC: FF:FF:FF:FF:FF:FF
交换机 MEC/Port 映射表关系:
NES1 -> NES2 切换时:Port2 -> Port5(切了 3 个端口,分别对应 Up、Down、LBP)
NES1
100 79:dd Port1 Eth1/1/2
200 79:dd Port2 Eth1/1/3
300 79:dd Port2 Eth1/1/3
200 79:70 Port3 Eth1/2/1
100 79:70 Port2 Eth1/1/3
300 7A:10 Port4 Eth1/2/2
NES2
100 90:E2:BA:6F:79:DD Port1 Eth1/1/2
200 90:E2:BA:6F:79:DD Port5 Eth1/2/4
300 90:E2:BA:6F:79:DD Port5 Eth1/2/4
200 E4:1D:2D:17:79:70 Port3 Eth1/2/1
100 E4:1D:2D:17:79:70 Port5 Eth1/2/4
300 E4:1D:2D:17:7A:10 Port4 Eth1/2/2