第21讲 | 数据中心:我是开发商,自己拿地盖别墅
下载APP
关闭
渠道合作
推荐作者
第21讲 | 数据中心:我是开发商,自己拿地盖别墅
2018-07-04 刘超 来自北京
《趣谈网络协议》
课程介绍
讲述:刘超
时长15:33大小7.14M
无论你是看新闻、下订单、看视频、下载文件,最终访问的目的地都在数据中心里面。我们前面学了这么多的网络协议和网络相关的知识,你是不是很好奇,数据中心究竟长啥样呢?
数据中心是一个大杂烩,几乎要用到前面学过的所有知识。
前面讲办公室网络的时候,我们知道办公室里面有很多台电脑。如果要访问外网,需要经过一个叫网关的东西,而网关往往是一个路由器。
数据中心里面也有一大堆的电脑,但是它和咱们办公室里面的笔记本或者台式机不一样。数据中心里面是服务器。服务器被放在一个个叫作机架(Rack)的架子上面。
数据中心的入口和出口也是路由器,由于在数据中心的边界,就像在一个国家的边境,称为边界路由器(Border Router)。为了高可用,边界路由器会有多个。
一般家里只会连接一个运营商的网络,而为了高可用,为了当一个运营商出问题的时候,还可以通过另外一个运营商来提供服务,所以数据中心的边界路由器会连接多个运营商网络。
既然是路由器,就需要跑路由协议,数据中心往往就是路由协议中的自治区域(AS)。数据中心里面的机器要想访问外面的网站,数据中心里面也是有对外提供服务的机器,都可以通过 BGP 协议,获取内外互通的路由信息。这就是我们常听到的多线 BGP 的概念。
如果数据中心非常简单,没几台机器,那就像家里或者宿舍一样,所有的服务器都直接连到路由器上就可以了。但是数据中心里面往往有非常多的机器,当塞满一机架的时候,需要有交换机将这些服务器连接起来,可以互相通信。
这些交换机往往是放在机架顶端的,所以经常称为 TOR(Top Of Rack)交换机。这一层的交换机常常称为接入层(Access Layer)。注意这个接入层和原来讲过的应用的接入层不是一个概念。
当一个机架放不下的时候,就需要多个机架,还需要有交换机将多个机架连接在一起。这些交换机对性能的要求更高,带宽也更大。这些交换机称为汇聚层交换机(Aggregation Layer)。
数据中心里面的每一个连接都是需要考虑高可用的。这里首先要考虑的是,如果一台机器只有一个网卡,上面连着一个网线,接入到 TOR 交换机上。如果网卡坏了,或者不小心网线掉了,机器就上不去了。所以,需要至少两个网卡、两个网线插到 TOR 交换机上,但是两个网卡要工作得像一张网卡一样,这就是常说的网卡绑定(bond)。
这就需要服务器和交换机都支持一种协议 LACP(Link Aggregation Control Protocol)。它们互相通信,将多个网卡聚合称为一个网卡,多个网线聚合成一个网线,在网线之间可以进行负载均衡,也可以为了高可用作准备。
网卡有了高可用保证,但交换机还有问题。如果一个机架只有一个交换机,它挂了,那整个机架都不能上网了。因而 TOR 交换机也需要高可用,同理接入层和汇聚层的连接也需要高可用性,也不能单线连着。
最传统的方法是,部署两个接入交换机、两个汇聚交换机。服务器和两个接入交换机都连接,接入交换机和两个汇聚都连接,当然这样会形成环,所以需要启用 STP 协议,去除环,但是这样两个汇聚就只能一主一备了。STP 协议里我们学过,只有一条路会起作用。
交换机有一种技术叫作堆叠,所以另一种方法是,将多个交换机形成一个逻辑的交换机,服务器通过多根线分配连到多个接入层交换机上,而接入层交换机多根线分别连接到多个交换机上,并且通过堆叠的私有协议,形成双活的连接方式。
由于对带宽要求更大,而且挂了影响也更大,所以两个堆叠可能就不够了,可以就会有更多的,比如四个堆叠为一个逻辑的交换机。
汇聚层将大量的计算节点相互连接在一起,形成一个集群。在这个集群里面,服务器之间通过二层互通,这个区域常称为一个 POD(Point Of Delivery),有时候也称为一个可用区(Available Zone)。
当节点数目再多的时候,一个可用区放不下,需要将多个可用区连在一起,连接多个可用区的交换机称为核心交换机。
核心交换机吞吐量更大,高可用要求更高,肯定需要堆叠,但是往往仅仅堆叠,不足以满足吞吐量,因而还是需要部署多组核心交换机。核心和汇聚交换机之间为了高可用,也是全互连模式的。
这个时候还存在一个问题,出现环路怎么办?
一种方式是,不同的可用区在不同的二层网络,需要分配不同的网段。汇聚和核心之间通过三层网络互通的,二层都不在一个广播域里面,不会存在二层环路的问题。三层有环是没有问题的,只要通过路由协议选择最佳的路径就可以了。那为啥二层不能有环路,而三层可以呢?你可以回忆一下二层环路的情况。
如图,核心层和汇聚层之间通过内部的路由协议 OSPF,找到最佳的路径进行访问,而且还可以通过 ECMP 等价路由,在多个路径之间进行负载均衡和高可用。
但是随着数据中心里面的机器越来越多,尤其是有了云计算、大数据,集群规模非常大,而且都要求在一个二层网络里面。这就需要二层互连从汇聚层上升为核心层,也即在核心以下,全部是二层互连,全部在一个广播域里面,这就是常说的大二层。
如果大二层横向流量不大,核心交换机数目不多,可以做堆叠,但是如果横向流量很大,仅仅堆叠满足不了,就需要部署多组核心交换机,而且要和汇聚层进行全互连。由于堆叠只解决一个核心交换机组内的无环问题,而组之间全互连,还需要其他机制进行解决。
如果是 STP,那部署多组核心无法扩大横向流量的能力,因为还是只有一组起作用。
于是大二层就引入了 TRILL(Transparent 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 讲,不知你掌握得如何?每节课后我留的思考题,你都有没有认真思考,并在留言区写下答案呢?我会从已发布的文章中选出一批认真留言的同学,赠送学习奖励礼券和我整理的独家网络协议知识图谱。
欢迎你留言和我讨论。趣谈网络协议,我们下期见!
分享给需要的人,Ta购买本课程,你将得20元
生成海报并分享
赞 37
提建议
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
上一篇
第20讲 | CDN:你去小卖部取过快递么?
下一篇
第22讲 | VPN:朝中有人好做官
精选留言(95)
- 浪子恒心2018-07-04这期的知识量好大,接触的少不太好理解呵128
- 朱显杰2018-07-04运维人员通过vpn连入机房网络,再通过堡垒机访问服务器或网络设备
作者回复: 赞
80 - u2018-07-07云计算技术部首席架构师👍🏻👍🏻👍🏻!48
- 李亮洲2020-03-14看了好几遍,并且在网络上查了其它资料,才搞清楚一点点,二层网络是指在链路层传输,三层网络是指在网络层传输。VM动态迁移需求(服务IP地址不变,服务不停,转移到其它服务器上,产生了大二层需求)产生了这些技术,堆叠(网络设备虚拟化+链路聚合技术构建的二层网络天然没有环路)只能连接1万到2万台服务器, TRILL(仿造第三层,通过在二层报文前插入额外的帧头,并且采用路由计算的方式控制整网数据的转发)28
- 泡泡2018-07-11一:跨机房的高可用,应该就是异地灾备了。比如说数据库的dataguard和goldengate 二:运维人员先通过公网访问跳板机,然后在跳板机上以内网地址访问服务器18
- nvtag2018-07-04这期的知识量有点太多了 看懵了。求救
作者回复: 后面越来越深入喽
共 2 条评论14 - summer2018-07-06引入叶脊网络的原因还是不好理解。为何说原有拓扑不能很好支持东西流量呢?共 2 条评论10
- bubble2018-07-04感觉跟以前的知识没办法串起来,理解费劲
作者回复: 可以回顾一下原来的知识,的确有点难
10 - 戴劼 DAI JIE🤪2018-07-06五六年前在政府机房以及自己公司托管的机房都没见过用双网卡。自己在学生时代倒是尝试过用两张二手英特尔服务器网卡实现网速翻倍。共 1 条评论9
- 行者2018-07-041. 跨机房的高可用,类似阿里服务的异地多活,服务部署在多个机房里,机房之间完全对等,一个机房出了问题,马上切换到另一个机房中。 2. IT管理员应该首先连接VPN,然后在访问数据中心内部服务,不能直接通过公网访问。共 1 条评论9
- Summer___J2018-07-09越听余额跟不上了……8
- 核桃2020-12-27这节课的内容对于不熟悉vlan的同学来说有点难了,这里需要了解一下vxlan技术,还有overlay网络一起了解可能会比较好7
- DFighting2019-12-20一不小心发布了,失误失误 关于为什么2层不能有环而3层可以有环这个问题,结合评论区的大佬们的回答,我觉得可以这么理解 1、为什么不能有环,因为存在环就会有收敛速度慢和循环广播风暴的问题,2层直接连接底层服务器,也就是说是一个全互联的网络,环的存在肯定会大大影响收敛速度,且循环风暴可能会拖垮整个网络 2、为什么3层网络可以有环,因为我理解这里的3层网络和2层网络是分割开来的,3层网络收敛速度快,有环可以理解为多条等价路由。最关键的是,循环广播不会导致整个网络的瘫痪(如果我的假设有误,请大佬指点) 至于文章最后提到的叶脊网络,仔细看下文章之前介绍的垂直结构,互通和流量都是南北方向的,对于同层间的互联考虑的很少,特别是不同区的2层之间只能通过3层的汇聚交换机进行互联,也就是汇聚交换机既需要汇聚层内的流量,还需要处理层间的流量,这样网络的横向扩展就全系于此了(有点类似于单点,风险太大了)。而叶脊网络,将横向请求全部交给了叶子节点,这样就可以完全脱离单个区的限制,专心做汇聚(横向和南北),也更容易针对叶子节点做高可用。 这怕是最多的一次评论了,期待后续课程的学习!!展开共 1 条评论7
- caohuan2019-03-05本篇所得:我们通过url访问服务器,服务器里的把相应的数据反馈给用户,数据存放在数据中心里,为了提高性能和效率,高可用是需要的,所以 运营提供商商需要有多家,服务器需要多张网口,多张网卡需要聚合形成一张网卡对外提供服务,防止一家运营商或者一个网卡有问题,用户不能访问服务器 。 多个机箱相连 形成汇聚层交换机,多路径可以有高可用和负载均衡的效果,多个可分区 用核心交换机连接。 1.数据中心分为三层,接入层 、汇聚层、核心层,最外面是边界路由和安全设备; 2.数据中心所有链路需要高可用,所以需要冗余和叠加,服务器需要绑定网卡 交换机需要堆叠,三层设备通过等价路由,二层设备通过TRILL提高 可用性; 3.随着大数据的发展,东西流量节点间的交互,比南北流量(服务器与节点的交互)更重要,所以有必要使用叶脊网络结构。 回答老师的问题:1.跨机房 高可用应该也 可以使用 单个设备的 多网卡的聚合,以及把单个高可用设备连接起来,形成跨机房的高可用性,看老师后面的正确的讲解; 2.IT管理员可以通过工具 比如软件后台 访问数据中心吧,期待后面章节的解释。展开6
- 佳楠2019-01-15试着答一波: Q: 那为啥二层不能有环路,而三层可以呢? A: 技术上二层环路可以通过 STP 协议来破环,但是使用 stp 后,只有一个链路能起作用,对于高可用性来说,失去了互备的意义。 三层可以通过路由协议 OSPF 找到最佳的路径进行访问,而且还可以通过 ECMP 等价路由,在多个路径之间进行负载均衡和高可用。展开共 1 条评论5
- 扬~2018-11-07请问叶脊网络与普通的垂直结构有什么区别,文中好像没细说且图片看起来跟普通的结构就只是缺少了汇聚层。另外,利用网桥协议的网络中发送方如何事先就知道了我要到网桥3呢?IP层是因为有DNS服务存在,那么在链路层是什么保证的呢?
作者回复: 特点就是全连接,没有瓶颈点
共 2 条评论5 - 戴宇2020-10-08读了几遍,查了一些资料,感觉清晰了很多,讲的是一个数据中心的演变过程。 1. 服务器放在机架,同机架服务器通信引入交换机 2. 不同机架服务器连接引入汇聚交换机 3. 不同可用区服务器连接引入核心交换机 4. 为了服务器之间高效通信,而不是借鉴了第三层IP协议改造二层协议,引入链接透明互联协议。 5. 随着东西流量的重要新和流量浪费,去掉二层交换机,变成数据中心现在的叶脊网络展开4
- von2020-03-17啊哈,终于有节课听着很熟悉了,俺就是从事跨机房双活一体机的4
- King-ZJ2020-03-23数据中心的结构越来越扁平,更有利于集群的扩展。对于大二层所说的TRAILL技术,确实没有接触过,但听说过,主要也没用过。现在大二层差不多都是使用的VXLAN技术来实现,可以去探究一下技术的演进,多了解技术的变迁,也能更加明白技术的发展趋势。3
- 快乐就好2019-05-16老师好 我问一下 在数据中心混合网络(有电信、移动、联通)中,物理机这边做了bond,但是每个网络分别做了不同的bond别名,而且他们的mac地址是一样的,这种情况下,在交换机上就会一直提示,说有mac地址冲突问题,请问这种情况如何解决呢?
作者回复: 同一个vlan不能mac冲突,要么放在不同的vlan里面
3