从现在开始,我使用 apache2 的 vhost 功能将多个域绑定到一个公共和静态 ip。
现在我正在设置一个具有 4 个 IP 和几个 VM 的 XEN 主机,其中两个是纯网络服务器。这些到 2 个虚拟机可以共享一个公共 ip 吗?每个人都会在同一个公共 IP 上拥有一组虚拟主机。
编辑:好的,基于主机的重定向呢?
从现在开始,我使用 apache2 的 vhost 功能将多个域绑定到一个公共和静态 ip。
现在我正在设置一个具有 4 个 IP 和几个 VM 的 XEN 主机,其中两个是纯网络服务器。这些到 2 个虚拟机可以共享一个公共 ip 吗?每个人都会在同一个公共 IP 上拥有一组虚拟主机。
编辑:好的,基于主机的重定向呢?
如果你只关心服务 http,你很可能想要安装一个软件负载均衡器/反向代理,比如Pound。Xen 主机上的配置(再次——很可能)看起来像
您还需要在 Xen 主机上设置转发和 iptables 规则;它可能已经为此设置了。
根据您的编辑,您可以使用反向代理。阿帕奇可以做到这一点。英镑是已经提到的另一种解决方案。
如果它们是相同的IP,我认为您不能将发送到两台服务器的请求分开?
为什么需要将它们设置在同一个 IP 上?
不错的图表
正如 radius 和其他人所说,我不相信仅仅通过为服务器提供相同的 IP(他们会抱怨重复的地址,其中一个最终会是 IP-less)或相同的二级服务器就可以做到这一点IP(如上,但更难排除故障)。
更好的选择是循环 DNS,您可以将每个网络服务器的 IP 添加到相同的“A”记录中,并且对该“A”记录的查询每次都会返回不同的地址,或者返回一个列表地址供您的客户选择。另一种选择是在两个网络服务器前面添加某种负载平衡应用程序,以将流量平等地路由到每个服务器(或仅路由到一个,另一个作为故障转移)您可以使用 mod_proxy 对另一个 Apache 实例执行此操作安装。
您要使用其中哪一个取决于您为什么要这样做——我们是在谈论某种高可用性/集群的事情吗?
您不能同时在两台机器上拥有一个 IP ,但您可以在它们之间快速移动它。
看来您正在寻求负载平衡/高可用性解决方案。
我建议你研究一下 Linux-Ha - Heartbeat [1]。
它基本上是一个守护进程,可以在两台机器上运行,Webserver 1 和 Webserver 2 并向对方发送“我还活着”信号,只要在指定的时间内没有收到信号,则假定另一个节点已死(或使用 STONITH [2] 设备死机)并且活动节点接管一切。
您也可以手动选择主动/被动节点。从 heartbeat v2 开始,可以在资源级别监控节点,虽然配置是基于 XML 的并且有点复杂,如果你要研究它,我建议使用 heartbeat-gui 来配置它(Ubuntu 有一个包 [ 3])
Novell 有一本关于这些东西的很棒的免费电子书 [4]。
[1] http://www.linux-ha.org/
[2] http://www.linux-ha.org/STONITH
[3] http://packages.ubuntu.com/hardy/admin/heartbeat-gui
[4] http://www.novell.com/documentation/sle_ha/
我不相信有人会建议两个具有相同 IP 的虚拟机。不过我同意你的回复。你不能让两台机器在同一个子网上共享一个 IP,因为你会遇到 ARP 表问题。
这样做的唯一原因是负载平衡和灾难恢复,如果一个虚拟机发生故障,流量并继续流向另一台虚拟机;但是,如果物理硬件出现故障,那么两个虚拟机都关闭了,所以我不确定这里的值是什么或负载平衡。我的意思是您将在同一物理硬件上的两个虚拟机之间进行负载平衡。这里的目标是什么?
不,您不能拥有两个具有相同 IP 的服务器。您需要为每个 VM 获取至少一个公共 IP,或者进行某种 NAT,但是如果您要从这些 VM 提供网页,那么您肯定需要单独的 IP