技术总结报告v1Word格式文档下载.docx
- 文档编号:17188506
- 上传时间:2022-11-28
- 格式:DOCX
- 页数:29
- 大小:1.38MB
技术总结报告v1Word格式文档下载.docx
《技术总结报告v1Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《技术总结报告v1Word格式文档下载.docx(29页珍藏版)》请在冰豆网上搜索。
初版
张志楠
填表说明:
1.日期:
2.版本:
3.变更说明:
无
4.作者:
1.技术框架
1.1整体架构
云服务平台可以理解为一个云操作系统,通过数据中心来控制计算、存储和网络等相关资源。
云服务平台是建立在开源云操作系统(openstack)基础之上的,采用消息传递机制,组件模式。
在云服务平台上主要采用了openstack中的认证服务,对象存储服务,计算服务,镜像服务及网络服务,并添加了监控服务,自启动,动态迁移,高可用迁移,负载均衡,存储容灾等功能,在当前版本中这些模块通过统一的认证系统进行协同工作。
2.技术目录
2.1云操作系统(openstack)相关技术
2.1.1统一认证服务(Keystone)功能描述
OpenStackIdentity(Keystone)服务为全部的OpenStack服务提供了认证和管理用户、帐号和角色信息服务。
Keystone体系结构主要有两个部件:
验证和服务目录
验证:
提供了一个基于令牌(token)的验证服务。
服务目录:
Keystone为OpenStack安装提供了一个RESTAPI端点列表并以此作为决策参考。
Keystone:
运行Keystone-admin和Keystone-service
Keystone-admin:
操作Keystone的管理API
Keystone-service:
用于验证的,面向用户的API
Keystone-manage:
管理Keystone的命令行接口
2.1.2对象存储服务(Swift)功能描述
除了传统的企业级存储技术,现在有许多组织具有不同的性能和价格要求的各种云存储需求。
OpenStack里有对象存储和块存储的支持,许多部署选项为每个使用情况而定。
对象存储提供了一个完全分布式的,API访问的存储平台,可以直接集成到应用程序或用于备份,归档和数据保留。
块存储允许暴露块设备和扩展存储,更好的性能并集成企业的存储平台。
从上图中可以看到,在Swift服务的项目中一个代理节点对应连接多个存储节点,代理节点(Proxynode)运行Swift代理服务进程并提供对后台存储节点的访问。
2.1.3计算服务(Nova)功能描述
Nova是云计算开源软件OpenStack的虚拟机控制和服务的部分;
针对于云计算服务的虚拟机的服务工作有查询特定租户下的所有虚拟机实例、创建虚拟机实例、获取虚拟机外网IP、给虚拟机分配外网IP,建立虚拟机安全组规则,释放虚拟机外网IP,删除虚拟机实例。
如图所示,nova包含多个组件。
nova-api提供服务调用接口;
nova-network管理虚拟网路(新版本会由quantum代替);
数据库保存所有相关信息;
nova-volum提供卷组服务,可以为虚拟机动态扩展硬盘;
nova-schedule提供调度管理,里面包含已提供的几种调度算法,控制实例启动位置和配额限制方式,也可以自定义算法;
queue为消息队列,组件间的交互都是基于amqp协议,通过消息队列转发;
nova-compute,nova的核心组件,控制虚拟机生命周期、虚拟机网络、卷组等。
。
2.1.4镜像服务(Glance)功能描述
OpenStack中镜像服务是为你的OpenStack云提供检索、存储和镜像元数据的设置功能。
镜像服务提供为磁盘和服务器镜像提供发现、注册和交付服务。
虚拟机镜像是创建云虚拟机服务器操作系统的模板。
从上图中可以看出,镜像服务(Glance)主要包括两个方面的服务,其中一个是镜像注册服务,它的主要功能是以文件系统的方式通过镜像服务(Glance)的客户端上传镜像并将镜像的元数据信息存放至镜像服务(Glance)所属的数据库中;
另外一个是镜像接口服务,他提供对镜像服务的管理接口来达到对云虚拟机镜像的管理操作功能。
2.1.5网络服务(Quantum)功能描述
Quantum是一个在服务设备之间提供“网络连接服务”的一个项目。
他是一个网络组件,它能提供openstack的network服务所不能提供的网络技术。
他是专门为OpenStack提供虚拟网络管理的项目服务,他主要包括两个插件Openvswitch和Cisco。
●Openvswitch——使用OpenvSwitch实现QuantumAPI。
●Cisco——为思科UCS刀片和Nexus交换机实现QuantumAPI。
Quantum+network的网络结构和控制节点是弱关联的,就算控制节点服务器停机了,quantum+network还是可以为用户提供网络服务。
2.2服务器虚拟化相关技术
2.2.1虚拟化管理程序(Kvm)功能描述
KVM是Linux内核的一个模块,基于硬件虚拟化技术实现VMM的功能。
该模块的工作主要是通过操作与处理器共享的数据结构来实现指令集以及MMU的虚拟化,捕捉客户机的IO指令(包括PortIO和mmapIO)以及实现中断虚拟化。
至于IO设备的软件模拟,是通过用户程序QEMU来实现的。
QEMU负责解释IO指令流,并将其请求换成系统调用或者库函数传给主机操作系统,让主机上的驱动去完成真正IO操作。
它们之间的关系如下图所示:
从主机操作系统的角度来看,KVM客户机操作系统相当于一个进程运行在系统上,普通的命令如kill、top、taskset等可以作用于该客户机。
该进程的用户虚拟空间就是客户机的物理空间,该进程的线程对应着客户机的处理器。
从Qemu的角度来看,KVM模块抽象出了三个对象,她们分别代表KVM自己,客户机的虚拟空间以(VM)及运行虚拟处理器(VCPU)。
这三个对象分别对应着三个文件描述符,Qemu通过文件描述符用系统调用IOCTL来操作这三个对象,同KVM交互。
此时,Qemu主要只模拟设备,它以前的CPU和MMU的模拟逻辑都被kvm.ko取代了。
如上介绍,KVM是一个全虚拟化的解决方案。
可以在x86架构的计算机上实现虚拟化功能。
全虚拟化,可以处理在客户机中不加修改的驱动请求。
通常这将消耗大量的处理器cycle去模拟设备,目前在我们云平台中对KVM虚拟化技术做了优化,采用virtio,提供高速的读写驱动。
这时的kvm可以类似的看做半虚拟化。
设备模拟后架构如下图所示:
经过优化后的kvm在同样硬件环境条件下,虚拟出来的虚拟机网络性能和磁盘读写性能有很大的提升。
2.2.2虚拟化工具(Libvirt)功能描述
libvirt是一套免费、开源的支持Linux下主流虚拟化工具的C函数库,为主流虚拟化工具提供编程接口。
支持C、C++、Java、Ruby、Python等开发语言。
Openstack管理虚拟机都是通过调用libivrt提供的虚拟化管理接口实现的。
使用模型如下:
从图中可以看出这是在xen虚拟化中的使用模型(因为有Domain0),libivrt在openstack中的使用模型与此类似。
Libvirt支持的虚拟机类型:
∙KVM/QEMULinuxhypervisor
∙Xenhypervisor
∙LXC
∙OpenVZ
∙UserModeLinuxparavirtualizedkernel
∙VirtualBoxhypervisor
∙VMwareESXandGSXhypervisors
∙VMwareWorkstationandPlayerhypervisors
∙MicrosoftHyper-Vhypervisor
除此之外,libvirt还支持网络管理和存储管理。
2.2.3虚拟化管理程序(Qemu)功能描述
QEMU是一个平台虚拟化方案,主体部份是在LGPL下发布的,包含两种模拟模式:
用户模式和系统模式。
Openstack支持qemu类型的虚拟机,qemu类型的虚拟机没有对硬件的限制。
Openstack中qemu为kvm模块提供模拟设备,kvm通过virtio提供的驱动与qemu模拟出的设备交互,如下图所示:
Openstack还利用qemu提供的命令行管理虚拟机存储块设备,包括创建、快照、恢复等。
目前并没有使用qemu模拟的虚拟机,同类产品中,也并没有发现使用qemu模拟的虚拟机。
2.2.4虚拟机驱动程序(Virtio)功能描述
Linux虚拟机平台上统一的虚拟IO接口驱动,VirtIO为客户机和Qemu提供了高速的IO通道,目前云平台中虚拟机的设备驱动都是使用virtio,提高了kvm虚拟机网络和磁盘读写的性能。
客户机的磁盘和网络都是通过VirtIO来实现数据传输的。
由于客户机的地址空间mmap到Qemu的进程空间中,VirtIO以共享内存的数据传输方式以及半虚拟化(para-virtualized)接口为Guest提供了高效的硬盘以及网络IO性能。
其中,KVM为VirtIO设备与客户机的VirtIO驱动提供消息通知机制,如下图所示:
客户机VirtIO驱动通过访问port空间向Qemu的VirtIO设备发送IO发起消息。
而设备通过读写irqfd或者IOCTLfd_vm通知客户机驱动IO完成情况。
irqfd和ioeventfd是KVM为用户程序基于内核eventfd机制提供的通知机制,以实现异步的IO处理(这样发起IO请求的vcpu将不会阻塞)。
之所以使用PIO而不是MMIO,是因为KVM处理PIO的速度快于MMIO。
2.2.5计划外关机(自启动)功能描述
虚拟机可能由于物理服务器内存不足或运行程序错误等原因导致异常关机,虚拟机对外提供重要服务,但管理员又没能及时发现虚拟机运行异常。
这时虚拟机的自动重启服务是很必要的。
监控程序会监控虚拟机运行状态与数据库保存的状态,当虚拟机为停机状态,但数据库依然保存着active状态时,系统程序就判定这台虚拟机是异常关机,而不是管理员主动关机的,系统每隔30秒钟尝试重启这台虚拟机,直到虚拟机启动为止。
实现了虚拟机异常关机自动重启的功能。
最大限度的减少虚拟机宕机时间,保证服务的可用性。
目前系统还没有实现对指定的虚拟机执行自启动功能,只能对服务器上所有的虚拟机提供自启动功能。
举例说明:
例如一台物理服务器上运行着10台虚拟机,不能单独对其中的一台虚拟机提供自启动功能,只能同时对所有虚拟机提供自启动功能。
2.2.6热迁移(动态迁移)功能描述
通过使用共享存储和对libvirt设置,虚拟机可以在物理服务器间移动,并且移动过程对用户是透明的,用户感觉不到使用的虚拟机正在移动到其他服务器。
当想对物理服务器升级或机房改造时,不想停止虚拟机服务,热迁移功能是最好的选择。
在很短的时间内实现虚拟机在物理服务器间动态迁移,迁移过程服务不停止。
需要使用共享存储,目前使用基于NFS的共享存储,当运行虚拟机数量很多的时候,I/O性能会成为瓶颈,所以还需要更优秀的共享存储方案。
2.2.7高可用迁移(HA)功能描述
与vmware的HA功能类似,提供高性价比的自动化重启。
在一个HA集群中,有一个监控服务端和多个客户端,客户端向服务端发送心跳包,当服务端在一定时间内没有收到客户端的心跳包,就判定这台服务器异常,通过RPC,服务端在其他客户端上重启异常服务器上的说有虚拟机。
这个过程涉及到数据库查询、网络配置、防火墙修改、虚拟机信息注册等一系列操作。
HA迁移实现了当硬件或操作系统发生故障,几分钟内,所有故障服务器上的虚拟机,通过一系列算法选择,在其他服务器上自动重启。
需要使用共享存储,需要用于生产环境的共享存储方案。
2.2.8负载均衡(Haproxy)功能描述
为了满足服务的负载能力,在几台服务器上布置相同的服务,这些服务通过共同的地址端口被用户访问,用户访问服务所在机器,由负载策略设置,这几台机器提供的服务就实现了负载均衡功能。
负载均衡实现有软件和硬件或者软硬件结合的方式,由于硬件负载均衡价格昂贵,所以我们使用软件负载均衡方案。
使用开源的Haproxy工具,Haproxy被许多公司应用在了生产环境,性能稳定,功能强大,可以实现IP识别、cookie识别、session识别等功能。
通过在物理服务器安装Haproxy,将虚拟机中的服务添加到负载策略中,即可以实现虚拟机服务的负载均衡。
目前已经实现动态的添加和删除负载策略。
Haproxy提供几种负载策略模式,但是目前使用到的只是其中一种。
2.3网络虚拟化相关技术
2.3.1包过滤系统(Iptables)功能描述
iptables是与最新的2.6.x版本Linux内核集成的IP信息包过滤系统。
他可以保护易受攻击的服务,控制内外网之间网络系统的访问,集中管理内网的安全性,降低管理成本,提高网络的保密性和私有性,记录网络的使用状态,为安全规划和网络维护提供依据
2.3.2虚拟交换机(Openvswitch)功能描述
OpenvSwitch是一个由NiciraNetworks主导的开源项目,通过运行在虚拟化平台上的虚拟交换机,为本台物理机上的VM提供二层网络接入,跟云中的其它物理交换机一样工作在Layer2层。
OpenvSwitch充分考虑了在不同虚拟化平台间的移植性,采用平台无关的C语言开发。
最为人民群众喜闻乐见的是,它遵循Apache2.0许可,不论你是自用还是商用都OK。
而它的同类产品VMware的vDS(vSphereDistributedVirtualSwitch),Cisco的Nexus1000V都是收费的。
更重要的是,虽然免费,其产品质量却深得信赖。
在2010年OpenvSwitch1.0.0发布之前,Citrix就宣布在XenServer中将其作为默认组件。
关于这一点,也许Nicira的身世可以给出一些解释,它的投资人里有DianeGreene(VMware联合创始人)和AndyRachleff(BenchmarkCapital联合创始人),经常听朋友谈起的几个VMware网络大牛也加盟其中,是目前硅谷最炙手可热的SDN创业公司之一。
1.网络隔离。
物理网络管理员早已习惯了把不同的用户组放在不同的VLAN中,例如研发部门、销售部门、财务部门,做到二层网络隔离。
OpenvSwitch通过在host上虚拟出一个软件交换机,等于在物理交换机上级联了一台新的交换机,所有VM通过级联交换机接入,让管理员能够像配置物理交换机一样把同一台host上的众多VM分配到不同VLAN中去;
2.QoS配置。
在共享同一个物理网卡的众多VM中,我们期望给每台VM配置不同的速度和带宽,以保证核心业务VM的网络性能。
通过在OpenvSwitch端口上,给各个VM配置QoS,可以实现物理交换机的trafficqueuing和trafficshaping功能。
3.流量监控,Netflow,sFlow。
物理交换机通过xxFlow技术对数据包采样,记录关键域,发往Analyzer处理。
进而实现包括网络监控、应用软件监控、用户监控、网络规划、安全分析、会计和结算、以及网络流量数据库分析和挖掘在内的各项操作。
4.数据包分析,PacketMirror。
物理交换机的一大卖点,当对某一端口的数据包感兴趣时(fortroubleshooting,etc),可以配置各种span(SPAN,RSPAN,ERSPAN),把该端口的数据包复制转发到指定端口,通过抓包工具进行分析。
2.4存储虚拟化相关技术
2.4.1逻辑卷管理(LVM)功能描述
LogicalVolumeManager(逻辑卷管理),简写为LVM。
是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和分区之上的一个逻辑层,来提高磁盘分区管理的灵活性。
它是一种抽象化存储技术,根据操作系统而有所不同。
基本上,它是在驱动程式与操作系统之间增加一个逻辑层,以方便系统管理硬盘分割系统。
比如我们有一个硬盘/dev/hda,分了3个主分区:
hda1,hda2,hda3,后面磁盘空间没有划分,分别对应的挂载点是/boot,/,/home,如果我们的/home空间不够了,怎么办?
传统的方法是在未划分的空间中分割一个分区,挂载到/home下,并且把hda3的内容复制到这个新分区上。
或者把这个新分区挂载到另外的挂载点上,然后在/home下创建链接,链接到这个新挂载点。
这两种方法都不大好,第一种方法浪费了hda3,并且如果后面的分区容量小于hda3怎么办?
第二种方法不大浪费容量,但是每次要额外创建链接,比较麻烦.那么,如果用lvm呢?
lvm的好处在于,可以动态放大一个逻辑卷(相当于一个逻辑分区),也就是说,hda3如果是一个逻辑分区,比如/dev/rootvg/lv3,那么lv3可以被动态放大.这样就解决了动态容量调整的问题。
当然,前提是系统已设定好lvm支持,并且需要动态缩放的挂载点对应的设备是逻辑卷。
2.4.2网络存储标准(iSCSI)功能描述
iSCSI又称为IP-SAN,是一种基于因特网及SCSI-3协议下的存储技术,由IETF提出,并于2003年2月11日成为正式的标准。
与传统的SCSI技术比较起来,iSCSI技术有以下三个革命性的变化:
把原来只用于本机的SCSI协同透过TCP/IP网络传送,使连接距离可作无限的地域延伸;
连接的服务器数量无限(原来的SCSI-3的上限是15);
由于是服务器架构,因此也可以实现在线扩容以至动态部署。
存储整合
公司希望将不同的存储资源从分散在网络上的服务器移动到统一的位置(常常是数据中心);
这可以让存储的分配变得更为有效。
SAN环境中的服务器无需任何更改硬件或电缆连接就可以得到新分配的磁盘卷。
灾难恢复
公司希望把存储资源从一个数据中心镜像到另一个远程的数据中心上,后者在出现长时间停电的情况下可以用作热备份。
特别是,iSCSISAN使我们只需要用最小的配置更改就可以在WAN上面迁移整个磁盘阵列,实质上就是,把存储变成了“可路由的”,就像普通的网络通信一样。
如图所示,iSCSItarget是存储设备端,存放磁盘或RAID的设备,也可以使用linux主机做存储设备。
iSCSIinitiator就是能够使用target的客户端。
2.4.3网络文件系统(NFS)功能描述
网络文件系统(Network
File
System,NFS
),是在
Unix
系统间实现磁盘文件共享的一种方法,它支持应用程序在客户端通过网络存取位于服务器磁盘中数据的一种文件系统协议。
最早于1984年由升阳开发。
功能是透过网络让不同的服务器、不同的操作系统能够彼此分享个别的资料。
NFS的基本原则是“容许不同的客户端及伺服端通过一组
RPCs
分享相同的文件系统”,它是独立于操作系统,容许不同硬件及操作系统的系统共同进行文件的分享。
NFS示意图
2.4.4分布式复制块设备(DRBD)功能描述
分布式复制块设备(DRBD技术)是一种基于软件的,无共享,复制的存储解决方案,在服务器之间的对块设备(硬盘,分区,逻辑卷等)进行镜像,当应用对磁盘的数据进行修改时,复制立即发生,并且应用程序的数据存储在镜像设备上是独立和透明的,数据可存储在不同的服务器上。
DRBD在Linux的I/O堆栈中的位置
单主模式
在单主模式下,任何资源在任何特定的时间,集群中只存在一个主节点。
正是因为这样在集群中只能有一个节点可以随时操作数据,这种模式可用在任何的文件系统上(EXT3、EXT4、XFS等等)。
部署DRBD单主节点模式可保证集群的高可用性(fail-over遇故障转移的能力)。
双主模式
在双主模式下,任何资源在任何特定的时间,集群中都存在两个主节点。
由于双方数据存在并发的可能性,这种模式需要一个共享的集群文件系统,利用分布式的锁机制进行管理,如GFS和OCFS2。
部署双主模式时,DRBD是负载均衡的集群,这就需要从两个并发的主节点选取一个首选的访问数据。
这种模式默认是禁用的,如果要用的话必须在配置文件中进行声明。
复制模式
DRBD提供了三种不同的复制方式,允许三种复制方式:
协议A:
一旦本地磁盘写入已经完成,数据包已在发送队列中,则写被认为是完成。
在一个节点发生节点发生故障时,可能发生数据丢失,因为被写入到远程节点上的数据可能仍在发送队列。
尽管,在故障转移节点上的数据是一致的,但没有及时更新。
这通常是用于地理上分开的节点。
协议B:
一旦本地磁盘写入已完成且复制数据包达到了对等节点则认为写在主节点上被认为是完成的。
数据丢失可能发生在参加的两个节点同时故障的情况下,因为在飞行中的数据可能不会被提交到磁盘。
协议C:
只有在本地和远程节点的磁盘已经确认了写操作完成,写才被认为完成。
没有任何数据丢失,所以这是一个群集节点的流行模式,但I/O吞吐量依赖于网络带宽。
多协议支持
DRBD的复制和同步框架套接字层支持多个级别的传输:
IPv4中的TCP协议:
这规范的实施方式,也是DRBD默认使用的,可用于任何开启IPv4协议的系统上。
IPv6的TCP协议:
当配置使用标准的TCP协议用于复制和同步时,DRBD还可使用IPv6的网络协议。
虽然是不同于IPv4,但是这是和使用IPv4的相当的。
三路复制
当使用三路复制,DRBD对一个已存在的2节点集群增加了一个第三节点,并复制数据到这个第三节点上,使用这个第三节点用于备份和灾难恢复。
三路复制通过在一个已经存在的处理生产数据的堆栈上增加另一个,基于堆栈的DRBD资源,类似以下图示:
这个堆积起来资源是通过异步复制(DRBDprotocolA)结合同步复制(DRBDprotocolC)来实现的。
三路复制可以永久使用,此时第三节点从生产集群持续更新数据。
并且,也可以在需要是建立连接,此时生产集群通常和备份站点断开,周期性地启动site-to-site同步(例如在每天晚上cron任务)。
这个构架适合远程灾备,对于远程镜像可以采用异步方式。
由于生产系统不需要等待远程节点完成就可以继续读写,远程站点可以在后续逐步同步好存储系统。
2.4.5集群管理器(CMAN)功能描述
cman是一个基于内核的对称通用集群管理器。
它由两部分组成:
连接管理器(cnxman),用于处理成员、消息、投票数、事件通知和过渡;
服务管理器(SM),用于处理那些需要通过各种方式进行集群管理的应用及外部系统。
cman是RHCS中最核心的服务,可通过系统中的serivce命令进行启/停操作;
DLM、GFS、CLVM及Fence都依赖于cman群集管理器。
RHCS架构示意图
rgmanager资料组管理器
rgmanager(ResourceGroupManager)基于cman并使用DLM动态锁管理机制。
与cman一样,rgmanager也是RHCS中的一个核心服务,可通过系统中的serivce命令进行启/停操作;
rgmanager管理并为集群中的Service(服务)和Resources(
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 技术 总结报告 v1