8.8.8.8如何始终保持生命?


9

我知道,如果有可以使用的DNS服务器指向公司的任何工作站点,那么您将如何管理数据中心冗余-VRRP,多WAN等。但是DNS服务器本身如何保持在线状态?当某人连接到服务且无法真正配置时,它是第一击。我的意思是例如8.8.8.88.8.4.4。我不记得他们很沮丧。曾经 ISP如何管理使这些IP 始终保持在线状态?

我知道这可能是一个非常广泛的问题,但我只想听听可用于此目的的协议/技术的名称。我可以自行阅读有关它们的详细信息。


3
在Anycast上阅读。简短:有多个具有相同IP地址的主机。这就是CloudFlare,Google,YouTube和其他大型网络的工作方式。
巨人树

google.com和cloudflare具有多个IP。DNS查询根据位置等返回各种IP。但是8.8.8.8实际上是单个IP​​。而且它不能使用“多个A记录”或其他基于DNS的冗余,因为它本身就是DNS。单个IP下可以有多个站点/主机吗?他们使用类似多ISP的BGP吗?
拉普索

2
就像巨树所说的那样,它是Anycast。Anycast不涉及DNS。
Daniel B

IPv4本机不支持任播。根据维基百科,如果我理解正确的话,似乎可以使用BGP来实现。en.wikipedia.org/wiki/Anycast
Lapsio

对于数据报服务,不需要对任播的特殊支持-它只是由于每个路由器都进行自己的最短路径路由计算而产生。BGP本身也不“支持”任何广播(将其视为单播路由),但这是在Internet范围内进行广播的一种常用方法。
user1686

Answers:


10

首先,VRRP完全不依赖DNS。为了在单个站点内实现冗余,您可以在共享的VRRP地址上运行DNS服务器。

但是,正如其他人在评论中提到的那样,这些服务还使用任播路由,这实际上意味着同一IP地址存在于世界各地。当整个站点出现故障时,都会重新计算世界范围内的路由,从而使您的数据包最终到达另一个工作站点。

一个更好的例子比谷歌的公共DNS将是 DNS服务器-其服务的那些.区域,保持指针comorgeu,等等-因为他们有地图的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路由器之间必须协调,以便在服务崩溃时撤回路由。

另请参阅“ 4.2.2.2的历史。是什么故事?” 在NANOG邮件列表上:post 1post 2


“如何在不到60秒的时间内通过这个奇怪的技巧接受您的答案”
user1686

您在上一段中提到的“岛屿”是什么?只是未连接的站点?
Lapsio

是的–您网络中彼此之间或其余部分之间没有互连的部分。(尽管这只是一个例子。也可以通过欺骗路由协议在一个大型互连网络内实施内部任意广播。)
user1686

0

一种实现方法是使用服务器端平衡器。当您以IP 8.8.8.8连接到网关时,它将把请求分发到系统内部的一台免费服务器。因此,当一台服务器死机时,它不会导致整个系统瘫痪。

对于Internet服务,服务器端负载平衡器通常是一个软件程序,它在外部客户端连接到访问服务的端口上侦听。负载平衡器将请求转发到“后端”服务器之一,该服务器通常会回复负载平衡器。这使负载均衡器可以在客户端不知道内部功能分离的情况下答复客户端。它还可以防止客户端直接联系后端服务器,这可以通过隐藏内部网络的结构并防止对内核网络堆栈或其他端口上运行的不相关服务的攻击而获得安全优势。

一些负载均衡器提供了一种机制,可以在所有后端服务器都不可用时执行一些特殊的操作。这可能包括转发到备用负载平衡器,或显示有关中断的消息。

同样重要的是,负载平衡器本身不要成为单点故障。通常,负载平衡器是在高可用性对中实现的,如果特定应用需要,它们还可以复制会话持久性数据。[5]


是的,但是负载均衡器仅在使用其他高可用性技术(例如VRRP,路由协议等)时才不是单点故障。但是VRRP或IGP还是LAN解决方案。因此,我的意思是说与数据中心的ISP边界广域网连接失败。公司当然有多个WAN,因此只要站点网关可以切换到不同的WAN链接就可以了,但是保持相同的IP仍然是问题。如果DNS可用,则可以-多次完成A或AAAA记录。但是,当它是DNS服务器本身时,唯一的解决方案是多个ISP之间的任播/ BGP。
Lapsio

我指的是网关后的 WAN高可用性解决方案。当整个公司站点由于ISP灾难而无法从世界访问时。8.8.8.8不能假定ISP可以工作。当整个世界都依赖您的服务时,您就不能依赖一家公司
Lapsio
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.