我正在研究一个解决方案,我们将使用带有 Hyper-V 的 Windows 2008 在单个服务器上设置 40 个虚拟 Web 服务器。
不幸的是,我们只有 3 个免费的公共 IP 地址可供使用,所以我需要一个基本上可以将请求路由到适当服务器的单个公共 IP。
我在想我会在主机上运行一个 Web 服务器,它会运行在“ web.company.com
”,然后每个虚拟服务器都可以是一个子域,比如“ client1.web.company.com
”。然后,前端 Web 服务器会将请求代理到虚拟 Web 服务器,用于client1
.
这是配置系统的合理方式吗?如果是这样,是否可以使用 IIS 来进行代理,或者另一个开源 Web 服务器是否可以更好地工作(apache、lighttpd 等)?
这听起来很奇怪。40 个虚拟机用于 40 个站点?
IIS 可以在每台机器上托管多个网站。你不能拥有 3 台服务器,并使用 IIS 主机头来托管 15 个站点吗?还是每个 Web 应用程序实例都必须是专用的?
无论如何,如果您想在 40 个盒子之间共享一个 IP,您将需要做某种反向代理。您需要在反向代理中设置每个主机名,以便它知道将该主机标头发送到哪个框...
如果您被迫对这些网站中的每一个进行虚拟机,您将面临重大的成本问题。除非您运行的是 windows server 2008 datacenter,否则您必须为每个 vm 安装许可操作系统。2008 企业包括 4 个虚拟机来宾。
更不用说让 40 台机器运行而不是一台(使用 hostheadering)了。
见——http ://www.microsoft.com/hyper-v-server/en/us/default.aspx
您最好的选择可能是使用负载均衡器(或两个,在集群配置中)充当“集中器”。
它与您提到的解决方案没有太大不同,但具有允许外部访问背后的资源的高可用性的好处。
听起来是个糟糕的计划。
如果您正在为网站设置 Hyper-V 虚拟机,这本身就会花费您大量的金钱。这就是为什么您会看到带有 Hyper-V 的 VPS 包在每月 50-100 美元的范围内。那么,为什么不为每个 IP 每月额外支付 1 美元或从提供商那里获得什么?如果您有客户,只需将成本转嫁给客户。否则,如果你的机器可以运行 40 个虚拟机,它可能会花费(或花费)很多钱,所以 IP 应该是杯水车薪。
投资此处建议的其他解决方案也没有经济意义,因为软件成本/设置头痛/持续的皮塔(您将如何实施 RDP?)用于设置反向代理或负载平衡或任何不值得的东西.
我想出了一个解决方案。我为 IIS7 安装了 URL 重写扩展,并使用重写规则将流量从特定子域路由到正确的内部主机。
为什么不在 IIS 中使用 HTTP HOST 标头?基本上,可以准确地告诉每个网站要收听和回答哪个域名。我只有一台 IIS7 服务器,它在一个外部 IP 上托管 3 个网站,仅仅是因为分配了 HTTP 标头......