一、引言
本技术文档描述在不使用传统 HA 模式的情况下,利用 Amazon ElastiCache for Redis 作为外部状态存储中心,配合 Gateway Load Balancer (GWLB) 实现 Palo Alto Networks VM-Series 防火墙集群的会话弹性(Session Resiliency)。该方案支持多节点水平扩展,并确保在实例故障切换时业务连接不中断。
二、系统架构概述
在该架构中,VM-Series 防火墙以独立(Standalone)模式运行于 GWLB 后端。会话状态不再通过传统的 HA 链路(HA1/HA2)在对等节点间同步,而是统一离散存储于集中的 Redis 集群中。
核心组件:
GWLB & GWLBE: 负责流量的封装(GENEVE)与负载均衡。
VM-Series 集群: 多个独立的实例,均配置为连接至同一 ElastiCache 资源池。
Amazon ElastiCache (Redis): 存储活动的会话元数据,充当分布式状态数据库。
三、会话弹性实现机制
3.1 状态推送 (Session Offload/Push)
当流量穿过防火墙并建立会话后,VM-Series 会将其会话信息(包括 5-tuple、NAT 转换、安全策略结果、TCP 序列号等)异步推送到 Redis 集群。
非阻塞同步: 状态推送过程不会显著增加数据包的处理延迟。
全局可见性: 只要会话信息进入 Redis,集群内所有健康的防火墙实例均具备接管该会话的能力。
3.2 故障接管与状态拉取 (Session Lookup/Pull)
当 GWLB 检测到某个防火墙实例故障并执行流量重定向时:
流重定向: GWLB 将受影响的流量报文分发至集群中另一个健康的实例(实例 B)。
本地未命中: 实例 B 接收到非 SYN 报文(存量流),在其本地会话表中未找到匹配项。
Redis 查询: 实例 B 立即根据报文特征查询 Redis 数据库。
本地重建: 若查询成功,实例 B 从 Redis 下载该会话的状态信息并重构本地会话表。
透明转发: 实例 B 完成报文校验并转发。
四、故障场景下的详细处理流程
依据拓扑设计,当后端防火墙发生单点或可用区级故障时,处理逻辑如下: