Answers:
我认为您正在以错误的方式进行操作。让我知道我是否在这里做出错误的假设。
场景:
您尝试做的事情称为轮询DNS(又称“穷人负载平衡”),但是您尝试从客户端进行此操作。即使我刷新了DNS缓存,这似乎也没有达到预期的效果(至少在我的Windows XP机器上)。Windows将仅解析为文件中的第一个IP。但是,循环DNS不能容错,因此这无法帮助您实现所需的功能。
建议的解决方案:
硬件负载平衡器:一些品牌名称是Alteon,Big-IP,梭子鱼。基本上,这是为您的用户提供一个单一IP进行连接,并将请求转发到Web服务器。如果其中一台服务器不可用,则它将不再向其转发流量。这是昂贵的选择。
网络负载平衡服务:这是Windows服务器上可用的Microsoft技术,它将为您提供单个群集IP。它获得与硬件负载平衡器相同的结果,但是方式不同。您需要做的就是配置它。
来自http://www.unc.edu/atn/lsf/docs/7.0.5/lsf_config_ref/index.htm?hosts.5.html~main
IPv4示例
192.168.1.1 hostA hostB 192.168.2.2 hostA hostC host-C
在此示例中,hostA具有2个IP地址和3个别名。别名hostB指定第一个地址,别名hostC和host-C指定第二个地址。LSF使用官方主机名hostA来标识两个IP地址都属于同一主机。
我是在家庭网络中完成此操作的,在该网络中,我为笔记本电脑的有线和无线网络接口分配了静态IP,并从另一台计算机的主机文件中将一个主机名指向了这两个IP地址。似乎工作正常。
来自 http://www.unc.edu/atn/lsf/docs/7.0.5/lsf_config_ref/index.htm?hosts.5.html~main
IPv4示例
192.168.1.1 hostA hostB 192.168.2.2 hostA hostC host-C
在此示例中,hostA具有2个IP地址和3个别名。别名hostB指定第一个地址,别名hostC和host-C指定第二个地址。LSF使用官方主机名hostA来标识两个IP地址都属于同一主机。
根据此示例,我做了以下10.18.yx 192.168.zx hostA
其中hostA是我打算从内部网络(192.168.yx)和VPN(10.8.zx)访问的服务器的主机名。
ping hostA
sending 'ping' on 192.168.y.x [10.8.z.x]
Answer from 10.8.z.x : bytes=32 time=98 ms TTL=64
Answer from 10.8.z.x : bytes=32 time=78 ms TTL=64
Answer from 10.8.z.x : bytes=32 time=111 ms TTL=64
Answer from 10.8.z.x : bytes=32 time=136 ms TTL=64
因此它运行良好,并且我可以使用主机名通过VNP来使samba正常工作,因此在两种情况下(连接LAN或VPN)在Windows中连接驱动器对我来说都是很好的。
最好的祝福。
@ Plamen Dimitrov您将需要一台设备来处理这种平衡,可能是一台可以在FW之前处理BGP的交换机,或者在有能力的情况下使用FW。如果您的Cisco处理BGP,请考虑实施。这样,您就可以使两个ISP IP都进入Cisco /或交换机,并且目标服务器将具有有效的24位公用IP IP(与这两个ISP IP不同)。到那时(您正在使用3个不同的公共IP块,一个用于服务器的MIP必须为24位),您需要让每个ISP都知道此解决方案,并且他们必须愿意支持它们之间的BGP解决方案,大多数都会这样做。现在,当您的FQDN解析后,即使1条ISP线路出现故障,它也将解析为您的24位IP块。目标是 由于您的ISP同意通过其线路路由该24位地址,因此您的24位地址将始终可用。这也适用于VPN,因为您用于VPN的全部都是24位地址,而不是插入到Cisco /或交换机的ISP的IP。那时,您必须警惕BGP FLAPPING,如果您的线路上下移动很多,由于线路获取DOS,DNS地址将在Internet上发生很大变化,以至DNS服务器将自动删除IP这导致您的IP的24位块。那是对BGP解决方案的DOS攻击。那时,您必须警惕BGP FLAPPING,如果您的线路上下移动很多,由于线路获取DOS,DNS地址将在Internet上发生很大变化,以至DNS服务器将自动删除IP这导致您的IP的24位块。那是对BGP解决方案的DOS攻击。那时,您必须警惕BGP FLAPPING,如果您的线路上下移动很多,由于线路获取DOS,DNS地址将在Internet上发生很大变化,以至DNS服务器将自动删除IP这导致您的IP的24位块。那是对BGP解决方案的DOS攻击。
至少在Windows世界中,这里需要进行一些澄清:在hosts文件中,单个名称可以有两个IP地址。查询时,将返回所有地址。该应用程序(即浏览器)将尝试依次连接到每个应用程序,直到建立连接为止。IOW,它将在超时之前尝试所有地址。(这是一个普遍的误解,因为许多人认为它只会尝试“第一个”地址。)
您可以通过以下实验对此进行验证:
在hosts文件中为一个主机添加两个或多个地址,一个为真实地址,另一个为假地址。(将虚假地址按字母顺序缩小。)打开浏览器,然后尝试连接到主机名。同时运行netstat -no。您应该看到尝试连接到虚假地址的尝试。(卡在SYN_SENT中)浏览器最终将到达正确的地址并连接。连接有延迟,但是它将起作用。
ipconfig /flushdns
以确保忘记以前的分辨率。尝试在Chrome的隐身窗口中打开网站(对我的计算机而言是本地的)以排除缓存结果。它只是失败了(我等了几分钟看它是否最终会工作)。点击刷新只是为了确定。然后我从主机文件中注释掉了虚假的IP。没有做任何其他事情,我刷新了页面,它正常工作。Firefox也是如此。
您无法使用hosts文件执行此操作。
您也无法使用DNS进行此操作:您可以为一个名称提供多个IP,但是浏览器将仅选择多个IP中的一个,然后尝试使用,如果该主机当前处于关闭状态,则浏览器将显示连接错误。
一种可能的解决方案是设置代理服务器,并将这两个IP配置为它们所服务域的父级。至少对于Squid,代理将尝试一台服务器,如果失败,则尝试第二台服务器。然后将浏览器配置为使用此代理服务器。