仅当服务器 A 不可访问时,我们才必须将所有 HTTP(S) 请求从一台 Web 服务器 A 重定向/转发到 Web 服务器 B(将显示停机信息)。我们可以使用 DNS 转发来实现此目的吗?
我们还有其他方法可以实现这一目标吗?
答案1
DNS 多名称/轮询可能经常用于粗略的人工负载平衡解决方案,但实际上并不表示高可用性解决方案。由于主要是由客户端来控制请求,因此您绝对不能保证客户端将获得正在工作的服务器的 IP 地址。
还有多种其他解决方案可以为您提供高可用性,无论是硬件还是软件。
至于 Linux 中 HTTP(S) 协议高可用性的软件解决方案,请查看LVS,HA代理,磅或者漆。
在这三者中,设置更简单的应该是 HAProxy 或 pound。
什么是:
反向代理:它将请求从客户端浏览器传递到一个或多个后端服务器。
负载均衡器:它将来自客户端浏览器的请求分发到多个后端服务器,同时保留会话信息。
SSL 包装器:Pound 将解密来自客户端浏览器的 HTTPS 请求,并将它们作为纯 HTTP 传递到后端服务器。
HTTP/HTTPS 清理程序:Pound 将验证请求的正确性并仅接受格式正确的请求。
故障转移服务器:如果后端服务器发生故障,Pound 将记录这一事实并停止向其传递请求,直到其恢复。
请求重定向器:请求可以根据请求的 URL 在服务器之间分发。
我们在这里使用 pound 来表示流量非常大的服务器。它非常轻量级,除了分配负载和处理 SSL 协商,从而释放 Web 源中的资源之外,它还能够在没有 Web 服务器运行时显示网页。
http://www.tristanwaddington.com/2009/03/emu-marketing-generate-useful-error-pages-with-pound/