本文解释如何配置具有两个 vSocket 的站点,以为 Microsoft Azure 云中的站点提供高可用性 (HA)。
Azure中高可用性vSocket的概览
为了在 Azure 站点中为 vSocket 提供冗余,请在同一个 Azure 虚拟网络 (VNet) 中部署两个 vSocket,并将它们设置为高可用性配置。 vSockets在活动/被动模式下运行,LAN链接用于在vSockets之间发送停机检测消息。
Azure的高可用性配置使用浮动IP地址,该地址绑定到活动vSocket的LAN接口。 当发生故障切换时,浮动 IP 移动到次要 vSocket 的 LAN 接口。 路由表将该浮动IP用作发送到Cato Cloud的流量的下一跳。
Azure HA 支持多个可用性区域。 或者,您可以使用可用性集,以确保两个vSocket部署在Azure中不同的故障和更新域中。
Azure高可用虚拟网络示意图
以下网络图显示了一个 Azure 站点的 HA vSocket 配置示例。

主要和次要 vSocket 在同一个 VNet 内。 LAN 接口是 10.102.2.10 (主要) 和 10.102.2.11 (次要)。 浮动IP是 10.102.2.200,并配置为 LAN 路由表的下一跳。
该网络的正常流量流向是:
VM1 发送流量到互联网。
根据LAN路由表,该流量的下一跳为10.102.2.200,该地址被配置为主vSocket的LAN接口的次要IP地址。
主vSocket处于活动状态,并通过WAN接口向互联网发送流量。
Azure vSocket故障转移工作流
这是当主要活跃的 vSocket 切换到次要备用 vSocket 时在 Azure 站点中的工作流。 下图说明了故障切换,数字对应于下面步骤中的项目:

在正常操作中,主要vSocket具有活动角色,而辅助vSocket具有备用角色。
浮动IP(LAN 接口上的次要 IP 地址)连接到主要 vSocket(项目 1a)。
LAN 路由表前缀使用浮动IP作为下一跳(项目 1b)。
主要(活跃的)vSocket 出现故障(项目 2)。
次要(备用)vSocket 停止接收来自主要 vSocket 的保持活动数据包(项目 2a)。
次要 vSocket 向 Azure API 网关发出 API 调用,以对每个 vSocket 上的 LAN 接口进行以下更改:
从主要 vSocket 的 LAN 接口中移除浮动IP(次要 IP 地址)(项目 3a)。
将浮动IP添加为次要 vSocket 上的 LAN 接口的次要 IP 地址(项目 3b)。
次要 vSocket 现在是活跃的 vSocket,并为站点双向传递流量(项目 4)。
当主vSocket恢复后,它重新承担活动角色,次要vSocket恢复到备用状态。 (主vSocket发出API调用,将浮动IP移回其LAN接口的次要IP地址。)
注意:
由于与Azure架构相关的原因,网络接口配置更新可能需要最多120秒,并可能导致HA故障转移的延迟。
Azure高可用性的先决条件
Azure 中的高可用性支持使用 Socket 版本 11.0 或更高版本的 vSocket
从 Cato 仓库下载 Azure HA 配置脚本,参见 复制 Azure vSocket VHD 镜像使用 SAS
两个vSockets必须是相同的Azure VM实例类型(例如,D2s v4)
Azure vSocket 必须能够访问公共 DNS 服务器。 确保 VNet 未配置为仅使用私有 DNS 服务器
注意: 如果对 vSocket 使用的 VNET 进行了任何 DNS 更改,则必须重启该 vSocket VM。如果您将 VNet 和 vSocket VM 使用单独的资源组,请确保存储容器 blob 在与 VM 和 VHD 映像相同的资源组中
每个 vSocket 需要出站连接到以下资源:
VirtualNetwork - DNS 和 HTTP
Azure 资源管理器 - 超文本传输协议安全
管理接口需要互联网连接以访问公共 DNS 服务器(如果已配置,UDP/53)和 management.azure.com(TCP/443)
设置管理员权限以配置高可用性
本节说明管理员配置 vSocket HA 的正确 Cato 和 Azure 权限。 如果您没有正确的权限,则 Cato HA 脚本可能无法在 vSocket 之间创建 HA 配置。
必须拥有 Cato 管理应用程序的管理员权限和 Azure 的所有者权限
如果您在 Azure 中使用特权身份管理 (PIM) 或任何身份令牌机制,请在运行 HA 脚本之前将必要资源组分配最大权限最大权限
如果有多个 Azure 资源组,那么您必须拥有两个资源组的所有者权限
使用可用性区域配置Azure高可用性
您可以选择在 HA 配置脚本的一部分中将每个 VM 分配给不同的 Azure 可用性区域,以保护您的应用程序和数据免受 Azure 数据中心故障的影响。 在运行 HA 脚本之前创建可用性区域。
您不能将 VM 分配给使用不同可用性集的不同可用性区域。
注意:
Azure 仅支持标准 SKU 公共IP地址用于可用性区域(和其他区域冗余配置)。 在部署 vSocket HA 配置之前,确保您配置了正确的 IP 地址 SKU。
下一个网络图显示了一个 Azure 站点的不同可用性区域的 HA vSocket 配置示例。

已知局限性
对于 Socket 版本早于 v14.0,使用主 vSocket LAN IP 进行 BGP 对等。 这在切换到次要 vSocket 时不会生效。
从 v14.0 开始,在 vSocket HA 配置中,使用浮动IP进行BGP 对等。 确保在邻近的BGP路由器中定义浮动IP。
由于与Azure架构相关的原因,网络接口配置更新可能需要最多120秒,并可能导致HA故障转移的延迟。
对于现有配置,要将VM分配到可用性区域,您必须创建新VM并重新部署vSockets(请参阅 从市场部署Azure vSockets)
在Azure中部署vSocket高可用性
将vSocket部署在Azure虚拟机(VMs)上,作为站点的主要和次要vSocket。
对于Azure HA配置,在故障转移期间,有一个API调用会自动将浮动IP添加到备用vSocket的LAN接口,并删除配置在LAN接口上的设置(包括LAN的NSG)。 不要手动在vSocket的LAN接口上配置浮动IP。 Cato HA 脚本将浮动 IP 分配给主 vSocket LAN 接口,然后重新启动 vSockets(请参见下方步骤 7 和 8)。
这是部署vSocket HA配置的高级工作流程。
对于新建站点,在Cato管理应用程序中创建一个新站点,并运行Cato Azure vSocket脚本以部署主要vSocket。 (对于现有站点,跳过此步骤。)
在创建站点后,Cato 管理应用程序为其分配一个唯一的序列号 (S/N)。 我们建议您将序列号复制并粘贴到文本文件中。
验证主要vSocket是否运行Socket版本11.0或更高。
在Cato管理应用程序中将次要vSocket添加到站点。
使用Cato Azure vSocket脚本部署次要vSocket。 两个vSockets必须在相同的VNet。
您需要为次要vSocket创建的唯一虚拟资源是新的网络接口,用于WAN、LAN和MGMT子网。
验证主要和次要vSocket是否均已连接到Cato Cloud。
运行Cato HA脚本以将HA配置应用于vSockets。
重新启动主要和次要vSocket。
更新Azure路由表以使用浮动IP作为下一跳。
确认vSockets的HA状态,并从Socket WebUI运行API测试。
注意:
在为站点配置IP设置时,请确保不要使用Azure保留的IP地址。 您不能在子网CIDR块中使用前四个IP地址和最后一个IP地址。
有关Azure保留IP地址的更多信息,请参阅Azure文档。
在Azure中部署主vSocket
完成以下步骤,在VM上部署主要vSocket。 对于现有Azure站点,将主要vSocket升级到版本11.0或更高。 如果您希望将vSocket分配到一个可用性集,请参阅下方 将vSocket VMs分配到可用性集(可选)。
然后继续下方的 将次要vSocket添加到Azure站点。
要为新站点部署主要vSocket:
向Cato管理应用程序添加一个新的Azure站点。
在VM上安装主要vSocket。
请记得在相同的资源组中使用这两台vSocket VM。
如有必要,为 vSocket VM 创建可用性集。
有关在Azure中安装vSocket的更多信息,请参阅 从市场部署Azure vSockets。
将vSocket VMs分配到可用性集(可选)
vSocket脚本(create_vm_from_vhd.sh)允许您将vSocket分配给可用性集。 在vSocket HA配置中,当您想确认两个vSockets都被分配到不同的故障域和更新域时,主要使用此选项。 您必须在运行CatovSocket脚本之前创建可用性集。
注意事项:
Azure不允许您在创建VM后将其分配给可用性集
您不能将可用性集分配给使用不同可用性区域的VM
创建一个新的可用性设置并按如下所示配置设置:
将它分配到与VM相同的资源组
将故障域和更新域设置为2
以下截图显示了vSocket可用性设置示例:

将次要vSocket添加到Azure站点
当卡托管理应用程序检测到主vSocket升级到版本11.0或更高时,添加次要Socket选项将在网络 > 站点 > 站点配置 > Socket页面中显示。
当您将次要vSocket添加到站点时,会弹出一个窗口,您可以在其中输入以下设置:
局域网接口 IP - 辅助 vSocket 的局域网接口的 IP 地址
局域网浮动 IP - 用于 Azure HA 配置的浮动 IP 的 IP 地址
Cato管理应用程序使用LAN接口IP地址作为次要vSocket的管理IP地址。 此LAN接口也用于HA保持活动数据包。
在您将次要vSocket添加到站点后,Cato管理应用程序会执行以下操作:
生成新 vSocket 的序列号(此序列号用于运行 Cato 脚本以在虚拟机上安装 vSocket)
启用该站点的 高可用性配置 部分
修改 网络 部分中的原生范围,本地 IP 被替换为浮动 IP
有关 HA 站点网络段的更多信息,请参见下文 Cato 管理应用程序中 Azure 高可用性网络段概览。

为 HA 配置 Azure 站点:
从导航菜单中,选择 网络 > 站点,然后选择 Azure 站点。
从导航菜单中选择站点配置 > Socket。
单击 添加次要套接字 。 添加次要vSocket(高可用性)窗口打开。
配置局域网 IP 设置:
输入局域网接口IP 。 此值被用作 MGMT IP 和保持活动包。
输入局域网浮动IP 。
点击应用。 浮动 IP 设置配置并复制到 套接字 > 高可用性配置部分。
应用程序在 集成的应用程序 表中显示,状态为 已连接。
复制并保存次要vSocket的序列号(S/N)。
在您在 VM 上安装次要 vSocket 时,使用此 S/N。
Socket页面的更改
在将次要vSocket添加到站点后,在Socket页面中,LAN1链接的目标会自动设置为LAN & HA。
在Azure中部署次要vSocket
在与主要 vSocket 相同的 Azure VNet 中创建并部署次要 vSocket。
确保站点的所有虚拟资源都在同一个 Azure 资源组中。
根据您的组织需求,您可以将 VNET 分配给一个资源组,并将其他虚拟资源分配给不同的资源组。
如果需要,为vSocket VM创建可用性集。
对主要和次要 vSocket 使用相同的子网。
为每个子网创建新的虚拟接口。
验证主要和次要 vSocket 均与 Cato 云有连接性。
运行 Cato Azure vSocket 脚本:
选择次要 vSocket 的资源。
使用 Cato 管理应用程序生成的 Azure 中次要 vSocket 的序列号。
有关在Azure中安装vSocket的更多信息,请参阅 从市场部署Azure vSockets。
使用不同的资源组用于VNET和VMs
Cato HA脚本(create_ha_settings.sh)允许您将VNET分配给一个资源组,并为其他虚拟资源(NIC、vSocket、存储容器、路由表等)使用不同的资源组。 在运行 Cato HA 脚本时,会有单独的问题要求您分配 VNET 资源组和 VM 资源组。
如果您为 VNET 和 VM 使用相同的资源组,请确保在 Cato HA 脚本中的两个选项都选择相同的资源组。
注意:
确保 VHD 图像位于 VM 资源组中的存储容器 blob 中。
运行卡托高可用性脚本
在您将次要vSocket部署到VNet后,两个vSocket都具有主控角色(split-brain)。 运行 Cato HA 脚本 create_ha_settings.sh 将 HA 配置应用于 vSocket。 有关下载包含Cato HA脚本的文件的更多信息,请参见Socket和vSocket图像文件(您必须登录才能查看本文)。
卡托高可用性脚本创建了一个托管身份,它是为虚拟机(高可用性的成员)创建并分配的身份,并赋予贡献者角色。 此外,Cato HA 脚本为 HA 组的每个成员创建了两个自定义脚本,这些脚本创建包含故障转移事件中 VM 所需的所有信息的配置文件。 这包括 NIC 的 subscription_id 名称、VM 的位置等。
重要:
在运行 Cato HA 脚本之前:
主要和次要 vSocket 必须与 Cato 云有连接性
确保您具有正确的 Azure 管理员权限,请参见上文 设置管理员权限以配置高可用性
运行 Cato HA 脚本:
在高可用性部分中,确认主要和次要 vSocket 均与 Cato 云有连接性:
每个 vSocket 的 连接到Cato Cloud 状态显示 已连接
请参见下文 在 Cato 管理应用程序中显示高可用性状态
运行 Cato HA 脚本 create_ha_settings.sh 将 HA 配置应用于 vSocket。
重启具有主要和次要 vSocket 的虚拟机。
更新 Azure 中的相关路由表条目,以使用浮动IP作为下一跳。
确认Azure vSockets的高可用性状态
在成功运行 HA 脚本后,验证 vSocket 是否正确配置了 HA 功能:
在 高可用性 部分检查 HA 状态
从 Socket WebUI 中 ping 浮动IP并测试 HA API 调用
有关 HA 配置部署相关问题的帮助,请参阅 故障诊断 Azure HA 部署。
在卡托管理应用显示高可用性状态
站点的 高可用性 部分显示 vSocket 的 HA 状态。 部署次要 vSocket 后,它会自动连接到站点。
要确认站点的高可用性状态:
从 Cato 管理应用程序的导航菜单中,单击 网络 > 站点。
从导航菜单中,点击 站点监控 > 网络分析。
从页面顶部验证以下项目的状态:
状态 是 已连接
HA 状态 是 就绪
主控 是 主要
Socket 是 vSocket Azure

有关 HA 和故障转移行为的更多信息,请参阅 Socket 高可用性(HA):背景和故障转移条件。
从Socket WebUI测试高可用性
您可以使用 Socket WebUI 中的网络工具来测试 vSocket 的 HA 功能。 您可以ping高可用性配置的浮动IP,以验证其已正确配置。 高可用性 部分显示局域网浮动IP。 您需要为主要和次要 vSocket 运行测试。
vSocket 执行对 Azure API 代理的 API 调用,以验证角色和身份设置已由 HA 脚本正确配置。 它还验证 vSocket 是否能够成功与 API 代理通信。
要了解有关使用 Socket WebUI 的更多信息,请参阅 访问 Socket WebUI。
要测试 Azure HA 配置:
从导航菜单中选择 站点配置 > Socket。
从主要 vSocket 的 操作 下拉菜单中,选择 Socket WebUI。
Socket WebUI 在新标签页中打开。
点击 工具 标签页。
在 网络工具 部分,点击 Ping 标签页。
Ping 浮动 IP:
在 通过路由 中,选择 LAN1。
在 主机名/IP 中,输入浮动IP。
单击运行。 窗口显示 ping 是否成功或失败。
在 网络工具 部分,点击 API 测试工具 标签页。
点击 运行测试。 窗口显示 HA API 测试是否成功或失败。
为次要 vSocket 重复步骤 2-7。
故障排除失败的Azure API测试
如果 Azure API 测试失败,将显示错误消息以帮助您排查问题。
API 测试错误消息 | 建议的故障排除步骤 |
|---|---|
Azure API 测试失败 - 无法认证到 API 代理。 确保 Azure 访问控制 (IAM) 设置正确。 | Azure 管理员没有足够的权限对虚拟资源进行更改。 见上文,设置管理员权限以配置高可用性。 |
Azure API 测试失败。 验证 vSocket VM 实例上的 NIC 设置是否正确。 |
|
处理用于Azure高可用性站点的网络段
本节解释如何使用网络部分管理Azure HA站点的网络段。
在卡托管理应用中Azure高可用性网络段的概览
当您将次要vSocket添加到Cato管理应用程序时,网络部分中的网络段会自动更新,以包含浮动IP的设置。 浮动IP取代站点本地范围的本地IP。
添加路由范围(静态路由)
您可以像物理Socket站点一样向Azure HA站点添加路由范围。
默认Azure路由器(VNet路由器)的IP地址是原生范围子网的第一个主机IP地址
如果您在Azure环境中使用第三方虚拟设备(例如,防火墙),请确保IP地址在站点的原生范围内
您可以在Cato管理应用程序中的站点配置 > 套接字 > 高可用性配置为站点配置浮动IP地址
管理Azure高可用性
本节解释如何管理Azure站点的HA:
显示每个vSocket的HA状态
更改站点的浮动IP
更改vSockets的管理IP地址
禁用站点的HA并移除辅助vSocket
显示高可用性信息和状态
站点的网络 > 站点 > Socket页面显示主要和辅助vSockets的HA状态。
项目 | 描述 |
|---|---|
HA状态 | 站点的高可用性状态(就绪 或 未就绪),仅在每个 HA 状态指示器正常时显示 就绪 |
已连接(状态指示器) | 状态 |
保持活动(状态指示器) | 状态 |
相同版本(状态指示器) | 状态 |
更改站点的IP设置
如果更改Azure中vSocket的IP地址设置,则需要在Cato管理应用程序中更新相同的设置。 这些是您可以配置的设置:
本地范围子网 - 使用站点的 网络 部分
浮动IP - 使用站点的网络或高可用性部分(新值会自动更新到另一部分)
管理 IP - 使用站点的 高可用性 部分
更改本地范围子网
使用 网络 部分更改原生范围子网。
要更改站点的原生范围子网:
从导航菜单中,点击网络 > 站点并选择Azure站点。
从导航菜单中,选择站点配置 > 网络。
编辑 本地 范围,输入新的 子网 值。
单击应用。 编辑IP范围面板关闭。
单击 保存。
更改浮动IP和管理IP
使用高可用性部分更改浮动IP和管理IP。 您还可以在网络部分更改浮动IP。
要更改站点的浮动或管理IP:
从导航菜单中,点击网络 > 站点并选择Azure站点。
从导航菜单中点击站点配置 > 套接字。
展开高可用性配置部分。
输入新的主要管理IP。
输入新的辅助管理IP。
输入新的局域网浮动IP。
单击 保存。
禁用Azure站点的高可用性
您可以从Azure站点移除次要vSocket并禁用该站点的HA。 从Cato管理应用程序移除辅助vSocket后,已部署的vSocket将无法再连接到Cato Cloud。 站点的设置恢复为单个vSocket的配置:
高可用性部分被禁用,并且不再出现于页面上
在网络部分,本地 IP 替换了浮动 IP
注意:
注意:您无法撤销 取消分配Socket 操作。 辅助vSocket的序列号不再有效。
如果您想再次添加辅助vSocket,必须在VM上安装新的vSocket,并使用新的序列号。
要为Azure站点禁用HA:
从导航菜单中,点击网络 > 站点并选择Azure站点。
从导航菜单中点击站点配置 > 套接字。
从次要 vSocket 的操作菜单中,点击取消分配。
在警告窗口中,点击确定。 该站点的 HA 已禁用,并且次要 vSocket 已从中移除。
分析高可用性事件
事件页面显示您帐户的所有高可用性连接事件。
解释高可用性事件字段
Socket HA和vSocket HA的事件和字段是相同的。 这些是HA事件:
字段 | 描述 |
|---|---|
Socket 角色 | 显示事件是由主要 vSocket 还是次要 vSocket 生成的 |
事件子类型 - Socket 故障转移 | 站点的切换进程已启动 |
有关在故障转移过程中生成的事件的更多信息,请参阅Socket HA故障转移事件。