第二章:华为云Stack规划设计
- 交付总流程
- 准备工作:了解客户的基本现场,并且对客户的需求有基本的认知。
- HLD方案
- BOQ报价
- 设备采购和设备上架
- 准备工作:了解客户的基本现场,并且对客户的需求有基本的认知。
2.安装部署流程
硬件架构设计
硬件设备选配
设备上架与初始化配置
准备相关资料(自动下载)
安装HCSDeploy
- 初始化安装,设计参数,上传安装包,自动化部署
- 扩展安装,设计参数,自动化部署
BCManager——eReplication——UltraVR
3.设备选配
- 服务器
三种角色,控制+网络+计算,控制3,网络2,计算1
由于zookeeper进程的存在,所以控制管理节点最少3台。
网络主备管理,主要是提供SDN网络,需要2台服务器
计算节点提供资源,最少1台
- 防火墙
至少选配2台,做主备用,用于管理流量的筛查
可以选配2台WAF,做网页流量的安防
- 交换机
推荐至少选择CE系列园区网交换机
- 存储
建议至少配置1台存储,用于保存核心数据
为什么控制节点至少需要3台?
HCS是一个分布式的系统,控制节点选择2台设备做主备实际上是不安全的,所以为了安全性保证,我们选择使用分布式集群管理系统,也就是遵循开源Zookeeper的原理进行设计。在zookeeper中,有两个角色分别是leader和follower,leader是主,follower是从,用户写数据的时候,需要写leader,由leader向follower进行同步,保证全局的数据一致性。如果是用户发起读请求,那么就选择任意一台设备进行数据读取均可。所以按照这种方式进行控制节点的部署实际上效率要远远高于主备。
zookeeper实际上是遵循设计3个及3个以上的奇数个节点
因为设备开局的时候是需要进行leader选举的,也就是每次设备重启或者进程重启的时候,leader的角色是会发生变化的,一般来说都是谁先安装完成或者是谁先启动,谁就是leader。但是在实际操作中,按照流程是需要进行投票的。还需要进行说明的是,控制节点在整体操作过程中,所有的写请求,需要经过投票同意才能进行执行,这也就是为什么不去强制制定leader而是需要通过选举确定,因为整个控制进程的运行流程都是靠投票确定的。
在投票中,我们使用的是过半制,也就是谁的票数超半数,谁就能成为leader。所以,首先最少控制节点要3台,因为少于3台无法选举。3台以上的时候,情况如下:
设备数 过半票数 容灾数
3 2 1
4 3 1
5 3 2
6 4 2
7 4 3
…………
所以仅当设备数为奇数的时候,允许损坏的设备数才会增加
控制节点至少需要4个网口
网络节点至少需要8个网口
计算节点至少需要4个网口
HCS的流量分为了管理流量、业务流量、存储流量,管理流量和业务流量相对都不是特别的高,尤其是管理流量实际上使用非常低,在不是非常顾虑安全性的情况下,可以配置管理、业务流量合并,在一个接口发送、存储流量因为涉及到海量数据传输,所以必须独享网络接口。
HCS所有的设备接口都必须以一对的形式出现,为了保证一旦接口损坏,不会出现业务中断。
所以最简配置方法就是:控制:管理+业务、存储
网络节点的最大的作用就是做流量转发和流量控制的,所以一定不能合设流量,必须分离,所以网络节点的流量=管理流量+vRouter+NAT_LBaas+ELB_SNAT
计算节点同控制节点,两者都可以将管理和业务流量合设
第三章:HCS网络流量概述
架构概述
传统数据中心的网络一般来说都是以三层架构作为主基准的,比如数通中经常基础性使用到的接入层、汇聚层、核心层,三层网络架构,但是这种架构在云上使用实际上是比较有难度的,因为传统架构在传输云流量的时候,延迟比较高,会造成用户体验差,另外云内部本身就有虚拟网络架构,通过OpenSwitch、OVS、SDC等方式进行实现,所以就会造成云架构内部的网络接入物理网络时,配置比较困难,对接也比较有难度。所以为了能够提升转发效率,降低转发延迟,同时减少配置难度,我们需要将传统的三层网络架构,更新为大二层网络架构
大二层网络架构出现的一个根本原因除了以上的性能问题之外,实际上还有两个很重要的无法解决的核心因素,分别是管理困难,跨架构、跨设备的网络通信。
在云架构中,当用户拥有多个云资源的时候,我们是无法保证用户一定是资源来自于同一个服务器,这些资源可能来自于机房的任意一台设备。物理上,这些资源是有隔离性的,通信需要依赖多台网络设备,但是在逻辑上,这些资源实际上是接入到了一个虚拟网络中的。比如2台ECS,可能是源自于2台物理服务器的,中间需要经历若干台设备的转发才能进行通信,但是在逻辑上,这两台设备是接入到一台交换机的,他们可以直接通过交换机进行通信,不需要三层转发。
在这种跨物理设备的情况下,我们需要做到在逻辑上让相关的资源是直连的。一般情况下都是使用代理软件(如VPN)去进行实现,但是在云网络中,这种情况是绝对不合理的,因为用户的数量很多,逻辑子网的数量很多,我们不可能创建和管理如此多的子网VPN进行跨物理架构的联通。而且用户可以自由的创建逻辑子网,这就导致当用户创建的逻辑子网的时候,我们就需要创建VPN,用户删除,VPN删除,同时用户的资源分配到哪个设备上,这个设备就要和其他的设备建立VPN连接,这个连接是指数级的。所以采用三层架构的网络第一无法解决多层网络的问题,第二无法解决跨物理网络的逻辑网络管理。
基于这些问题,我们必须要选择一种新的技术去实现云的网络需求,这种需求的实现手段,就是基于大二层网络的VXLAN架构
大二层网路最早出现就是为了解决网络中的复杂架构问题。由于早期数据中心里面有非常多的设备,这些设备都需要入网接入,所以采用三层网络架构有时候都不一定够用。有时候会有二层或者是三层的汇聚层进行接口汇聚和流量汇聚,这就导致整个架构非常的复杂难以管理。所以人们提出使用大二层架构进行方案的解决,大二层方案主要解决了以下几个问题:
- 三层网络,一般来说网关都是放在核心的,这就代表所有的流量如果跨网访问,首先都会转发到核心,然后由核心进行下一步转发,但是DC中,大量的流量实际上都不是访问的公网,还有很多流量是内网之间互访的,采用三层架构就会很浪费核心的网络交换资源。
- 在交换网络中我们经常会使用环路或者是多线连接来进行网络安全的冗余度保证。但是受限于网络转发的限制,同时为了避免广播风暴,我们通过STP协议主动地在逻辑上断开了一些端口的连接,这就导致冗余线缆的连接是很浪费带宽的。
- 为了解决以上的两个问题,人们提出了使用堆叠技术,堆叠技术就是通过istack线缆连接两台物理设备,让他们在逻辑上形成一台设备的方式提升整体转发性能同时提升接口带宽,但是堆叠技术能够提升的性能是非常有限的,在云架构下的海量服务器和流量转发的需求下,堆叠技术实际上是很难满足的。
VXLAN(虚拟扩展本地局域网),该技术的内涵实际上和名字有很大的关联,网络扩展使用的技术核心就是隧道。VXLAN的实现就是基于隧道技术实现的。从某种角度来讲,VXLAN实际上和VPN技术有相似性。
通过隧道技术我们可以在传统的路由上叠加一个二层的虚拟网络,实现VXLAN内部的互通,VXLAN使用的方式是MAC in UDP的封装方法,也就是在IP报文的基础上,封装以太网报文。受到IP网络理论上无限可达的特性,VXLAN可以进行理论上的无线扩展,虚拟机之间的通信不会受到任何网络架构的限制。
VXLAN的优势:
- VXLAN降低了MAC地址表的规格,正常情况下,设备在进行流量转发的时候,会记录MAC地址到自身的地址表,数据在转发的过程中,都会记录发送者,即源MAC地址到本地。用于进行后续的通信,但是在大型网络架构中,设备数量过多,会导致转发的网络设备的MAC地址表过大,造成查询延迟和转发延迟,而通过VXLAN的封装,我们可以隐藏MAC地址,因为发送者的MAC地址是被封装在UDP中的,所以对转发的网络设备实际上是不可见的。这就可以减少网络设备对MAC地址的记录,降低查询延迟
- 使用VXLAN可以将物理网络中的资源进行隔离,通过VNI,VXLAN Network Identifier网路标识,可以实现海量网络的隔离需求,满足用户的实际使用。通过VXLAN的VNI,我们可以将一个物理设备上的云资源分配不同的VNI,不同VNI的设备之间是无法通信,这样做有一个好处就是资源可以得到真实的隔离性,而且即使不同的用户使用的是相同的网络,也不会出现冲突,只要VNI不同即可。
- 通过VXLAN,我们将跨物理资源的逻辑资源,在逻辑上直连起来了,这样当我们需要对这些逻辑资源做操作的时候,就可以按照内网的操作方法进行操作,极大的减小了操作难度。
spine-leaf架构基本概念
Spine-leaf架构实际上是源自于DC中的一个核心概念,主要是用于建设基于VXLAN的大二层网络使用的。其中主题的组成部分如下:
spine:骨干架构,骨干节点是整个底层网络的核心节点,主要用于高速转发,通过spine我们可以连接到各个leaf节点。可以理解为是核心层。受限于骨干节点的海量数据转发,spine架构的设备必须选择高性能设备,如华为园区网交换机CE系列,尤其是CE6800系列。
leaf:叶节点,作为终端接入的设备,功能等同于三层网络架构下的接入层。一般来说由满足客户带宽需求的设备构成,如华为S系列交换机,其中比较典型的就是S5700系列。
Fabric:由spine交换机和leaf交换机构成的物理网络拓扑,也就是我们说的底层物理网络
service leaf:服务叶节点,主要是提供防火墙、负载均衡功能,这些功能可以满足OSI七层网络架构模型中的L4-L7级流量转发的需求(L1:物理层,L2:数据链路层,L3:网络层,L4:传输层,L5,会话层,L6:表示层,L7:应用层),这里所指的满足L4-L7的转发,实际上就是指Leaf节点能够识别到L4-L7级的流量,能够对这些高层报文进行拆解和读取,一般用于VXLAN网络中进行数据的筛选和控制,如防火墙的安全控制,负载均衡设备的LVS转发。目前,Service Leaf设备一般选配华为防火墙USG6500系列,负载均衡设备一般会选配深信服、F5、启明星辰、A10
Server Leaf:服务器叶节点,主要是提供虚拟计算资源入网的功能,比如华为的ECS、BMS、CCE等相关服务的接入网络
Border Leaf:主要是提供跨数据中心级别的网络通信的转发,毕竟数据最终还是要到达公网,或者是到达分支站点,那么跨物理网络的连接,就需要通过Border Leaf去进行实现。
VXLAN的工作原理:
NVE:网络虚拟边缘,通过NVE我们可以实现将传输过程中所有的物理设备无视的操作。也就是我们从源到目标端,除了源的接入和目标的接入,中间所有的设备在逻辑上都是不存在的,我们通过隧道打通两个边界,让虚拟机达到在一个子网内的效果。
NVE的核心功能就是在物理架构上实现了虚拟网络,可以说VXLAN的底层工作基本都是由NVE进行的控制,转发网络的架构也都是由NVE进行的隐藏。
也就是说,从NVE开始,到对端的NVE,中间的网络都是被屏蔽的。
vxlan-vtep
相较于NVE来说,VTEP实际上可以被理解为是一个逻辑的概念,或者说是一个配置级别的概念,通过VTEP我们进行封装和解封装的操作,VTEP是NVE的核心,即NVE实现大二层虚拟网就是通过VTEP实现的,NVE代表的是一个物理化的概念,而VTEP是一个逻辑上的概念,VTEP一般来说是由一个本地环回接口的IP地址组成的。NVE在转发VXLAN的流量的时候,就不在以底层的IP地址作为通信的源和目标IP,而是以VTEP的IP地址作为源端和目标端的。
VTEP为什么会选择配置在LoopBack接口呢?
因为LoopBack接口是本地环回接口,这个接口是设备的一个逻辑接口,它的好处就是稳定,不会由于任何一个物理接口的损坏而下线,仅当设备本身出现了物理损坏的时候,LoopBack接口才会down掉。正是由于这种接口类型的稳定性,我们选择VTEP配置在这里。但是从配置角度上来说,VTEP配置在物理接口上也不是不可行的,只是从稳定性上来说,非常的不建议。
vxlan-VNI与BD
VNI:VXLAN网络标识,通过VNI可以区分不同的VXLAN的网段,不同VNI的资源之间无法直接通信,也正是因为这种特性,在云中,我们可以给每个用户的VPC分配一个全局唯一的VNI,这样做即使不同用户使用的是相同的IP,但是通过VNI的屏蔽,我们仍然可以保证他们在内部是能够转发和正常使用的。
BD:Bridge Domain,实际上个人认为应该称之为叫做BrodeCast Domain广播域,每个被分配了VNI的用户,其资源在进行通信的时候会有一个传递的范围,这个范围就称为BD
也就是说,VXLAN中相关的虚拟资源在发送一个广播包的时候,这个包所能传递的最大的距离,实际上就是BD距离。每个VNI的BD都不完全相同,而且一个VNI对应一个BD。
NVE是一种角色,只要成为了边界设备,就是NVE,NVE可以承载多个VNI的流量,也可以被不同的BD划入。
vxlan二层网关、三层网关
二层VXLAN正常情况下,一般来说设备之间的交互都是已通过二层转发就可以实现的,设备和资源之间的访问,在VXLAN的前提下,可以直接在Leaf或者是Spine上实现。这时候,我们实际上流量在逻辑网络中看来是没有经过三层转发的,这时候进行数据转发的设备就叫做二层网关,二层网关主要是用于VNI子网内部通信,但是如果说某个资源需要进行跨网络的转发,也就是在逻辑网络的层面,也需要进行跨网转发的时候,这种情况下就需要用到三层网关了,三层网关一般是比Spine和leaf级别更高的核心交换机,核心的交换机可以实现跨网络的海量数据转发,这种设备是逻辑层实现三层转发的核心。
二层网关一般就是NVE
三层网关一般是Border Leaf,三层网关
三层网关VBDIF
VBDIF就是三层网关的核心,三层网关进行转发的时候,需要使用VBDIF进行通信,同样不是使用底层的物理网络。VBDIF的地址是可以在底层物理网络通信的,也可以在VXLAN网络中通信。只是说在底层网络中,VBDIF就是普通的转发IP,到VXLAN中VBDIF就是BD的边界,也就是说VBDIF隔离了BD域。
本节总结:
- VXLAN(组件虚拟网络的技术核心):虚拟扩展本地局域网,通过隧道的形式,将物理上有隔离的资源,在逻辑上连通起来,使其二层互通。
- 物理网络:指的是构成VXLAN连接的基础IP网络
- 逻辑网络:指的是通过VXLAN构建的虚拟网络
- NVE:网络虚拟边缘,资源连接时,接入的设备角色就是NVE,NVE负责将中间的链路进行屏蔽,使两个逻辑资源在虚拟网络上二层互通。
- VTEP:VXLAN隧道端点,本质是一个配置在LoopBack本地环回接口的IP地址,VXLAN的NVE进行通信的时候,就依据VTEP的IP进行转发(二层)。
- VNI:VXLAN网络标识,区分不同的VXLAN的标识,一般来说一个子网或者是云中的一个用户独享一个VNI,VNI一共是24位,支持16M个VXLAN子网。不同子网不能通信,VNI是构成云VPC虚拟私有云的关键技术
- BD:一个VXLAN中某个VNI的网络在发送广播的时候所能传输的最大的距离,就是BD,Bridge Domain,也可以被理解为是Broadcast Domain。每个VNI都有自己独立的BD,互不冲突,具有不同的VNI的BD不完全相同。
- 二层网关,数据进行二层通信的时候,即VNI内部通信的时候,转发的设备就是二层网关,一般来说二层网关就是NVE
- 三层网关,数据需要进行跨VNI的通信的时候,或者是数据需要访问VXLAN之外的网络的时候,就需要三层网关设备进行数据转发
- VBDIF:三层网关通信的时候,需要进行NAT的地址转换,转换的地址就是VBDIF。通过VBDIF接口将VNI内部的子网IP转换为VBDIF的接口IP进行对外访问。
- Spine-leaf架构(组件物理网络的架构核心,是设备的角色)
- spine:骨干节点,负责数据转发
- leaf:叶节点,负责设备接入
- Fabric:物理网络拓扑
- service Leaf:提供OSI模型高层的数据读取功能的设备
- Server Leaf:提供服务器资源接入的设备
- Border leaf:负责三层转发的设备,一般是沟通数据中心内外的流量转发