使用Terraform为GCP vSocket站点配置高可用性(HA)

Prev Next

本文描述了如何为GCP vSocket站点部署高可用性(HA)配置。

概概览

您可以通过在不同的区域部署两个vSocket,并将Google Cloud负载均衡器放置在它们的局域网接口前来配置GCP上的Cato vSockets高可用性(HA)。 负载均衡器提供一个单一的静态IP地址,内部资源用于连接到vSockets。 它持续监控每个vSocket的健康状态,并仅将流量转发到活动(主)vSocket。 这可以是主要Socket或者在故障转移的情况下为辅助Socket。

此外,vSockets使用虚拟路由冗余协议(VRRP)在它们之间交换状态信息。当次要Socket处于待机模式时,它会报告给负载均衡器为不健康,因此仅将流量转发到活动vSocket。 负载均衡器健康检查和VRRP共同提供了自动故障切换,同时最小化中断。典型的故障切换时间大约为3–5秒。

注意:

GCP中用于HA的vSocket最低支持版本是24.0.20395。

GCP中的HA vSocket配置完全依赖负载均衡器将流量引导到活动vSocket。

GCP vSocket故障转移工作流程

这是工作流程,当主要活动vSocket在GCP站点故障转移到辅助备用时。

  1. 在正常操作中,主要vSocket具有活动角色,而辅助vSocket具有备用角色。

    1. 负载均衡器探测Sockets以获取其健康状态。 主要报告其健康,辅助报告其不健康。

    2. 主要和辅助Sockets通过LAN使用VRRP协议进行通信。

    3. 负载均衡器IP将流量引导到主要vSocket的IP。

    4. LAN路由表前缀使用负载均衡器IP作为下一跳。

  2. 主要(活动)vSocket下降。

    1. 辅助(备用)vSocket停止接收来自主要vSocket的keepalive包。

    2. 辅助vSocket承担活动(主)角色,并开始向负载均衡器报告健康。

    3. 负载均衡器停止接收来自主要vSocket的响应,现在仅将流量引导到辅助vSocket。

  3. 辅助vSocket现在是活动的vSocket,并且在站点双向传递流量。

  4. 当主要vSocket恢复时,它恢复活动角色,而辅助vSocket返回到备用状态。 负载均衡器现在将流量重新导回主要vSocket。

Terraform部署的先决条件

  • 一个具有权限创建以下资源的GCP项目:

    • VPC和子网

    • 计算实例

    • 防火墙规则

    • 负载均衡器

    • 健康检查

    • 静态IP

    • 服务账户

  • Terraform已安装并认证到GCP

  • Terraform模块所需的Cato账户凭证或令牌

  • 目标区域的两个可用性区域(例如us-central1-a和us-central1-b)

  • (可选)保留指向负载均衡器静态IP地址的DNS名称

  • 最低vSocket版本:24.0.20395

参考架构

  • 每个vSocket包括三个接口:MGMT、WAN和LAN。 LAN接口参与VRRP以进行状态同步。

  • 负载均衡器在LAN侧进行操作,为内部客户端提供一致的IP地址。

  • 健康检查探测每个vSocket的LAN接口。 只有向负载均衡器报告健康的实例能够接收流量。

  • VRRP确保两个vSockets之间的状态同步。

GCP_HA_Diagram.png

使用Terraform部署GCP vSocket站点的HA

所有所需资源(VPC、vSockets、负载均衡器和健康检查)应该在单个Terraform堆栈中定义。

在Terraform Registry中提供的官方Cato vSocket Terraform模块包含关于高可用性配置的详细文档和示例。 有关GCP HA模块的更多信息,请参见 此处。

扩展GCP中的HA配置:

  1. 使用相同方法在不同区域部署两个vSocket

  2. 在LAN侧添加一个负载均衡器资源以正面两个vSocket

  3. 允许两个vSockets之间进行VRRP通信以进行状态同步

注意:

参考官方Cato vSocket Terraform模块文档,了解模块输入、输出和高级配置选项的详细信息

管理GCP高可用性

本节解释如何管理GCP站点的HA:

  • 显示每个 vSocket 的 HA 状态

  • 更改站点的负载均衡器IP

  • 更改vSockets的管理IP地址

  • 禁用站点的HA并移除辅助vSocket

显示高可用性信息和状态

站点的 网络 > 站点 > Socket 页面显示主要和辅助vSockets的HA状态。

条目

说明

HA 状态

站点的高可用性状态(已准备或 未准备)只有当每个HA状态指示器为OK时才显示为准备

已连接(状态指示器)

状态allow.svg指示两个vSockets都具有到Cato Cloud的WAN连接

保持活动(状态指示器)

状态allow.svg表明一个vSocket是主控一个是备用(如果两个vSocket都为状态主控,则存在HA裂脑问题)

相同版本(状态指示器)

状态allow.svg指示两个vSocket正在运行相同的Socket版本

更改站点的IP设置

如果您更改了GCP中vSockets的IP地址设置,您需要在Cato管理应用程序中更新相同的设置。 这些是您可以配置的设置:

  • 本地范围子网 - 使用站点的 网络 部分

  • 负载均衡器IP - 使用站点的网络或高可用性部分(新值自动在另一部分中更新)

  • 管理IP - 使用站点的高可用性部分

更改本地范围子网

使用网络部分更改本地范围子网。

要更改站点的原生范围子网:

  1. 从导航菜单中,点击 网络 > 站点 并选择站点。

  2. 从导航菜单中选择 站点配置 > 网络。

  3. 编辑本地范围,输入子网的新值。

  4. 点击应用. 编辑IP范围面板关闭。

  5. 点击 保存。

更改负载均衡器IP和管理IP

使用高可用性部分更改负载均衡器IP和管理IP。 您也可以在网络部分更改负载均衡器IP。

要更改站点的负载均衡器或管理IP:

  1. 从导航菜单中,点击 网络 > 站点 并选择站点。

  2. 从导航菜单中,点击站点配置 > Socket。

  3. 展开高可用性配置部分。

  4. 输入新的主要管理IP。

  5. 输入新的辅助管理IP。

  6. 输入新的LAN负载均衡器IP。

  7. 点击 保存。

禁用GCP站点的高可用性

您可以从GCP站点移除辅助vSocket,并禁用该站点的HA。 从Cato管理应用程序移除辅助vSocket后,已部署的vSocket将无法再连接到Cato Cloud。 站点的设置恢复为单个vSocket的配置:

  • 高可用性 部分被禁用,并且不再出现于页面上

  • 在 网络 部分,本地IP替代了负载均衡器IP

注意:

注意: 您无法撤销取消分配Socket操作。 辅助vSocket的序列号不再有效。

如果您想再次添加辅助vSocket,必须在VM上安装新的vSocket,并使用新的序列号。

要禁用GCP站点的HA:

  1. 从导航菜单中,点击 网络 > 站点 并选择站点。

  2. 从导航菜单中,点击站点配置 > Socket。

  3. 从次要 vSocket 的操作菜单中,点击取消分配。

  4. 在警告窗口中,点击确定。 该站点的 HA 已禁用,并且次要 vSocket 已从中移除。

已知局限性

  • 在 GCP HA 部署中,返回主要 vSocket 的时间可能比回到次要 vSocket 的时间更长。 在故障恢复期间,流量可能会中断最多 8 秒。

  • 在 GCP HA 部署的分裂脑状态期间,现有的连续 ping 流量可以通过主要和次要 vSocket 继续进行。 这可能会导致 GCP 负载均衡器健康检查显示两个 vSocket 都健康,从而使故障转移验证变得不太清晰,尽管在分裂脑状态之后发起的新流量只通过次要 vSocket 路由。