配置Azure vSockets的高可用性

Prev Next

本文解释如何配置具有两个 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 服务器
    注意: 如果对 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 配置示例。

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

已知局限性

  • 对于 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配置的高级工作流程。

  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 的序列号(此序列号用于运行 Cato 脚本以在虚拟机上安装 vSocket)

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

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

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

Azure_vSocket_HA.png

为 HA 配置 Azure 站点:

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

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

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

  4. 配置局域网 IP 设置:

    1. 输入局域网接口IP 。 此值被用作 MGMT IP 和保持活动包。

    2. 输入局域网浮动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 配置应用于 vSocket。

  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 状态 是 就绪

    • 主控 是 主要

    • Socket 是 vSocket 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

  • 更改vSockets的管理IP地址

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

显示高可用性信息和状态

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

项目

描述

HA状态

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

已连接(状态指示器)

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

保持活动(状态指示器)

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

相同版本(状态指示器)

状态allow.svg指示两个vSocket正在运行相同的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

注意:

注意:您无法撤销 取消分配Socket 操作。 辅助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故障转移事件。