概况
本指南提供了一个详细的故障排除框架,用于解决在部署 AWS vSocket 高可用性 (HA) 期间遇到的常见问题。 无论是手动部署还是通过 AWS Marketplace 部署,这些步骤旨在帮助有效识别和解决潜在问题。
症状
AWS vSocket HA 部署的常见问题可能包括:
HA 切换失败
来自 vSocket WebUI 的 HA API 测试失败。
HA 切换失败导致流量未被转发到次要的 vSocket。
HA 状态未就绪
CMA 显示站点的 HA 状态为“未就绪”
可能的原因
HA 部署失败通常是由于以下原因引起的:
在 AWS 中使用非公共 DNS。
管理接口缺乏互联网访问。
IAM 角色配置错误。
AWS 中的安全组和路由设置过于严格。
无法将适当的网络接口分配到 LAN 路由表。
LAN 连接性问题。
排查问题
重要:
在开始故障排除之前,请确保已验证 AWS HA vSocket 部署的所有预备条件。 请参阅手动部署 AWS vSocket 站点,从 AWS Marketplace 部署 vSocket 站点和配置 AWS vSocket 的 HA
HA 切换故障排除
如果流量在切换期间未路由到次要 vSocket,请考虑以下故障排除步骤:
运行 HA API 测试
从 vSocket WebUI 运行 API 测试工具以测试两个 vSocket。
此工具验证与 AWS 的 API 调用是否可以成功进行。
此处可以看到与权限或路由表更新相关的任何错误。

检查 AWS DNS 配置
验证关联 VPC 是否配置了默认的AWS DNS 服务器。
要检查 AWS DNS 配置, 请参阅 修复 DNS 配置问题
如果配置了自定义 DNS 服务器(例如,私有 DNS 服务器),请确保它可以解析公共域名。 验证它是否可以解析完全限定域名 (FQDN) ec2.<region>.amazonaws.com (例如 ec2.us-east-1.amazonaws.com),API 使用此名称。
即使配置了默认 AWS DNS 服务器,与 MGMT 接口关联的安全组也应允许对 8.8.8.8 和 8.8.4.4 的 DNS 请求。
验证 LAN 路由表
为了将流量路由到主 vSocket,AWS 将当前主 vSocket 的 LAN 网络接口分配到 LAN 路由表。
前往VPC > 路由表并选择 LAN 路由表。 在路由标签下,验证主 vSocket 的 LAN 网络接口是默认路由的网关 (目标)。 如果没有,请继续以下步骤。

请注意,如果在切换期间未更改目标网络接口卡,则手动修改 LAN 路由表可能是一个快速的解决方法。
验证 IAM 角色
在AWS vSocket 部署期间,HA IAM 角色被创建并与主要和次要 vSocket 关联。
在每个实例的详细信息页面下,确认分配了正确的 IAM 角色。

单击 IAM 角色链接,并在权限标签页下验证 IAM 访问权限策略是否包含正确的声明,如下所示。

注意: 如果缺少 IAM 角色,一旦添加该角色,必须重新启动套接字以使添加的角色生效。
验证 IMDS 设置
确保双向vSocket使用匹配的IMDS设置(可选或必填)。 欲了解更多信息,请参阅AWS文档。
从 vSocket 版本 20.0.18221 开始,支持 IMDSv2。
要修改 IMDS 设置,选择实例,然后在操作下点击实例设置 > 修改实例元数据选项。

验证网络安全组。
确保网络安全组未阻止到管理接口的出站流量。
在EC2 > 网络接口下,找到与管理接口相关联的安全组

验证安全性管理员组的出站规则允许端口80、443和53 在这种情况下,所有出站流量均被允许。

验证 MGMT 接口的互联网流量路由。
如果 MGMT 接口流量通过 AWS 中的第三方防火墙进行路由,请检查是否允许 UDP/53、TCP/80 和 TCP/443 出站连接。
在网络接口页面上,点击 MGMT 接口的子网 ID

在子网页面上,选择路由表标签 下方截图显示默认路由指向互联网网关,因此防火墙没有阻止流量

打开相关的路由表并验证所有 MGMT 子网是否被列为相关联的子网。 在双可用区的情况下,将存在两个 MGMT 子网,每个 vSocket 一个,如为次要 vSocket 局域网接口创建子网中所述。

在 VPC 的资源地图标签上,所有关联的子网及其路由配置都以视觉方式呈现,便于参考

确认弹性IP已关联到MGMT接口。 这可以从实例的网络选项卡中看到。 MGMT接口可以通过其设备索引0来识别。 WAN和LAN接口应分别与设备索引1和2关联。

检查CloudTrail日志
启用AWS CloudTrail日志记录API调用到AWS,以调试HA故障转移期间LAN路由表的修改失败。
您可以按照过程创建一个日志,定义存储日志的S3存储桶,并选择包括API活动的管理事件。 请参阅创建日志。

故障排除 HA 状态未就绪
如果CMA显示HA状态未就绪并且两个vSockets都已上线且运行中,则两个vSockets将承担主控角色(分脑场景)。 这可能是由于以下原因:
两个 vSockets 运行不同的固件版本
HA 保持活动消息无法到达次要 vSocket

建议查看两者vSocket的WebUI页面以确认每个vSocket的HA状态。 如果主控和次要 vSocket 都在主控角色中,将出现分脑场景。 WebUI将在主要监控页面的顶部显示当前角色。

检查固件版本
为了满足兼容版本标准,两者vSocket必须运行相同的主要版本,例如 v17.xx.yy 或 v18.xx.yy。vSocket在首次部署后执行初始升级。 如果其中一个 vSocket 升级失败,必须对该问题进行故障排除。 提交支持工单以报告该问题。
检查 HA 保持活动
保持活动数据包使用AWS vSocket的UDP/20480端口,将仅从主控vSocket发送到备用vSocket。 当两个 vSocket 都有主控角色时,会发生分脑条件,这可能由于 vSocket 之间的 LAN 连接问题,导致 HA 保持活动消息无法到达次要 vSocket
运行以下检查以确认 LAN 连接性:
检查网络安全组是否阻止了端口UDP/20480。 快速检查NSG规则的方法是进入AWS中每个局域网网络接口,并检查入站和出站规则。如在检查网络安全性管理员组是否阻止出站流量中所述期间Always-On和防篡改被禁用多久。
确认双向局域网接口与不同的局域网子网相关联。
从两者vSocket的WebUI中运行数据包捕获,并确定次要vSocket是否接收到主要发出的保持活动消息
解决已发现的问题
修复 DNS 配置问题
要修复DNS配置问题,请检查AWS默认DNS服务器是否已为VPC配置。
在VPC详细信息中,找到为其配置的DHCP选项集。

打开DHCP选项集,并验证已定义的域名服务器为AmazonProvidedDNS。

无法更改现有的域名服务器。 为此,创建一个新的DHCP选项集,该选项集将默认使用AmazonProvidedDNS。
注销并重新部署AWS vSocket
如果在执行了上述所有故障排除步骤后,HA故障转移仍继续失败,则可以注销并重新部署一个或两个vSocket。 请参阅重新部署高可用性 vSocket 站点
在重新部署vSocket之前,重要的是要删除虚拟机,但保留网络接口、相关的公共IP和IAM角色。
此外,请记得通过选择vSocket实例 > 安全性 > 附加IAM角色并分配AWS-HA角色,将正确的IAM角色重新附加到vSocket上。
向 Cato 支持提交问题
提交支持工单,附上上述故障排除步骤的结果。 请在工单中包含以下信息:
问题的明确描述,包括任何错误信息。
VPC中的DNS配置。
API 测试结果。
LAN路由表和已配置的IAM角色的截图。
如果可能,请附上故障转移失败时的CloudTrail日志文件。