我有3个服务器运行一个名称服务器和一个networking服务器。 今天,有2台服务器出现故障。 我以为最后一台服务器会处理所有未来的请求,但是这似乎只发生在一小部分时间。 其他时候,请求会超时。
在我的每台服务器上,我都有以下的区域条目:
ns1 IN A <SERVER IP 1> ns2 IN A <SERVER IP 2> ns3 IN A <SERVER IP 3> example.com. IN A <SERVER IP 1> example.com. IN A <SERVER IP 2> example.com. IN A <SERVER IP 3> www IN CNAME example.com.
我应该在每台服务器上保存一个example.com的logging吗? 我想设置我的服务器,以便任何服务器可以透明地处理所有请求,如果其他服务器停机。
你设置的是DNS循环 ; 虽然这将提供负载平衡 ,但不会提供透明的dynamic故障转移。 这是因为,当客户端查询Alogging“example.com”时,虽然他们将收到所有3个服务器IP,但是他们通常会caching一个以用于将来连接到该域名。 即使您将您的区域的TTL设置为低,在公共Internet上,也无法控制您与客户端之间的cachingparsing程序数量,更不用说在客户端计算机上可能发生什么应用程序级cachingDNS条目资源pipe理器,例如, 维护自己的DNScaching )。
你正在devise的是高可用性 。 这将需要一个硬件设备,或某种forms的软件集群。 硬件选项包括Citrix Netscaler,F5 ig IP或Foundry NetIron。 买你自己的将很可能是不实际的,除非你为一个大型企业主办许多应用程序。 这可能是值得与您的托pipe服务提供商检查,因为许多将提供访问共享高可用性设备的额外费用。
基于软件的选项包括Windows上的Microsoftnetworking负载平衡或Linux上的ucarp ; 不知道您的具体要求以及您当前的基础设施是什么样子,要更具体一些就很难了。 SF上还有其他一些问题,可能会有更多的帮助 – 尤其是检查高可用性和集群标记。
可能发生的情况是,当3人中有2人死亡时,第三人不知道这一点,并继续为服务器停下来提供Alogging。 DNS服务器不会在返回的结果中优先使用自己的IP地址 – 根据软件的不同,它可能会按顺序或从Alogging中随机select。 所以,3次中的2次,它将返回一个Alogging到2台服务器发生故障。
要在DNS中完全解决这个问题,您需要某种DNS负载平衡器(无论是在系统上,还是作为第三方设备/服务)。
在每个DNS服务器上保留单个Alogging将允许每个服务器独立运行,尽pipe您可能在第一个服务器(相对于另一个服务器)上依次承载巨大的负载(即:ns1映射到server1并且具有server1 Alogging在这个区域,这很可能是客户首先查询的一个,所以如果它达到了,它几乎将获得所有的stream量)。
所以,它会工作,但它可能不会像你希望的那样工作。
你是指初选还是解散者?
如果是初选,大量的人主持他们。 对于您自己的基础架构中的parsing器,故障转移是有问题的,因为大多数parsing器库将按优先顺序尝试所有parsing器。 第一个parsing器失败意味着第二个和第三个parsing器将被尝试,但是只有在一个可怕的长时间拖延之后,这将会大大地降低性能(对于像邮件服务器这样的需要在其关键执行path中进行名称parsing的事情)。
所以冗余不是唯一的问题,但是如果有一些解决scheme失败,就不能允许持续获得高性能 – 性能。 我们现在使用LVS来负载均衡我们的内部parsing器,因为它已经certificate是获得足够的性能和冗余的高容量名称parsing的唯一途径。
相关: 主机故障转移页面是否有免费服务?