一文讲明白从传统服务器-虚拟化-云计算-容器-云原生的发展历程!!!

目录

一、传统服务器时代

二、虚拟化时代

2.1、虚拟化优势   

2.2、虚拟化商业模式分类 

2.3、开源虚拟化架构

2.3.1、虚拟化方式

半虚拟化

全虚拟化(过渡阶段,已淘汰) 

硬件辅助虚拟化(现阶段主流)

2.3.2、XEN

2.3.3、KVM

2.3.4、KVM为何击败XEN成为虚拟化的主流?

2.4、虚拟化

2.4.1、计算虚拟化

内存复用

UMA:一致性内存访问

NUMA:非一致性内存访问        

2.4.2、存储虚拟化

SAN:存储区域网络

RAID:廉价的冗余磁盘阵列

RAID0—没有损失,磁盘利用率:100%

RAID1—损失50%,磁盘利用率:50%

RAID3—损失1块,磁盘利用率:(n-1)/n

RAID5—损失1块,磁盘利用率:(n-1)/n

RAID6—损失两块,磁盘利用率:(n-2)/n

RAID10

RAID50

LUN:逻辑单元号

文件系统

差分盘技术

2.4.3、网络虚拟化

1、根据端口来划分zone(分区,类似vlan)进行隔离

2、根据WWPN划分zone

3、单机虚拟化的网络连接模式

2.4、华为企业虚拟化(FusionCompute)

2.4.1、企业虚拟化架构

2.4.2、远程管理服务器

集群

三、云计算时代

3.1、OpenStack和虚拟化的区别

3.2、OpenStack九大组件

1、horizon(地平线)

2、nova:提供openstack的计算资源

3、glance:提供镜像服务

4、swift(对象存储)

5、cinder(块存储)

6、neutron

7、heat(编排服务)

8、ceilometer(计量服务)

9、keystone(身份认证)

四、容器时代(集装箱)

五、云原生和微服务时代

一、传统服务器时代

        X86:复杂指令集

        ARM:精简指令集

        同一物理机部署的业务之间无法隔离,cpu、内存、存储等资源共享;当单个业务需要重启物理机才能运行时,导致所有业务重启。

        安全性:一台服务器只承载一种业务

        内存是计算机中的一种存储设备,用于临时存储和读取数据。CPU从内存中读取指令和数据,并将计算结果写回内存。内存的大小决定了计算机可以同时处理的数据量,内存用于暂时存放CPU中的运算数据,以及与硬盘等外部存储器交换的数据。它是外存与CPU进行沟通的桥梁,内存的运行决定计算机整体运行快慢。

        当前,cpu处理速度大约是内存的100倍,为了不让CPU每次都在运行相对缓慢的内存中操作,缓存就作为一个中间者出现了,通常cpu内有3级缓存,即L1、L2、L3缓存。

  1. cpu先从L1缓存中获取指令和数据,如果L1缓存中不存在,那就从L2缓存中获取;
  2. 每个cpu核心都拥有属于自己的L1缓存和L2缓存;
  3. 如果数据不在L2缓存中,那就从L3缓存中获取;
  4. L3缓存就是所有cpu核心共用的。如果数据也不在L3缓存中,那就从内存中获取了;
  5. 当然,如果内存中也没有那就只能从硬盘中获取了。

二、虚拟化时代

        通过“硬件资源分割”实现资源利用率提升,成本大幅降低。

2.1、虚拟化优势   

        与传统物理机相比,虚拟化优势:

  1. 提高资源利用率
  2. 有快照功能
  3. 业务迁移便捷
  4. 克隆虚拟机快捷     

2.2、虚拟化商业模式分类 

        单机虚拟化(如vm workstation)缺点:物理机故障,全部虚拟机就宕机

        企业级虚拟化(集群虚拟化)主流技术:

  1. vmware vsphere(收费高)
  2. Hyper-v(微软)
  3. FusionCompute(华为基于开源KVM研发)

2.3、开源虚拟化架构

        为了区分内核态和用户态,CPU专门设置四个特权等级0,1,2,3;但当时大牛们写Linux内核的时候比较任性,就直接把内核态写在了ring0,用户态写在了ring3,而ring1和ring2至今无用,如果想要重新把内核态写在ring0,用户态写在ring1,就需要重写操作系统内核。

  1. ring0:kernel—可以直接跟cpu内存申请硬件资源;
  2. ring3:application—word、虚拟机等,需要借助管理ring0:kernel申请硬件资源。

2.3.1、虚拟化方式

半虚拟化

        起初,CPU不支持虚拟化,所以需要修改操作系统内核来实现虚拟化,且只能安装linux,因为windows不开源,并且半虚拟化时虚拟机知道自己是一台虚拟机(VM)。

        后来,完全虚拟化兴起,就不需要上述的方式来实现虚拟化,但是半虚拟化也有其优势,给IO设备添加半虚拟化驱动来保留半虚拟化的优势,即CPU和内存采用硬件辅助虚拟化,IO采用半虚拟化,

        virtio是一种半虚拟化的设备抽象接口规范。与宿主机纯软件模拟I/O设备(完全虚拟化)相比,Virtio可以获得更好的I/O性能。

        缺点是必须要求客户机安装特定的Virtio驱动使其知道运行在虚拟化环境中。

        具体如下:

        正常情况下,vm1和vm2在同一宿主机上且不知道自己是虚拟机,vm1和vm2互访需要通过物理交换机交换数据,如果给vm1和vm2的网卡安装半虚拟化驱动(PV driver),vm1和vm2就知道了自己的角色是虚拟机,且在同一宿主机上,连接在同一虚拟交换机(OVS在内存中,利用宿主机cpu和内存资源)下,那么二者通信直接将vm1内存中的数据通过ovs交换至vm2的内存中,无需经过物理交换机,效率更高。所以,vm1和vm2的IO设备(网卡或硬盘等)需要选择virtio类型(虚拟化 IO)来优化资源访问。

        访问网络或者硬盘(IO)的时候,为了取得更高的性能,也需要让虚拟机内核加载特殊的驱动(PV driver),也是让虚拟机内核从代码层面就重新定位自己的身份,不能像访问物理机一样访问网络或者硬盘,而是用一种特殊的方式:我知道我不是物理机内核,我知道我是虚拟机,我没那么高的权限,我很可能和很多虚拟机共享物理资源,所以我要学会排队,我写硬盘其实写的是一个物理机上的文件,那我的写文件的缓存方式是不是可以变一下,我发送网络包,根本就不是发给真正的网络设备,而是给虚拟的设备(ovs),我可不可以直接在内存里面拷贝给他。一旦我知道我不是物理机内核,痛定思痛,只好重新认识自己,反而能找出很多方式来优化我的资源访问。

全虚拟化(过渡阶段,已淘汰) 

 完全虚拟化详细讲解icon-default.png?t=O83Ahttps://blog.csdn.net/gui951753/article/details/81507924

        通过虚拟化软件模拟CPU,内存,磁盘,网络,当VM向内核请求资源的时候,由虚拟化软件来进行的转换,向宿主机内核去申请资源,让VM以为自己是一台真的物理机,但是可以安装windows。

        无需修改操作系统内核,linux和windows都可安装;

        虚拟机内核通过宿主机安装的虚拟化软件向宿主机内核申请资源,但开销大。     

硬件辅助虚拟化(现阶段主流)

        使用完全虚拟化效率太低,Intel和AMD 在CPU内部加一个标记位,让VM知道自己是一个 VM,大部分的指令集可以直接运行在CPU之上,19条敏感指令集除外,还需要依赖于虚拟化软件来转换。

        新的标志位(Intel:VT-X;AMD: AMD-V)表示当前是在虚拟机状态下,还是真正的物理机内核下,对于虚拟机内核来讲,只要将标志位设为虚拟机状态,则可以直接在CPU上执行大部分的指令,不需要虚拟化软件在中间转述,除非遇到特别敏感的指令,才需要将标志位设为物理机内核态运行。        

2.3.2、XEN

        支持半虚拟化、全虚拟化、硬件辅助虚拟化

        外界请求访问虚拟机到达网卡后,需要在domain0(特权虚拟机)队列里排队运算发往目标虚拟,此外需要给domain0预留资源。

2.3.3、KVM

        支持全虚拟化和硬件辅助虚拟化

        KVM虚拟化技术的实现依赖于CPU的虚拟化扩展(如Intel VT和AMD-V)。

        当宿主机启动时,KVM会加载一个轻量级的内核模块kvm.ko,该模块负责与硬件进行交互,实现虚拟机的创建、管理和调度。

        KVM虚拟化技术的主要组件包括以下几个部分:

  1. KVM内核模块:负责与硬件进行交互,提供虚拟机的创建、管理和调度功能。
  2. QEMU模拟器:用于模拟各种硬件设备,如CPU、内存、硬盘等。QEMU通过与KVM内核模块进行通信,实现对虚拟机的控制和管理。
  3. libvirt库:提供了一个跨平台的API,用于管理虚拟机、存储和网络等资源。libvirt库可以与KVM、Xen、VMware等多种虚拟化技术集成,实现了资源的集中管理和自动化运维。

2.3.4、KVM为何击败XEN成为虚拟化的主流?

  1. XEN 需要升级内核,维护一套内核,进来的数据包需要经过domain0 来处理;
  2. KVM 更轻量,通过内核模块来实现,一个VM就是一个进程;
  3. XEN 被 citrix收购,支持cloudstack;
  4. KVM 被红帽收购,支持openstack;
  5. Openstack社区更流行,有更多的厂商支持。

2.4、虚拟化

2.4.1、计算虚拟化

内存复用

        vmems(虚拟内存):假设CNA03为128G内存,原则上CNA03上的虚拟机内存要小于128G;开启内存复用后,128G*150%(默认值)=192G vmems,因为每个虚拟机大概率内存使用率无法到100%(告警机制:当内存使用率达到85%后告警进行扩容)。

  1. 开启内存复用:提高虚拟机开机密度
  2. 关闭内存复用:提高虚拟机性能

        vcpus(虚拟cpu):插槽数*核数* 进程数=2颗物理cpu*每颗cpu20核*每核2个线程=80vcpus。

UMA:一致性内存访问

        MCH是内存控制中枢,也称为北桥芯片,管理速度快的设备,如CPU、内存;

        ICH是输入输出控制中枢,也称为南桥芯片,管理速度慢的设备,如硬盘、网卡;

        DDR3:一种计算机内存规格;

        FSB:前端总线,CPU和内存通过FSB交互数据,前端总线频率:如1333MHz(折合成带宽:1333MHzX64bit/8=10667MB/s=10.67GB/s,即内存带宽);

        当前,服务器的CPU数和内存大小都比较高,且因为只有FSB一条大道,所以FSB的频率成为了制约瓶颈,因为CPU和内存必须通过FSB交互数据。

        当应用程序运行数据时,首先看cpu一级缓存有无数据,依次二级缓存、三级缓存,如都无数据,则从内存获调用数据至cpu运行。

NUMA:非一致性内存访问        

        划分CPU和内存放在不同的NUMA ZONE(01、02、03....)里,如图上左侧cpu0和内存在 zone01里,右侧cpu1和内存在zone02里;

        如果zone01里的资源不够支持某台虚拟机的需求,就会通过QPI(快速互联通道)借用其他zone里的资源满足需求,与FSB单条通道不同,QPI是丼字型道路。

       宿主机创建集群时开启NUMA架构自动调整功能后,新开的虚拟机会自动感知NUMA架构,会尽可能把虚拟机放在一个numa zone里,如果资源不够,就会通过QPI去其他numa zone里获取资源。

注:NUMA与内存复用为互斥关系!

创建集群
1.主机内存复用
        (1)开启可以提高虚拟机开机密度,默认150%
        (2) 关闭提高虚拟机的性能

2.虚拟机启动策略
        (1) 负载均衡:开机时,可以让虚拟机均衡的运行在集群的主机上
        (2)自动分配:减少VRM的计算压力

3.虚拟机NUM结构自动调整
        (1)虚拟机运行时自动感知NUMA架构,让虚拟机尽量运行在一个NUMA Node中
        (2)与内存复用功能互斥,也会带来更多开销
4.开启故障与相应策略
        (1) 主机故障处理策略
        (2)数据存储故障处理策略
        不处理:如果间歇性故障,不处理更合适;
        HA:如果出现故障,HA更合适;

        Windows虚拟机蓝屏处理策略:利用虚拟机tools功能来充当心跳机制,检测虚拟机的状态,一旦检测不到tools心跳,就认为虚拟机蓝屏,通过宿主机将虚拟机强制重启。

5.接入控制策略
        允许故障的数目:在规划时,需要预留30%左右资源,以防止集群中有主机故障,保证所有的虚拟机都能正常运行

6.群体性故障
        在2个小时内如果出现多个主机故障,只处理前2个故障的主机。

7.启用计算资源调度
        根据CPU和内存的使用情况,在集群中进行虚拟机迁移,来达到均衡的目的。

8.启用电源管理
        根据集群的负载情况,如果负载低,就把所有的虚拟机迁移到一部分主机上,把剩余的主机关机,来降低功耗,当业务负载高,则自动开机,将虚拟机迁移到新开机的主机,来达到均衡。

9.开启IMC机制
        就是开启Intel兼容性,使得不同批次的服务器在同一个集群中正常工作,降低高配服务器的性能

为什么要创建多个集群?

        1.服务器硬件配置
        2.根据部门来管理
        3.根据业务 web+ mysqlmail + OA + ERP
        4.根据集群规则

2.4.2、存储虚拟化

AB双控:两个控制器互为备份,每一个控制器管理一部分存储池,当主控制器出现故障时,备用控制器接管主控的工作,互为灾备、负载均衡

SAN:存储区域网络

        存储区域网络(SAN:Storage Area Network):用户主机到存储的连接

        ISCSI 是由IEETF开发的网络存储标准,目的是为了用IP协议将存储设备连接在一起,通过在IP网上传送SCSI命令和数据,ISCSI推动了数据在网际之间的传递,同时也促进了数据的远距离管理。由于其出色的数据传输能力,ISCSI协议被认为是促进存储区域网(SAN)市场快速发展的关键因素之一。

  1. IP-SAN:IP网络连接(也叫ISCSI,将SCSI协议封装在IP网络中传输,远距离,异地灾备)
  2. FC-SAN:光纤网络连接(SCSI协议封装在FC的网络传输 FC-SAN,100KM 同城)
RAID:廉价的冗余磁盘阵列

为什么需要RAID?

        首先,CPU、memory(内存)发展迅速,读写性能高,但是IO设备会成为瓶颈,写入磁盘时,磁盘处理速度跟不上。

        其次,计算机最重要的设备就是磁盘,CPU、memory(内存)坏 了可以更换,磁盘坏了可能导致数据丢失。RAID能够提高性能(读写)和冗余。

RAID0—没有损失,磁盘利用率:100%

        条带化磁盘阵列(一般两块及以上)

        三个1TB物理磁盘RAID0组成一个虚拟磁盘3TB,没有容量损耗。一个500M数据写入磁盘时,假设按照64K分片,切成了N份,会将分片依次写入到三个磁盘中,读写性能得到提高。但是,安全性不足,每块磁盘故障都会导致数据丢失。

RAID1—损失50%,磁盘利用率:50%

        镜像,2*N块磁盘组成

        提供冗余,性能无提升(读性能不变,写性能降低)

        两个1TB物理磁盘RAID1组成一个虚拟磁盘1TB,假设存储100M数据,这100M会分别在两块盘各存储100M。

        只能解决硬件故障,不能解决软件故障(即:若1盘数据被删除,2盘同步被删除),解决该问题需要做数据备份。

RAID3—损失1块,磁盘利用率:(n-1)/n

        带奇偶校验的条带化(至少三块及以上)

        提供性能和冗余(重构:校验反推),只允许坏一块盘,可用空间(N-1),单独的磁盘写校验码

        RAID算法:

  1. 复制(RAID1)
  2. 异或(RAID3),相同为0,相异为真1

        三个1TB物理磁盘RAID3组成一个虚拟磁盘2TB(N个磁盘-1个校验盘),但是,校验盘会成为性能瓶颈。  

        RAID5校验位算法原理:P = D1 xor D2 xor D3 … xor Dn (D1,D2,D3 … Dn为数据块,P为校验,xor为异或运算)

        如下图:P1为数据1、2的奇偶校验信息;P2为数据3、4的奇偶校验信息;

RAID5—损失1块,磁盘利用率:(n-1)/n

        目前用的最多的一种方式。 因为 RAID5 是一种将 存储性能、数据安全、存储成本 兼顾的一种方案。

        分布式奇偶校验的条带化

        只允许坏一块盘,可用空间(N-1)

        RAID5模式中,不再需要用单独的磁盘写校验码了,它把校验码信息分布到各个磁盘上。

        例如,总共有N块磁盘,那么会将要写入的数据分成M份,并发的写入到M块磁盘中,同时还将数据的校验码信息也写入到这M块磁盘外的磁盘中(数据与对应的校验码信息必须得分开存储在不同的磁盘上)。

        RAID5校验位算法原理:P = D1 xor D2 xor D3 … xor Dn (D1,D2,D3 … Dn为数据块,P为校验,xor为异或运算)

        一旦某一块磁盘损坏了,就可以用剩下的数据和对应的奇偶校验码信息去恢复损坏的数据。

        如下图:P1为数据1、2的奇偶校验信息;P2为数据3、4的奇偶校验信息;

RAID6—损失两块,磁盘利用率:(n-2)/n

        两个奇偶校验的条带化

        最多随机损坏两块校验盘

        RAID6在RAID5的基础上再次改进,引入了双重校验(奇偶校验)的概念,但是因为奇偶校验写性能比RAID5更差,但是更安全,读性能和RAID5一致

        RAID6除了每块磁盘上都有同级数据XOR校验区以外,还有针对每个数据块的XOR校验区,这样的话,相当于每个数据块有两个校验保护措施,因此数据的冗余性更高了。

RAID10

        至少4块盘,同时必须是2*N, 最多可以损坏N/2块

        先RAID1,后RAID0。

以4块1TB硬盘为例比较常用的RAID5和RAID10

        RAID5:P1校验管数据D1、D2;P2校验管数据D3、D4;

        当D1的数据被修改后,需要读取D1、D2、P1的数据重新进行校验写入(写惩罚),开销较大,类似银行交易数据库就不适用RAID5。

        而RAID10修改数据不需要校验,开销较小。

RAID50

        至少6块盘

        可用空间4TB

RAID 卡是否支持直通模式区别

       因为所有的硬盘都是接到RAID 卡上的,OS(操作系统)读到的是虚拟磁盘,如果RAID 卡支持直通模式,则 OS 可以直接读到裸硬盘,如果不支持,则必须创建RAID,才可以被 OS 读取到。

        如果RAID卡不支持直通,那么单盘想被读到需要RAID0。

LUN:逻辑单元号

       LUN:Logical Unit Number,假设有两个业务web和数据库需要使用共享存储内的空间,通过划分LUN1:10TB和LUN2:8TB,将空间分别映射给web和数据库,LUN1和LUN2相互独立。

        RAID完的共享存储相当于一块大硬盘,而LUN就相当于分区;

        LUN组与主机组映射,有了新的lun和主机直接加入组即可,无需单独映射(类似公司跟公司之间合作,而不是个人与个人)

CNA01是在存储上随便命名的主机名称,将CNA01加入主机组,然后LUN组与主机组映射后,如何实现CNA01逻辑主机与物理主机关联呢?

        FC-SAN下,物理机上的光纤卡上会有WWNN和WWPN,当主机和存储通过光纤连接好后,共享存储会识别WWPN,将CNA01与WWPN关联,即完CNA01主机和物理主机的关联。

        WWNN: World Wide Node Name全球唯一节点名
        WWPN: World Wide Port Name全球唯一端口名 16进制数字

        注:

  1. 一台主机可以连接多台存储,并且还可以有多个LUN;
  2. 一个LUN可以映射给多台主机(共享存储前提),在线迁移虚拟机;
  3. 一个LUN只能映射给集群的多台主机,不要映射给非集群的多台主机,否则会导致脑裂。
文件系统

        block size:块大小/簇大小—文件系统最小存储单元。

        精简模式:
                创建完,不进行初始化,没有填0,使用时,写多少数据,就填写多少个0;

                会随着数据的增长而自动扩展,不会随着数据的减小而自动缩小;

                优点:按需分配,不占用未使用空间;

                缺点:性能差等到全部填完0后,与普通模式性能一样;

                按需分配,给主机分了100G,但可能使用了30G,剩余的70G并没有被实际使用。   

        普通模式:                

                创建完磁盘后,不管是否写入数据,全部用0填充;

                优点:性能好;

                缺点:创建速度慢。

        普通延迟置零:        

                创建完磁盘后,不用0填充,待第一次写入数据时,则全部用0填充;

                优点:创建时不占用磁盘性能,待使用时性能好。

差分盘技术

        独立-非持久

        基本磁盘(母盘)里的数据(1-6)固定不变,生成一个差分盘,用户读取的是差分盘,差分盘的1-6数据通过指针指向母盘,新生成的数据7、8、9写在差分盘,关机后差分盘删掉(类似网吧下机后)。

        独立-持久

        基本磁盘(母盘)里的数据(1-6)固定不变,生成一个差分盘,用户读取的是差分盘,差分盘的1-6数据通过指针指向母盘,新生成的数据7、8、9写在差分盘,关机后差分盘不删掉。

        绑定某个磁盘时,选择磁盘模式分为以下三种:

  1. 从属(快照可以保存数据)
  2. 独立-持久(快照无法保存数据)
  3. 独立-非持久(快照无法保存数据)

        注:快照不是数据备份,而是基于索引,且只拍照母盘!

2.4.3、网络虚拟化

        光线交换机:全光口

1、根据端口来划分zone(分区,类似vlan)进行隔离

2、根据WWPN划分zone

        CNA物理机连接光纤交换机1口,存储A控连接光纤交换机2口,在光纤交换机上可以看到CNA和存储各自光纤卡上的WWPN。

为什么需要网络虚拟化?

        正常来说,假设一台物理机只有一块网卡,而一台物理机上有多个虚拟机,每台虚拟机有两块网卡,当数据包访服务器物理网卡时丢给哪台虚拟机?以及数据包如何做隔离?

3、单机虚拟化的网络连接模式

        (1)桥接模式

        虚拟机都桥到各自的虚拟交换机上叫桥接模式。

  1. 虚拟机之间互访;
  2. 主机与虚拟机之间互访;
  3. 虚拟机可以通过主机访问外网;
  4. 外网可以访问虚拟机。

        vm1和vm2通过虚拟交换机互访(假设vm1和vm2同子网,如果不同子网需要通过物理交换机),vm1和vm3通过虚拟交换机,再到物理交换机互访(两个物理机之间互访都是先经过虚拟交换机再到达物理交换机)。

1.每一块物理网卡就是一个上行链路(下图中虚拟交换机到物理交换机的链路)
2.每个上行链路可以创建一个虚拟交换机

        vm1和vm4互访,因为不在同一子网,所以需要通过虚拟交换机—物理交换机—路由实现。

解释说明:

        安装一个VM时自动安装一块虚拟网卡/网络适配器,可添加多块虚拟网卡。
        虚拟交换机:见图4.1。安装VM时就自动安装了10台虚拟交换机(VMnet0-VMnet9)。

  1. 虚拟网卡选择连接到VMnet0 (default Bridged)上即为采用虚拟网桥连接模式。
  2. 虚拟网卡选择连接到VMnet1(Host-only)上即为采用仅主机模式,且会自动安装运行虚拟DHCP服务器并连接至这台虚拟交换机。
  3. 虚拟网卡选择连接到VMnet8 (NAT)上即为采用NAT模式,且会自动安装运行虚拟DHCP服务器和虚拟NAT服务器,并连接至这台虚拟交换机。

        主机虚拟网卡/网络适配器:见下图,相当于一块确实存在的网卡,是连接主机和虚拟交换机用的网卡。

        (2)host-only模式(仅主机模式)

  1. 虚拟机与虚拟机之间互访;
  2. 主机与虚拟机之间互访;
  3. 但虚拟机无法访问外网;
  4. 外网也无法访问虚拟机。

        虚拟交换机没有上行链路,所以不能同外界通信

        如下图,apache的虚拟机配置两块网卡,一块桥接,一块仅主机,确保数据库安全

        (3)NAT模式

  1. 虚拟机之间互访;
  2. 主机与虚拟机之间互访;
  3. 虚拟机可以通过主机访问外网;
  4. 外网无法访问虚拟机。

        (4)自定义网络

        Fusioncompute:4个网络平面

        CNA,最佳8块网卡(8电口或6电口2光口)

一、管理网络平面(心跳、迁移、管理网络)

        VRM管理CNA网络

        双网卡绑定做主备,比如cna01的两个上行网卡虚拟成一个网卡

  1. 同一个LUN可以同时映射给多个主机,但必须是集群关系
  2. 同一个LUN不能同时映射给多个不是集群的主机

二、存储网络平面 

        CNA连接存储的网络

三、业务网络平面

        与管理网络物理隔离、分流,跑生产流量

        管理网络和存储网络ip配置在端口上,业务网络ip配置在虚拟机上

四、VIMS心跳网络(迁移网络)

       不通过管理网络迁移,通过该网络迁移,同时管理网络故障时也可以充当心跳网络。

2.4、华为企业虚拟化(FusionCompute)

        华为私有云:HCS

2.4.1、企业虚拟化架构

        华为企业虚拟化(FusionCompute)架构:VRM+CNA

  1. VRM:Virtual Resource Management 虚拟资源管理(通过web管理界面管理CNA), 在VRM(管理界面)上操作,丢给CNA执行,另外,vrm会感知CNA的状态(50ms一个心跳,所以vrm和cna要在同一子网内),监测CNA上资源的使用情况,保持整个集群的均衡。(CNA没有web界面)
  2. CNA:Compute Node Agent计算节点代理(相比于完整版linux系统3.7G,定制化linux系统文件约700M,安装在服务器上;CNA 定制化linux系统包含两部分:linux系统+KVM虚拟化,等同于PC的windows搭载VMware workstation,linux系统安装在CNA自带的硬盘中,而虚拟机安装在共享存储挂载给CNA的硬盘)
  3. CNA为虚拟机提供计算资源:cpu和内存,而虚拟机安装在共享存储中,产生的数据也在存储于下方的共享存储中,所以当虚拟机1挂了之后,虚拟机2基于共享存储中的数据能够很快接管业务,迁移同理

        如下图:当某台服务器宕机时,集群(华为基于zookeeper)内其他服务器可随时承接

注:1.Orcale数据库不能虚拟化部署,一般跑在裸金属服务器上;

        2.虚拟化层只提供技术架构,不提供其他云上服务

        VRM部署方式

  1. 物理机部署(一个VRM占用一台物理机,资源浪费)
  2. 虚拟化部署(推荐;如果管理的CNA大于50台,使用物理机部署)

        CNA必为物理部署,因为要在CNA里面安装虚拟机

        VRM如果采用虚拟化部署,则先安装两台CNA,再用华为部署工具在CNA的两台虚拟机中部署VRM。   

        一般是2个VRM集群冗余+N个CNA+1个共享存储

       vrm做主备冗余,每个vrm都需要设置一个ip地址,为了使得用户无感知故障,所以需要给用户提供一个vip(虚拟ip或浮动ip)。

        vrm主备,两个vrm之间会连接一个心跳线,当心跳线中断(脑裂现象),主备vrm都认为对方挂掉,主备端都会ping仲裁ip(一般设置为网关),ping通证明主备端是好的,按照投票机制,谁先ping通仲裁ip,谁就得到了仲裁ip的票,2>1,成为主设备。

        一般情况下,VRM1和VRM2需要占用两台物理机,造成资源浪费;所以,可以把VRM1和VRM2运行在由两台不同CNA承载的虚拟机中,再管理CNA。

        建议:

  1. 当CNA数量少于50台,建议VRM虚拟化部署,两台VRM虚拟机,部署在两台不同的CNA中;
  2. 超过50台,建议物理部署。

2.4.2、远程管理服务器

  1. intel IPMI标准(开源),所有厂家服务器都基于该标准,所以云计算能够管理兼容各厂家服务器
  2. 软件--->发指令--->远程开机/关机/重启
  3. 华为服务器的远程管理卡(BMC):内嵌微型操作系统,出厂时就设置了默认ip和账号密码
  4. 服务器通用的网卡是没有内嵌操作系统,是在服务器上安装操作系统后驱动网卡
集群

        由两台或以上的主机为了一个共同的商业目标,分类如下:

        1)HA(高可用)集群

                前提:硬件架构相同(Intel和amd指令集不同,无法热迁移)        

      

        2)负载均衡集群

        用户访问的为vip地址,而不是具体某个服务器的ip地址,访问vip时,负载均衡器有10种调度算法(比如轮询:来了访问请求后按顺序向下依次分配;最少连接数:哪个服务器的连接数少给谁;加权最少连接等),负载均衡器会对服务器定时健康检查,不健康就不分配访问请求。

        3)HPC高性能集群

        将计算工作切片成n个小部分,每台服务器负责计算一小块。

        vm1和vm2通信在主机内存中交换数据,交换速率高(前提是把虚拟机的磁盘io和网卡io设置成虚拟io设备,告知虚拟机你就是一台虚拟机,否则vm1和vm2以为自己是物理机,通过物理网络通信)

        vm1和vm3通信需要通过物理网络交换数据

三、云计算时代

        通过“硬件资源池化+软件全分布式+运行全自动化”,构建统一的IT Infra资源池,实现资源共享,弹性伸缩;通过云管理平台实现计算、存储、网络资源自动化发放,全面提升运营效率;

        云计算既提供技术架构,又提供云上服务

        由下向上:底层linux(开源操作系统)->中间kvm(开源虚拟化)->上层openstack(开源云操作系统)

        云底座:linux+kvm+openstack,其他厂商在此基础上做二次开发

        早期的虚拟化为XEN和KVM,后来kvm一统天下,同理早期的云操作系统为cloudstack和openstack,后来openstack一统天下,如今的国内云绝大部分都是基于openstack做二次开发,阿里云例外,做电商的亚马逊和阿里在双11节日的时候会出现高并发,对弹性扩容要求高,因此做云比较早,AWS在2006年搞云,阿里2008年搞云,openstack2010年才出来,所以阿里云研发云的时候还没有openstack,所以阿里是基于自己的架构研发的。

OpenStack是什么?

        OpenStack是开源云操作系统,可控制整个数据中心的大型计算,存储和网络资源池。用户能够通过Web界面、命令行或API接口配置资源。

3.1、OpenStack和虚拟化的区别

        OpenStack的架构定位与技术范畴:

  1. OpenStack只是系统的控制面。
  2. OpenStack不包括系统的数据面组件,如计算、存储和网络设备等。

        OpenStack不是虚拟化,OpenStack和虚拟化有着关键的区别:

  1. 自身不提供虚拟化技术
  2. 调用多种技术实现多资源池管理
  3. 对外提供统一管理接口

        2)虚拟化

  1. 环境隔离,资源复用
  2. 降低隔离损耗,提升运行效率
  3. 提供高级虚拟化特性

厂家商业版本的云计算平台在开源openstack基础上做了什么呢?

  1. 部署工具
  2. 开发各类驱动和接口
  3. 提供各种高可用,容灾等解决方案
  4. 提供强大的告警,日志,监控功能
  5. 管理和升级工具
  6. 开发更多的云服务

        laaS 基础架构即服务(kvm、openstack)
        PaaS 平台即服务(容器)
        SaaS 软件即服务

3.2、OpenStack九大组件

1、horizon(地平线)

        提供基于Web的控制界面,使云管理员和用户能够管理各种OpenStack资源和服务。

2、nova:提供openstack的计算资源

        提供大规模、可扩展、按需自助服务的计算资源。
        支持管理裸机,虚拟机和容器。

  1. nova-controller:提供各种api接口
  2. nova-compute:提供计算资源(kvm、fusioncompute、xen等)

        用户的请求丢到了控制节点分析需求,再丢给nova-compute分配计算资源

        注:华为云控制节点(zookeeper:集群,防止脑裂)至少三节点

3、glance:提供镜像服务

        存储和接收磁盘镜像(比如虚拟机模板)

4、swift(对象存储)

        类似百度网盘

        底层提供了文件系统,不需要格式化操作,直接使用存储数据

        分布式存储

        独立组件,不能挂载给云主机使用,其他服务(比如人工智能服务)可以调用api接口读取对象存储内的数据提供服务

5、cinder(块存储)

        提供块存储服务,为虚拟机实例提供持久化存储。
        调用不同存储接口驱动,将存储设备转化成块存储池,用户无需了解存储实际部署的位
置或设备类型。

        硬盘,裸设备,通过挂载到主机后进行格式化分区之后才能存储数据

        通过主机存储数据

6、neutron

        提供网络服务和SDN架构

        SDN三种部署方式

  1. type1:软SDN(用一台服务器安装软件来实现路由交换功能)
  2. type2:硬SDN(买一台SDN控制器设备)
  3. type3:融合架构

7、heat(编排服务)

        资源编排,一键式按照模板部署

8、ceilometer(计量服务)

        计费功能:统计租户用了多少资源

        监控和告警

9、keystone(身份认证)

四、容器时代(集装箱)

        传统方式下在一台物理机里跑很多业务,业务无法隔离,不够安全,因此有了虚拟化,通过虚拟出多个云主机,每台云主机跑各自的业务进行隔离,但是云每台主机为了跑业务都需要单独安装的操作系统,这些为了保证虚拟机正常运行的操作系统等也占用了cpu、内存、硬盘等资源(比如一台虚拟机需要2核2G资源运行,一台服务器虚拟出20台虚拟机,为了运行这20台虚拟机就消耗了40核40G的资源),租户用服务器是为了跑业务,不是跑云主机,跑云主机的目的是为了资源隔离,如果有一种技术直接在物理机上既能隔离(namespace,命名空间)又能直接跑业务,那么就节省了更多的资源,容器应运而生,相较于云主机,容器更加轻量化。

        容器在物理机上运行是基于共享宿主机操作系统,自身不需要安装操作系统,当容器开启时,只需要启用用户态环境,不需要启用内核态环境(加载内核、驱动、文件系统等),所以启动速度快,节省资源。

        容器可以在物理机上跑,也可以在虚拟机(利用弹性伸缩、快速部署、热迁移特性)里跑。

        容器不受操作系统和硬件的限制,测试环境和生产环境一致

        搭建私有云,云的底层控制组件运行在容器中,在云中安装虚拟机,在虚拟机中安装了容器。

        虚拟机从vmware迁移到华为fusioncompute中,需要使用专门的迁移工具        

        容器迁移是将容器打包成压缩包解压到新环境中运行(打包的数据为用户态,无内核态,所以无太多的兼容性问题)

        容器就是将软件打包成标准化单元,以用于开发、交付和部署:

  1. 容器是一种轻量级、可移植、自包含的软件打包技术,使应用程序可以在几乎任何地方以相同的方式运行
  2. 开发人员在自己的电脑上创建并测试好的容器,无需任何修改就能够在生产系统的虚拟机、物理服务器及公有云上运行
  3. 容器赋予了软件独立性,使其免受外在环境差异(例如,开发和测试及预发布环境的差异)的影响,从而有助于减少团队间在相同基础设施上运行不同软件时的冲突

        容器鼻祖:Docker,基于容器技术的轻量级虚拟化解决方案

        Podman
        Containerd—华为容器技术        

        Docker公司开发了一款容器调度软件Docker compose,意在一统容器天下,后来,谷歌开发了K8s容器调度软件(不提供容器资源,只是调度,类似openstack,底层既支持docker又支持其他厂家)。

        K8s能够实现容器副本机制(默认三副本:底层三台物理宿主机,容器跑在三台服务器上)。

  1. namespace,资源隔离
  2. cgroup,资源限制

        如下图,左侧为容器,右侧为虚拟机

五、云原生和微服务时代

        云原生:从云里长出来的。

        如今的软件开发是开发人员在自己电脑里开发完之后迁移到云上,而云原生是从代码开发都是在云上开始的,更适合在云上运行的应用。

        微服务:庞大的服务由一块一块模块拼起来,管理维护更方便。

AWS

       

               

     

       

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

网运少年

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值