我有 4 台 Web 服务器(Windows Server 2008 R2)和一个公共 IP 地址。
它们都需要成为网络场的一部分(因此对网站的请求会分散到所有服务器上)。
两个问题:
1) 是否可行以及如何实现,或者我必须拥有 4 个公网 IP 地址?
2)我可以在仅其中一台服务器上使用另一个主机头托管另一个站点,并且仍然只使用一个公共 IP 地址吗?
答案1
另一组词(以及更企业化的答案恕我直言):负载均衡器......
市场上有各种免费开源和闭源的代理。请参阅 HA Proxy / jetNEXUS。您也可以使用 Apache 和一些 mods proxy-lb 来执行此操作。
我反对 NLB 的理由是,它是一种肮脏的黑客手段,依靠交换机结构来分散负载。尽管它免费与 Windows Server 捆绑在一起。Apache 也不花钱,而且可以增加更多功能和性能。
答案2
1个词:聚类。
看看微软“网络负载平衡”服务。
答案3
您最好的两个选择,最适合您选择的操作系统的选项是:
NLB 在 IP 层上工作,而 ARR 在 HTTP 层上工作。如果您阅读了我上面链接的文档,发现它不容易理解,那么也许您应该咨询一位曾经处理过这些事情的人。负载平衡安装本身并不复杂,但有无数的小事情可能会出错,并且排除故障是违反直觉的。
2)我可以在仅其中一台服务器上使用另一个主机头托管另一个站点,并且仍然只使用一个公共 IP 地址吗?
不。也许你可以通过将传入的 HTTP 请求广播到所有 4 台服务器并配置仅一台服务器来响应来做一些奇怪的事情。但这很乱,而且违背了所有惯例。要么获取多个 IP 地址并为每个网站分配一个 IP 地址,要么让所有 4 台服务器响应并使用基于 HTTP 1.1 名称的虚拟主机。
答案4
对您问题的回答:
1) 使用免费的负载均衡器。我相信 Citrix Netscaler 现在甚至有一个免费的 VM 设备(有限制 - 但也许对你有用)
2)是的,您可以在同一个 IP 地址上使用主机头和主机。
对于 #1,如果您真的想要 - 您可以使用 DNS 轮询 - 穷人的负载平衡。简单但容易。但是您无法保证负载均衡。我会将您的 TTL(生存时间)设置为 5 分钟,如果低于这个时间,由于流量原因,并非所有 DNS ISP 缓存都会遵守它。这样,如果服务器出现问题,您可以从 DNS 中删除 IP,并且它应该在 5 分钟后停止访问该服务器。减少停机时间。
我讨厌 NLB 等 - 如果真正的 LB(F5 或 Netscaler)价格不菲 - 按照建议先尝试免费的,或者如果您需要尽快启动并运行,请尝试 DNS,同时安装免费的负载平衡器。也许那里有一个 VM 设备。