learn-tech/专栏/趣谈网络协议/21数据中心:我是开发商,自己拿地盖别墅.md
2024-10-16 11:00:45 +08:00

149 lines
12 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

因收到Google相关通知网站将会择期关闭。相关通知内容
21 数据中心:我是开发商,自己拿地盖别墅
无论你是看新闻、下订单、看视频、下载文件,最终访问的目的地都在数据中心里面。我们前面学了这么多的网络协议和网络相关的知识,你是不是很好奇,数据中心究竟长啥样呢?
数据中心是一个大杂烩,几乎要用到前面学过的所有知识。
前面讲办公室网络的时候,我们知道办公室里面有很多台电脑。如果要访问外网,需要经过一个叫网关的东西,而网关往往是一个路由器。
数据中心里面也有一大堆的电脑但是它和咱们办公室里面的笔记本或者台式机不一样。数据中心里面是服务器。服务器被放在一个个叫作机架Rack的架子上面。
数据中心的入口和出口也是路由器由于在数据中心的边界就像在一个国家的边境称为边界路由器Border Router。为了高可用边界路由器会有多个。
一般家里只会连接一个运营商的网络,而为了高可用,为了当一个运营商出问题的时候,还可以通过另外一个运营商来提供服务,所以数据中心的边界路由器会连接多个运营商网络。
既然是路由器就需要跑路由协议数据中心往往就是路由协议中的自治区域AS。数据中心里面的机器要想访问外面的网站数据中心里面也是有对外提供服务的机器都可以通过BGP协议获取内外互通的路由信息。这就是我们常听到的多线BGP的概念。
如果数据中心非常简单,没几台机器,那就像家里或者宿舍一样,所有的服务器都直接连到路由器上就可以了。但是数据中心里面往往有非常多的机器,当塞满一机架的时候,需要有交换机将这些服务器连接起来,可以互相通信。
这些交换机往往是放在机架顶端的所以经常称为TORTop Of Rack交换机。这一层的交换机常常称为接入层Access Layer。注意这个接入层和原来讲过的应用的接入层不是一个概念。
当一个机架放不下的时候就需要多个机架还需要有交换机将多个机架连接在一起。这些交换机对性能的要求更高带宽也更大。这些交换机称为汇聚层交换机Aggregation Layer
数据中心里面的每一个连接都是需要考虑高可用的。这里首先要考虑的是如果一台机器只有一个网卡上面连着一个网线接入到TOR交换机上。如果网卡坏了或者不小心网线掉了机器就上不去了。所以需要至少两个网卡、两个网线插到TOR交换机上但是两个网卡要工作得像一张网卡一样这就是常说的网卡绑定bond
这就需要服务器和交换机都支持一种协议LACPLink Aggregation Control Protocol。它们互相通信将多个网卡聚合称为一个网卡多个网线聚合成一个网线在网线之间可以进行负载均衡也可以为了高可用作准备。
网卡有了高可用保证但交换机还有问题。如果一个机架只有一个交换机它挂了那整个机架都不能上网了。因而TOR交换机也需要高可用同理接入层和汇聚层的连接也需要高可用性也不能单线连着。
最传统的方法是部署两个接入交换机、两个汇聚交换机。服务器和两个接入交换机都连接接入交换机和两个汇聚都连接当然这样会形成环所以需要启用STP协议去除环但是这样两个汇聚就只能一主一备了。STP协议里我们学过只有一条路会起作用。
交换机有一种技术叫作堆叠,所以另一种方法是,将多个交换机形成一个逻辑的交换机,服务器通过多根线分配连到多个接入层交换机上,而接入层交换机多根线分别连接到多个交换机上,并且通过堆叠的私有协议,形成双活的连接方式。
由于对带宽要求更大,而且挂了影响也更大,所以两个堆叠可能就不够了,可以就会有更多的,比如四个堆叠为一个逻辑的交换机。
汇聚层将大量的计算节点相互连接在一起形成一个集群。在这个集群里面服务器之间通过二层互通这个区域常称为一个PODPoint Of Delivery有时候也称为一个可用区Available Zone
当节点数目再多的时候,一个可用区放不下,需要将多个可用区连在一起,连接多个可用区的交换机称为核心交换机。
核心交换机吞吐量更大,高可用要求更高,肯定需要堆叠,但是往往仅仅堆叠,不足以满足吞吐量,因而还是需要部署多组核心交换机。核心和汇聚交换机之间为了高可用,也是全互连模式的。
这个时候还存在一个问题,出现环路怎么办?
一种方式是,不同的可用区在不同的二层网络,需要分配不同的网段。汇聚和核心之间通过三层网络互通的,二层都不在一个广播域里面,不会存在二层环路的问题。三层有环是没有问题的,只要通过路由协议选择最佳的路径就可以了。那为啥二层不能有环路,而三层可以呢?你可以回忆一下二层环路的情况。
如图核心层和汇聚层之间通过内部的路由协议OSPF找到最佳的路径进行访问而且还可以通过ECMP等价路由在多个路径之间进行负载均衡和高可用。
但是随着数据中心里面的机器越来越多,尤其是有了云计算、大数据,集群规模非常大,而且都要求在一个二层网络里面。这就需要二层互连从汇聚层上升为核心层,也即在核心以下,全部是二层互连,全部在一个广播域里面,这就是常说的大二层。
如果大二层横向流量不大,核心交换机数目不多,可以做堆叠,但是如果横向流量很大,仅仅堆叠满足不了,就需要部署多组核心交换机,而且要和汇聚层进行全互连。由于堆叠只解决一个核心交换机组内的无环问题,而组之间全互连,还需要其他机制进行解决。
如果是STP那部署多组核心无法扩大横向流量的能力因为还是只有一组起作用。
于是大二层就引入了TRILLTransparent Interconnection of Lots of Link即多链接透明互联协议。它的基本思想是二层环有问题三层环没有问题那就把三层的路由能力模拟在二层实现。
运行TRILL协议的交换机称为RBridge是具有路由转发特性的网桥设备只不过这个路由是根据MAC地址来的不是根据IP来的。
Rbridage之间通过链路状态协议运作。记得这个路由协议吗通过它可以学习整个大二层的拓扑知道访问哪个MAC应该从哪个网桥走还可以计算最短的路径也可以通过等价的路由进行负载均衡和高可用性。
TRILL协议在原来的MAC头外面加上自己的头以及外层的MAC头。TRILL头里面的Ingress RBridge有点像IP头里面的源IP地址Egress RBridge是目标IP地址这两个地址是端到端的在中间路由的时候不会发生改变。而外层的MAC可以有下一跳的Bridge就像路由的下一跳也是通过MAC地址来呈现的一样。
如图中所示的过程有一个包要从主机A发送到主机B中间要经过RBridge 1、RBridge 2、RBridge X等等直到RBridge 3。在RBridge 2收到的包里面分内外两层内层就是传统的主机A和主机B的MAC地址以及内层的VLAN。
在外层首先加上一个TRILL头里面描述这个包从RBridge 1进来的要从RBridge 3出去并且像三层的IP地址一样有跳数。然后再外面目的MAC是RBridge 2源MAC是RBridge 1以及外层的VLAN。
当RBridge 2收到这个包之后首先看MAC是否是自己的MAC如果是要看自己是不是Egress RBridge也即是不是最后一跳如果不是查看跳数是不是大于0然后通过类似路由查找的方式找到下一跳RBridge X然后将包发出去。
RBridge 2发出去的包内层的信息是不变的外层的TRILL头里面。同样描述这个包从RBridge 1进来的要从RBridge 3出去但是跳数要减1。外层的目标MAC变成RBridge X源MAC变成RBridge 2。
如此一直转发直到RBridge 3将外层解出来发送内层的包给主机B。
这个过程是不是和IP路由很像
对于大二层的广播包也需要通过分发树的技术来实现。我们知道STP是将一个有环的图通过去掉边形成一棵树而分发树是一个有环的图形成多棵树不同的树有不同的VLAN有的广播包从VLAN A广播有的从VLAN B广播实现负载均衡和高可用。
核心交换机之外,就是边界路由器了。至此从服务器到数据中心边界的层次情况已经清楚了。
在核心交换上面往往会挂一些安全设备例如入侵检测、DDoS防护等等。这是整个数据中心的屏障防止来自外来的攻击。核心交换机上往往还有负载均衡器原理前面的章节已经说过了。
在有的数据中心里面对于存储设备还会有一个存储网络用来连接SAN和NAS。但是对于新的云计算来讲往往不使用传统的SAN和NAS而使用部署在x86机器上的软件定义存储这样存储也是服务器了而且可以和计算节点融合在一个机架上从而更加有效率也就没有了单独的存储网络了。
于是整个数据中心的网络如下图所示。
这是一个典型的三层网络结构。这里的三层不是指IP层而是指接入层、汇聚层、核心层三层。这种模式非常有利于外部流量请求到内部应用。这个类型的流量是从外到内或者从内到外对应到上面那张图里就是从上到下从下到上上北下南所以称为南北流量。
但是随着云计算和大数据的发展,节点之间的交互越来越多,例如大数据计算经常要在不同的节点将数据拷贝来拷贝去,这样需要经过交换机,使得数据从左到右,从右到左,左西右东,所以称为东西流量。
为了解决东西流量的问题演进出了叶脊网络Spine/Leaf
叶子交换机leaf直接连接物理服务器。L2/L3网络的分界点在叶子交换机上叶子交换机之上是三层网络。
脊交换机spine switch相当于核心交换机。叶脊之间通过ECMP动态选择多条路径。脊交换机现在只是为叶子交换机提供一个弹性的L3路由网络。南北流量可以不用直接从脊交换机发出而是通过与leaf交换机并行的交换机再接到边界路由器出去。
传统的三层网络架构是垂直的结构,而叶脊网络架构是扁平的结构,更易于水平扩展。
小结
好了,复杂的数据中心就讲到这里了。我们来总结一下,你需要记住这三个重点。
数据中心分为三层。服务器连接到接入层,然后是汇聚层,再然后是核心层,最外面是边界路由器和安全设备。
数据中心的所有链路都需要高可用性。服务器需要绑定网卡交换机需要堆叠三层设备可以通过等价路由二层设备可以通过TRILL协议。
随着云和大数据的发展,东西流量相对于南北流量越来越重要,因而演化为叶脊网络结构。
最后,给你留两个思考题:
对于数据中心来讲,高可用是非常重要的,每个设备都要考虑高可用,那跨机房的高可用,你知道应该怎么做吗?
前面说的浏览新闻、购物、下载、看视频等行为都是普通用户通过公网访问数据中心里面的资源。那IT管理员应该通过什么样的方式访问数据中心呢
我们的专栏更新到第21讲不知你掌握得如何每节课后我留的思考题你都有没有认真思考并在留言区写下答案呢我会从已发布的文章中选出一批认真留言的同学赠送学习奖励礼券和我整理的独家网络协议知识图谱。
欢迎你留言和我讨论。趣谈网络协议,我们下期见!