当我的 A Web 服务器断电时,我该如何自动将所有用户重定向到另一个城市的 B Web 服务器,反之亦然?
负载平衡交换机可以满足我的要求,但是除非两个 Web 服务器都在同一栋大楼里,否则我不知道如何让它工作。
高可用性集群系统可以满足我的要求,但是除非两个 Web 服务器都位于同一栋建筑物中,否则我不知道如何让它工作。
接受的答案是“当主 Web 服务器宕机时重定向到另一个 Web 服务器上的静态页面“似乎支持 2 个不同城市的网络服务器。但是,在一个盒子拔掉电源后,在这个盒子上安装软件对我有什么帮助呢?
我认为一种方法是这样的:
- 我获得了每个物理网络服务器的 IP 地址。
- 我将每个物理 Web 服务器的 IP 地址放入“该”网站的单个域名的 DNS 记录中(多个 A 记录或 AAAA 记录或两者)。
- ...那我需要做什么?
我想另一种方法是
- 我使用一些动态 DNS 提供商来获取单个域名,我希望用户在 Web 浏览器中输入该域名
- 我在每个 Web 服务器上设置了一个 cron 作业,定期通知 DNS 提供商自己的 IP 地址(更新 A 记录或 AAAA 记录)或其自己的域名(更新 CNAME 记录或 DNAME 记录)。
- ...那我需要做什么?
(目前,如果我的用户能够看到一个静态网页,上面有我的联系信息,并且每当网络服务器 A 断电时,都会出现一条脚注,上面写着“主网络服务器 A 似乎已关闭”。这已经比当前系统只给出“未找到服务器”错误要好得多了。理想情况下,我希望 A 和 B 完全同步并且看起来完全相同——但这是另一个问题:相当于 CDN,但是针对的是动态内容?)。
答案1
听起来你可能正在寻找全局服务器负载平衡 (GSLB) 解决方案。GSLB 通常使用“智能”DNS 根据多个参数(即服务器不可用、高负载、IP 地理位置等)将用户引导到不同的服务器。
举例来说,假设您有两个 Web 服务器,一个位于西部 (10.10.10.1/24),另一个位于东部 (10.20.20.1/24)。假设您的 Web 主机名为 www.connect.com。
GSLB 可以配置为您的 DNS 或 CNAME。无论哪种方式,用户输入 www.connect.com,DNS 查询都会定向到 GSLB 解决方案,它会根据参数以 10.10.10.1 或 10.20.20.1 进行响应。GSLB 通常会设置较低的 TTL,以便客户端主机/浏览器尽可能少地缓存响应。有多种方法可以解决持久性问题,但这超出了本场景的范围。
假设东 (10.20.20.1) Web 服务器发生故障。GSLB 通常会实施健康检查来检查后端节点的健康状况。GSLB 注意到东已发生故障,并且 www.connect.com 的所有后续 DNS 记录都将解析为 10.10.10.1。
如果您有本地服务器负载平衡解决方案 (SLB),那么您可以将其设置为 www.connect.com 是一个 VIP/VS(例如 192.168.1.1/24),具有两个后端节点(10.10.10.1/24 和 10.20.20.1/24)。从技术上讲,只要本地 SLB 可以到达另一台服务器,节点就可以位于不同的网段中。如果后端节点发生故障,SLB 解决方案可能足够智能,可以将用户重定向到可用的服务器。如果您使用的是 F5 LTM,那么您可以轻松地为此类事件创建 iRule。Citrix NetScaler 和其他 SLB 解决方案也应该具有类似的功能。
在这种情况下,RR DNS 不起作用。RR DNS 没有内置智能。使用 DNS 实现用例的唯一方法是通过 GSLB(或类似)解决方案使用某种“智能”DNS。
CDN 通常实施 GSLB/SLB 解决方案来确保其客户的 HA。
答案2
您需要研究 F5 和 Cisco 制造的全局负载均衡器。基本上,如果合作伙伴发生故障,它们会对 DNS 进行一些技巧;如果合作伙伴正常运行,它们会通过负载均衡器将数据传送到另一端。
答案3
另一个值得评估的廉价、快速且可靠的解决方案是使用 Amazon Route 53 故障转移http://docs.aws.amazon.com/Route53/latest/DeveloperGuide/health-checks-creating.html。此功能于 2013 年 2 月 11 日发布,可在主站点和辅助站点之间提供高可用性和/或负载平衡。
阿西姆
答案4
您至少可以使用以下两种方法在不使用网络设备的情况下执行此操作,但它们需要变更控制:
反向代理,您需要从代理候选中删除要拔出的服务器
DNS,您必须提前计划,更改 DNS 并等待 TTL 通过
您还可以使用路由协议实现自动负载平衡和主动-主动故障转移,尤其是对于提供静态页面的 Web 服务器。查看 EGP 和 IGRP。网上应该有帮助材料(尤其是与 Cisco 相关的)详细说明如何通过路由器对两个或更多主机执行此操作。