概述
本文提供了对常见 Azure vSocket HA 部署问题的见解,并提供了解决这些问题的故障排除步骤。 本指南旨在协助在通过 HA 脚本或市场部署 HA 解决方案期间和之后识别并解决潜在障碍。
症状
在部署 Azure vSocket HA 时,您可能会遇到以下症状:
-
HA 脚本失败
- 手动部署中执行 create_ha_settings 脚本失败。
- 通过市场部署次要 vSocket 时出现问题。
-
HA 切换失败
- 来自 Socket WebUI 的 HA API 测试失败。
- HA 切换失败导致流量未转发到次要 vSocket。
-
HA 状态未就绪
- CMA 显示站点的 HA 状态为未就绪
可能的原因
HA 部署失败的最常见原因包括:
- 在 Azure 中使用非公共 DNS。
- 管理接口缺乏互联网访问。
- Azure 账户权限不足。
- Azure 中限制性安全组和路由设置。
- 未能将浮动 IP 地址分配给 LAN 接口。
- LAN 连接性问题。
问题排查
重要
重要提示:在开始故障排除之前,确保验证所有 Azure HA vSocket 部署的先决条件。 参见配置 Azure vSocket 的高可用性 (HA)和从市场中部署 Azure vSocket
HA 脚本故障排除
Azure HA 脚本 (create_ha_settings) 和通过市场部署次要 vSocket 验证该 Azure 订阅具有两个有效的 vSocket,然后分配角色,创建 HA 和切换机制。 如果脚本运行失败,请按照这些故障排除步骤操作:
检查活动日志
- 在 Azure 中,活动日志存储每个 Azure 资源内部发生的所有事件。 如果部署不成功并且未分配某一角色,请查看这些日志。 浏览到VM或NIC并选择活动日志
检查 Azure 命名限制
- 在脚本中输入 vSocket 名称时,请确保名称不包含空格或受限字符,具体说明见命名规则和限制。
- 如果在部署期间出现命名问题,错误日志中将显示以下错误
参数 disk.name 的值无效。 (代码:InvalidParameter,目标:disk.name)
检查 Azure DNS 配置
- 确保默认 Azure DNS 已为 VNET 和关联的 NIC 配置。 如果默认 DNS 未在 VNET 和 NIC 中配置,角色创建将失败。
- 要检查 Azure DNS 配置是什么,请参阅 修复 DNS 配置问题
检查 Azure 权限
-
为了成功运行 HA 脚本,请确保 Azure 用户具有 所有者 权限。 导航到资源组 > 访问控制 IAM > 查看我的访问,并验证用户账户设置为所有者或更高角色。 参见Azure 内置角色。
验证 Azure 角色分配
- 运行在验证 Azure 角色分配中提供的步骤,以确认资源群组中列出的身份角色已分配给 LAN NIC、LAN 子网和两个 vSocket VM。
重新运行 HA 脚本
- 如果前述步骤已检查完毕,最后可以重新运行 HA 脚本 (create_ha_settings)。
- 务必更新 Azure 令牌并删除在第一次运行脚本时创建的 Azure 管理的身份。
HA 切换故障排除
如果 HA 脚本成功运行但 vSocket HA 切换未按预期发生(例如,流量未路由到次要 vSocket),请遵循这些步骤:
运行 HA API 测试
- 从 vSocket webUI,运行来自两个 vSocket 的 API 测试工具以验证到 Azure 的 API 调用可以成功进行。 可以在此处看到权限或浮动 IP 分配的任何错误。
检查活动日志
- 在 Azure 中,活动日志存储每个 Azure 资源内部发生的所有事件。 查看这些日志以识别浮动 IP 是否无法传递到LAN NIC或 API 测试是否不成功。 浏览到NIC并选择活动日志
Ping 浮动 IP
- 从 vSocket WebUI,使用 Ping 工具,选择 LAN 接口,然后 ping 浮动 IP 地址。 如果此测试不成功,请继续验证浮动IP分配
验证浮动 IP 分配
- 为了将流量路由到主 vSocket,Azure 将浮动 IP 分配给当前主 vSocket 的 LAN NIC。 转到主要 vSocket VM LAN NIC > IP 配置 并验证浮动IP是否存在为“次要”。 如果没有,请继续以下步骤。
验证 Azure 角色分配
- 在 Azure vSocket 部署期间,HA 身份角色 被创建并存储在 Azure 托管身份 中。
- 每个资源应只分配一个用户分配的角色。 如果策略在 Azure 中添加系统分配的身份,则 vSocket 必须排除在外。
-
该角色被分配给附加到 vSocket 的不同虚拟资源。 Azure 基础架构中使用该角色的组件有:
- 局域网网络接口(NIC)用于每个vSocket
- 与 LAN NIC 关联的 LAN 子网
- 两个 vSocket 虚拟机
-
NIC 的角色分配可以在 访问控制 > 角色分配 下检查,并应分配给主要和次要的 LAN NIC。
- LAN子网的角色分配可以在VNET > 子网下检查,然后选择LAN子网并点击管理用户 > 角色分配。
- 对于每个 vSocket 虚拟机,可以在 安全 > 身份 > 用户分配 下看到身份角色,如下截图所示。 不应为虚拟机分配系统分配的角色。
- 如果上述任何资源上未安装 HA 身份角色,则可能是部署过程未能成功。 如果在任何涉及的资源中缺少角色,可以再次运行Cato HA脚本。 或者,可以重新部署次要Azure vSocket,这将安装缺失的HA身份角色。
检查管理接口是否有 DNS 和互联网访问权限
- 确认管理接口有互联网访问权限并且可以连接到已配置的 DNS 服务器。
-
从 Azure 门户检查 management.azure.com 的 DNS 解析。 HA API 调用使用此 FQDN。
- 转到虚拟机 > vSocket > 运行命令 > 运行Shell脚本
- 在文本框中输入dig management.azure.com。
- 点击运行
-
dig输出将在门户中显示DNS响应。
- 如果没有DNS解析,请查看修复DNS配置问题。
- 从同一页面尝试访问任何互联网资源以确认互联网访问。 例如,
ping -c 4 8.8.8.8
如果 ping 未成功,继续以下步骤。
检查网络安全组是否阻止出站流量。
注意
注意:如果在vSockets上实施了2-NIC解决方案。 在 WAN 接口上执行此故障排除步骤。
- 快速检查的方法是转到 Azure 中的 MGMT 网络接口并点击屏幕左下方的 "有效的安全规则"。
-
下图显示未分配任何NSG,因此未阻止出站流量。
检查 MGMT 接口的互联网流量路由。
注意
注意:如果在vSockets上实施了2-NIC解决方案。 在 WAN 接口上执行此故障排除步骤。
- 如果 MGMT 接口流量通过 Azure 中的第三方防火墙进行路由,请检查是否允许 UDP/53 和 TCP/443 出站连接。
- 可以通过在 Azure 的管理接口页面上点击 "有效路由" 选项来查看路由表。
-
下图显示了使用互联网作为"下一跳类型"的互联网流量路由,因此没有防火墙阻止流量。
检查路由表的下一跳
- 确认 LAN 路由表指向浮动 IP。 如有需要,更改下一跳 IP 地址。
故障排除 HA 状态未就绪
如果CMA显示HA状态未就绪并且两个vSockets都已上线且运行中,则两个vSockets将承担主控角色(分脑场景)。 可能有两个相关问题:
- 两个 vSockets 运行不同的固件版本
- HA 保持活动消息无法到达次要 vSocket
建议检查两个vSocket的WebUI页面,以确认每个vSocket的HA状态。 如果主控和次要 vSocket 都在主控角色中,将出现分脑场景。 WebUI将在主监控页面的顶部显示当前角色。
检查固件版本
为了满足兼容版本标准,两个vSocket必须运行相同的主版本,例如v17.xx.yy或v18.xx.yy。vSocket在第一部署后执行初始升级。 如果其中一个 vSocket 升级失败,必须对该问题进行故障排除。 提交支持工单报告此问题。
检查 HA 保持活动
保持活动数据包使用Azure vSocket的端口UDP/20480,并且仅从主控vSocket发送到备用vSocket。 当两个 vSocket 都有主控角色时,会发生分脑条件,这可能由于 vSocket 之间的 LAN 连接问题,导致 HA 保持活动消息无法到达次要 vSocket。
运行以下检查以确认 LAN 连接性:
- 检查网络安全组是否阻止了端口UDP/20480。 检查 NSG 规则的一个快速方法是转到 Azure 中的每个 LAN 网络接口,并点击屏幕左下角的“有效的安全性规则”。
- 确认两个 LAN 接口都与相同的 LAN 子网关联。
- 从两个 vSocket 的 WebUI 运行数据包捕获,并确定主要的保持活动是否被次要的 vSocket 接收。
解决发现的问题
更新 Azure 令牌
- 如果使用 Azure Cloud Shell 部署 HA 脚本,请打开新会话并重新认证。 这将更新用于查询 API 的令牌。
修复 DNS 配置问题
- 要修复 Azure DNS 配置并将其设置为默认值,请到 虚拟网络 > DNS 服务器 和 网络接口 > DNS 服务器,并确保使用默认选项或公共 DNS 服务器。 关闭虚拟机以进行任何与 DNS 相关的更改,然后重新启动。
注销并重新部署 Azure vSocket
- 如果在执行上述所有故障排除步骤后,HA 脚本或 HA 故障转移继续失败,可以注销并重新部署一个或两个 vSocket。 请参阅 重新部署高可用性 vSocket 站点
- 在重新部署 vSocket 之前,请务必遵循指南并移除虚拟机、网络接口、相关的公共 IP 和已管理身份。
- 如果只重新部署主要的 vSocket 实例,您必须运行专用的 HA 脚本(create_ha_settings)以将两个 vSocket 实例绑定为 HA。
向卡托支持提交案例
提交 支持工单,附上上述故障排除步骤的结果。 请在工单中包括以下信息:
- 问题的清晰描述,包括任何错误信息。
- management.azure.com 的 DNS 测试结果
- API 测试结果。
- 分配的浮动 IP 和已配置身份角色的截图。
- Azure 活动日志截图,包括发现的任何错误。
0 条评论
请登录写评论。