我知道,如果有可以使用的DNS服务器指向公司的任何工作站点,那么您将如何管理数据中心冗余-VRRP,多WAN等。但是DNS服务器本身如何保持在线状态?当某人连接到服务且无法真正配置时,它是第一击。我的意思是例如8.8.8.8
或8.8.4.4
。我不记得他们很沮丧。曾经 ISP如何管理使这些IP 始终保持在线状态?
我知道这可能是一个非常广泛的问题,但我只想听听可用于此目的的协议/技术的名称。我可以自行阅读有关它们的详细信息。
我知道,如果有可以使用的DNS服务器指向公司的任何工作站点,那么您将如何管理数据中心冗余-VRRP,多WAN等。但是DNS服务器本身如何保持在线状态?当某人连接到服务且无法真正配置时,它是第一击。我的意思是例如8.8.8.8
或8.8.4.4
。我不记得他们很沮丧。曾经 ISP如何管理使这些IP 始终保持在线状态?
我知道这可能是一个非常广泛的问题,但我只想听听可用于此目的的协议/技术的名称。我可以自行阅读有关它们的详细信息。
Answers:
首先,VRRP完全不依赖DNS。为了在单个站点内实现冗余,您可以在共享的VRRP地址上运行DNS服务器。
但是,正如其他人在评论中提到的那样,这些服务还使用任播路由,这实际上意味着同一IP地址存在于世界各地。当整个站点出现故障时,都会重新计算世界范围内的路由,从而使您的数据包最终到达另一个工作站点。
一个更好的例子比谷歌的公共DNS将是根 DNS服务器-其服务的那些.
区域,保持指针com
,org
,eu
,等等-因为他们有地图的13个逻辑地址的每个实例。ICANN的“ L”由160个不同的站点提供服务!
注意,anycast与基于DNS的轮询(同一个名称具有多个地址)无关。任播基本上是通过说谎路由协议来完成的。
Internet使用BGP在组织之间交换路由信息。
BGP 本质上支持根据各种标准从通往同一网络的多个路由中选择最佳。例如,同一客户可能具有到同一ISP的冗余上行链路(宣布两条仅在权重/首选项上不同的路由)。或者客户可能通过多个ISP进行上行链路,每个人都将选择他们首选的路由(主要是最短的AS路径),这就是“真正的”多WAN的要旨。
Multihoming
┌────────[AS 65535]────────┐
client 1 ---ISP---│--BGProuter--+ │
¦ │ ¦--DNSserver │
client 2 ---ISP---│--BGProuter--+ │
└──────────────────────────┘
但是,BGP仅将流量引向您的入口,却不在乎此后会发生什么。因此,如果在内部建立通向同一服务器的两条路由,则会得到多宿主。但是,如果每个“入口”都通向不同的服务器(为同一IP配置),则您将获得任播信息。
Anycast... kind of?
┌────────[AS 65535]────────┐
client 1 ---ISP---│--BGProuter-----DNSserver │
¦ │ │
client 2 ---ISP---│--BGProuter-----DNSserver │
└──────────────────────────┘
重要的是,这还意味着BGP根本不在乎AS是否完全不连续。要获得全球范围内的冗余,只需从多个物理位置宣布同一网络-如果将这些位置连接在一起(以便它们将网络路由到一个位置),则会获得多宿主。如果它们是孤岛,您会得到任意播报。
Anycast
┌────────[AS 65535]────────┐
client 1 ---ISP---│--BGProuter-----DNSserver │
¦ └──────────────────────────┘
¦
¦ ┌────────[AS 65535]────────┐
client 2 ---ISP---│--BGProuter-----DNSserver │
└──────────────────────────┘
(因此,它甚至不必是相同的AS,例如6to4中继由多个独立的组织运行,每个组织都宣布自己的通往的路线192.88.99.0/24
。)
注意事项:
Anycast提供冗余,但不提供负载平衡。BGP收敛后,每个路由器将选择一条首选路由(或偶尔选择一条),并将继续使用它,直到网络发生变化。
但是,你无法预测多久航线将保持稳定,因此选播状态的服务可能会非常棘手。由于无状态且主要使用UDP(EDNS减少了对TCP连接的需求),DNS摆脱了它。
实际服务与BGP路由器之间必须协调,以便在服务崩溃时撤回路由。
一种实现方法是使用服务器端平衡器。当您以IP 8.8.8.8连接到网关时,它将把请求分发到系统内部的一台免费服务器。因此,当一台服务器死机时,它不会导致整个系统瘫痪。
对于Internet服务,服务器端负载平衡器通常是一个软件程序,它在外部客户端连接到访问服务的端口上侦听。负载平衡器将请求转发到“后端”服务器之一,该服务器通常会回复负载平衡器。这使负载均衡器可以在客户端不知道内部功能分离的情况下答复客户端。它还可以防止客户端直接联系后端服务器,这可以通过隐藏内部网络的结构并防止对内核网络堆栈或其他端口上运行的不相关服务的攻击而获得安全优势。
一些负载均衡器提供了一种机制,可以在所有后端服务器都不可用时执行一些特殊的操作。这可能包括转发到备用负载平衡器,或显示有关中断的消息。
同样重要的是,负载平衡器本身不要成为单点故障。通常,负载平衡器是在高可用性对中实现的,如果特定应用需要,它们还可以复制会话持久性数据。[5]