使用 DNS 进行负载平衡,使用浮动 IPs 进行故障转移 - AWS 上的实时通信

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用 DNS 进行负载平衡,使用浮动 IPs 进行故障转移

支持 DNS SRV 功能的 IP 电话客户端可以通过将客户端的负载平衡到不同的 SBCs/,从而有效地利用基础架构中内置的冗余。PBXs

描述使用 DNS SRV 记录对 SIP 客户端进行负载平衡的示意图。

使用 DNS SRV 记录对 SIP 客户端进行负载平衡

上图显示了客户如何使用 SRV 记录对 SIP 流量进行负载平衡。任何支持 SRV 标准的 IP 电话客户端都将寻找 sip。 <transport protocol>SRV 类型的 DNS 记录中的前缀。在示例中,来自 DNS 的答案部分包含在不同 AWS 可用区中 PBXs 运行的两者。但是,除了端点之外 URIs,SRV 记录还包含另外三条信息:

  • 第一个数字是优先级(在上面的示例中为 1)。优先级越低,优先级越高。

  • 第二个数字是重量(在上面的示例中为 10)。

  • 第三个数字是要使用的端口 (5060)。

由于两 PBXs 台服务器的优先级相同 (1),因此客户端使用权重在两者之间进行负载平衡 PBXs。在这种情况下,由于权重相同,因此 SIP 流量应在两者之间均衡负载 PBXs。

DNS 可能是客户端负载平衡的好解决方案,但是通过更改/更新 DNS “A” 记录来实现故障转移又如何呢? 由于发现客户端和中间节点内的 DNS 缓存行为不一致,因此不建议使用此方法。在 SIP 节点集群之间进行可用区内故障转移的更好方法是使用 EC2 IP 重新分配,即使用 API 将受损主机的 IP 地址立即重新分配给运行正常的主机。 EC2 再加上详细的监控和运行状况检查解决方案,故障节点的 IP 重新分配可确保流量及时转移到运行状况良好的主机,从而最大限度地减少对最终用户的干扰。