配置Azure vSockets的高可用性

本文解释如何配置具有两个 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 配置示例。

Azure_HA_Deployment.png

主要和次要 vSocket 在同一个 VNet 内。 LAN 接口是 10.102.2.10 (主要) 和 10.102.2.11 (次要)。 浮动IP是 10.102.2.200,并配置为 LAN 路由表的下一跳。

该网络的正常流量流向是:

  1. VM1 发送流量到互联网。

  2. 根据LAN路由表,该流量的下一跳为10.102.2.200,该地址被配置为主vSocket的LAN接口的次要IP地址。

  3. 主vSocket处于活动状态,并通过WAN接口向互联网发送流量。

Azure vSocket故障转移工作流

这是当主要活跃的 vSocket 切换到次要备用 vSocket 时在 Azure 站点中的工作流。 下图说明了故障切换,数字对应于下面步骤中的项目:

Azure_HA_Failover_Callouts.png
  1. 在正常操作中,主要 vSocket 扮演活跃角色,而次要 vSocket 坚持备用角色。

    1. 浮动IP(LAN 接口上的次要 IP 地址)连接到主要 vSocket(项目 1a)。

    2. LAN 路由表前缀使用浮动IP作为下一跳(项目 1b)。

  2. 主要(活跃的)vSocket 出现故障(项目 2)。

    1. 次要(备用)vSocket 停止接收来自主要 vSocket 的保持活动数据包(项目 2a)。

  3. 次要 vSocket 向 Azure API 网关发出 API 调用,以对每个 vSocket 上的 LAN 接口进行以下更改:

    1. 从主要 vSocket 的 LAN 接口中移除浮动IP(次要 IP 地址)(项目 3a)。

    2. 将浮动IP添加为次要 vSocket 上的 LAN 接口的次要 IP 地址(项目 3b)。

  4. 次要 vSocket 现在是活跃的 vSocket,并为站点双向传递流量(项目 4)。

  5. 当主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 服务器

  • 如果您将 VNet 和 vSocket VM 使用单独的资源组,请确保存储容器 blob 在与 VM 和 VHD 映像相同的资源组中

  • 每个 vSocket 需要出站连接到以下资源:

    • VirtualNetwork - DNS 和 HTTP

    • Azure 资源管理器 - HTTPS

    • 管理接口需要互联网访问公共 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 配置示例。

Azure-HA - 可用性区域 (KB).png

已知限制

  • 对于v14.0以前的Socket版本,主要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配置的高级工作流程。

  1. 对于新建站点,在Cato管理应用程序中创建一个新站点,并运行Cato Azure vSocket脚本以部署主要vSocket。 (对于现有站点,跳过此步骤。)

  2. 创建站点后,Cato管理应用程序将为其分配一个唯一的序列号(S/N)。 我们建议您将序列号复制并粘贴到文本文件中。

  3. 验证主要vSocket是否运行Socket版本11.0或更高。

  4. 在Cato管理应用程序中将次要vSocket添加到站点。

  5. 使用Cato Azure vSocket脚本部署次要vSocket。 两个vSockets必须在相同的VNet。

    您需要为次要vSocket创建的唯一虚拟资源是新的网络接口,用于WAN、LAN和MGMT子网。

  6. 验证主要和次要vSocket是否均已连接到Cato Cloud。

  7. 运行Cato HA脚本以将HA配置应用于vSockets。

  8. 重新启动主要和次要vSocket。

  9. 更新Azure路由表以使用浮动IP作为下一跳。

  10. 确认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:

  1. 向Cato管理应用程序添加一个新的Azure站点。

  2. 在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可用性集的示例:

AvailabilitySet.png

将次要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的vSocket序列号(当您运行Cato脚本在VM上安装vSocket时,将使用此序列号)

  • 启用该站点的高可用性配置部分

  • 修改网络部分的原生范围,本地 IP 被浮动 IP 替换

有关 HA 站点网络段的更多信息,请参见下文 Cato 管理应用程序中 Azure 高可用性网络段概览

Azure_vSocket_HA.png

配置 Azure 站点以实现 HA:

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

  2. 在导航菜单中,选择站点配置 > 套接字

  3. 点击添加次要套接字添加次要vSocket(高可用性)窗口打开。

  4. 配置 LAN IP 设置:

    1. 输入LAN 接口 IP。 此值用作 MGMT IP 和保持活动数据包。

    2. 输入LAN 浮动 IP

  5. 点击应用。 浮动 IP 设置已配置并复制到套接字 > 高可用性 配置部分。

  6. 点击保存

  7. 复制并保存次要vSocket的序列号(S/N)。

    在您在 VM 上安装次要 vSocket 时,使用此 S/N。

Socket页面的更改

在将次要vSocket添加到站点后,在Socket页面中,LAN1链接的目标会自动设置为LAN & HA

在Azure中部署次要vSocket

在与主要 vSocket 相同的 Azure VNet 中创建并部署次要 vSocket。

  1. 确保站点的所有虚拟资源都在同一个 Azure 资源组中。

    • 根据您的组织需求,您可以将 VNET 分配给一个资源组,并将其他虚拟资源分配给不同的资源组。

    • 如有必要,为 vSocket VM 创建可用性集。

  2. 对主要和次要 vSocket 使用相同的子网。

  3. 为每个子网创建新的虚拟接口。

  4. 验证主要和次要 vSocket 均与 Cato 云有连接性。

  5. 运行 Cato Azure vSocket 脚本:

    1. 选择次要 vSocket 的资源。

    2. 使用 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 脚本之前:

运行 Cato HA 脚本:

  1. 高可用性部分中,确认主要和次要 vSocket 均与 Cato 云有连接性:

  2. 运行 Cato HA 脚本 create_ha_settings.sh 以将 HA 配置应用于 vSockets。

  3. 重启具有主要和次要 vSocket 的虚拟机。

  4. 更新 Azure 中的相关路由表条目,以使用浮动IP作为下一跳。

确认Azure vSockets的高可用性状态

在成功运行 HA 脚本后,验证 vSocket 是否正确配置了 HA 功能:

  • 高可用性 部分检查 HA 状态

  • 从 Socket WebUI 中 ping 浮动IP并测试 HA API 调用

有关 HA 配置部署相关问题的帮助,请参阅 故障诊断 Azure HA 部署

在卡托管理应用显示高可用性状态

站点的 高可用性 部分显示 vSocket 的 HA 状态。 部署次要 vSocket 后,它会自动连接到站点。

要确认站点的高可用性状态:

  1. 从 Cato 管理应用程序的导航菜单中,点击 网络 > 站点

  2. 从导航菜单中,点击 站点监控 > 网络分析

  3. 从页面顶部验证以下项目的状态:

    • 状态已连接

    • HA 状态就绪

    • 主控主要

    • SocketvSocket Azure

Azure_HA_Status.png

有关 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 配置:

  1. 从导航菜单中,选择 站点配置 > Socket

  2. 从主要 vSocket 的 操作 下拉菜单中,选择 Socket WebUI

    Socket WebUI 在新标签页中打开。

  3. 点击 工具 标签页。

  4. 网络工具 部分,点击 Ping 标签页。

  5. Ping 浮动 IP:

    1. 通过路由 中,选择 LAN1

    2. 主机名/IP 中,输入浮动IP。

    3. 点击 运行。 窗口显示 ping 是否成功或失败。

  6. 网络工具 部分,点击 API 测试工具 标签页。

  7. 点击 运行测试。 窗口显示 HA API 测试是否成功或失败。

  8. 为次要 vSocket 重复步骤 2-7。

故障排除失败的Azure API测试

如果 Azure API 测试失败,将显示错误消息以帮助您排查问题。

API 测试错误消息

建议的故障排除步骤

Azure API 测试失败 - 无法认证到 API 代理。 确保 Azure 访问控制 (IAM) 设置正确。

Azure 管理员没有足够的权限对虚拟资源进行更改。 见上文,设置管理员权限以配置高可用性

Azure API 测试失败。 验证 vSocket VM 实例上的 NIC 设置是否正确。

  • 检查 NIC、子网和 VM 是否属于同一资源组。 见上文 为 VNET 和 VM 使用不同的资源群组

  • 请确保Azure管理员有权限创建角色并将其应用于网卡、子网和虚拟机。

  • 请确保Azure管理员有权限修改网卡属性。

处理用于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

  • 更改vSocket的管理IP地址

  • 禁用站点的HA并移除次要vSocket

显示高可用性信息和状态

站点的网络 > 站点 > Socket页面显示主和次要vSockets的高可用性状态。

项目

描述

HA 状态

站点的高可用性状态(就绪未就绪),仅在每个 HA 状态指示器正常时显示 就绪

已连接 (状态指示器)

状态allow.svg表示两个vSockets均具有到卡托云的WAN连接

保持活动 (状态指示器)

状态allow.svg表示一个vSocket是主,一个是候补(如果两个vSocket都是主状态,则存在高可用性分脑问题)

同一版本 (状态指示器)

状态allow.svg表示两个vSockets均运行同一Socket版本

更改站点的IP设置

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

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

  • 浮动IP - 使用站点的网络高可用性部分(新值会自动更新到另一部分)

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

更改本地范围子网

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

要更改站点的本地范围子网:

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

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

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

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

  5. 单击保存

更改浮动IP和管理IP

使用高可用性部分更改浮动IP和管理IP。 您还可以在网络部分更改浮动IP。

要更改站点的浮动或管理IP:

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

  2. 从导航菜单中,单击站点配置 > 套接字

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

  4. 输入新的主要管理IP

  5. 输入新的次要管理IP

  6. 输入新的局域网浮动IP

  7. 单击保存

禁用Azure站点的高可用性

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

  • 高可用性部分被禁用,不再显示在页面上

  • 网络部分,本地 IP 替换了浮动 IP

注意

注意:您无法撤销取消分配套接字操作。 次要vSocket的序列号不再有效。

如果您想再次添加次要vSocket,您必须在VM上安装一个具有新序列号的新vSocket。

要为Azure站点禁用HA:

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

  2. 从导航菜单中,点击站点配置 > 套接字

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

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

分析高可用性事件

事件页面显示您帐户的所有高可用性连接事件。

解释高可用性事件字段

Socket HA和vSocket HA的事件和字段是相同的。 这些是HA事件:

字段

描述

Socket 角色

显示事件是由主要 vSocket 还是次要 vSocket 生成的

事件子类型 - Socket 故障转移

站点的切换进程已启动

有关在故障转移过程中生成的事件的更多信息,请参阅Socket HA故障转移事件

这篇文章有帮助吗?

0 人中有 0 人觉得有帮助

0 条评论