一、引言

本技术文档描述在不使用传统 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 检测到某个防火墙实例故障并执行流量重定向时:

  1. 流重定向: GWLB 将受影响的流量报文分发至集群中另一个健康的实例(实例 B)。

  2. 本地未命中: 实例 B 接收到非 SYN 报文(存量流),在其本地会话表中未找到匹配项。

  3. Redis 查询: 实例 B 立即根据报文特征查询 Redis 数据库。

  4. 本地重建: 若查询成功,实例 B 从 Redis 下载该会话的状态信息并重构本地会话表。

  5. 透明转发: 实例 B 完成报文校验并转发。

四、故障场景下的详细处理流程

依据拓扑设计,当后端防火墙发生单点或可用区级故障时,处理逻辑如下:

阶段

动作

技术细节

检测期

GWLB 健康检查失效

基于 TCP/HTTP 探测,GWLB 在秒级内确认后端实例不可达。

路由切换

GWLB 重平衡

GWLB 将原本发往故障实例的 GENEVE 封装流切换至新实例。

会话恢复

Redis 状态同步

新实例通过专用 API 从 ElastiCache 获取连接上下文,无需重新握手。

结果

会话保持 Established

客户端应用(如 ssh 访问、长连接 TCP)无感知切换。

当个好马喽