KVM虚拟化集群技术概述
- 格式:docx
- 大小:12.98 KB
- 文档页数:12
KVM虚拟化集群技术概述KVM虚拟化集群技术概述一、虚拟化集群介绍、设计思路及架构使用虚拟化集群的目标是克服单机虚拟化的局限性,利用技术手段提高虚拟机可用性,最终达到业务不中断或者减少中断时间,确保业务数据更安全的目标。
1. 虚拟化集群介绍1)什么是虚拟化集群虚拟机集群最显著的特征是有共享存储,因为有了共享存储,虚拟机就可以实现非常快速的在线迁移,并在虚拟化层配置高可用。
笔者在生产环境使用的集群有两种存储方式,基于商业存储和基于开源分布式文件系统。
2)虚拟化集群的高可用和基于应用层高可用的区别高可用是经常用到的运维技术,在系统、网络、数据库、Web业务等各个应用层面都有使用。
高可用技术是指至少有主备两个节点,当主节点故障的时候,迅速切换到备用节点。
为了避免备用节点误判,有时候还有第三个节点,或者主节点和备用节点共同能访问到的存储空间,用于做仲裁判断。
应用层面的高可用还有一个特点,就是一般都有浮动IP,当切换发生的时候,IP从主节点漂移到备用节点。
应用层面的高可用一般切换时间比较快,从几毫米到几秒中,同时应用层面的高可用一般需要专用软件,比如常用的Keepalived,Heartbeat 等。
虚拟化层面的高可用是虚拟机系统层面的高可用,即当一台计算节点故障的时候,在另外一台计算节点上自动将故障节点上的虚拟机启动起来。
注意如果虚拟机上的业务不能做到开机自启动,即使虚拟机自动启动了,并不能保证业务层面的自动恢复!另外还有一个问题,就是即使虚拟机启动起来了,当启动到一半虚拟机的系统卡住了,也不能及时恢复业务!虚拟化层的高可用一般业务恢复实际是系统重启的时间,加上业务开机自启动的时间,通常是分钟级别。
虽然虚拟化层高可用有业务不能恢复的风险,业务恢复时间也相对比较长,但是虚拟化层高可用有个非常巨大的优势,就是不需要在应用层面配置,大大的拓宽了高可用的适用范围,使原来在应用层难以使用高可用技术的应用,也能做到高可用,尤其是在某些专用的软件领域。
详解虚拟化技术QEMU-KVM⼊门⼀.QEMU、KVM、QEMU-KVMQEMU提供⼀系列的硬件模拟设备(CPU,⽹卡,磁盘等),客户机指令都需要QEMU翻译,因⽽性能较差。
KVM是linux内核提供的虚拟化,可以⽤来进⾏vCPU的创建与运⾏,虚拟内存的地址空间分配,指令执⾏效率较⾼,但缺少IO设备的虚拟化。
QEMU-KVM就是KVM与QEMU的结合,KVM负责CPU虚拟化+内存虚拟化,QEMU模拟其它IO设备。
⼆.安装并创建虚拟机安装qemu-kvm软件faramita2016@linux-l9e6:~> zypper install qemu-kvm // Ubuntu系统使⽤apt-get install qemu-kvm创建qcow2格式虚拟机磁盘⽂件faramita2016@linux-l9e6:~> qemu-img create -f qcow2 vdisk.img 5G // 磁盘⼤⼩5G使⽤debian镜像安装虚拟机,order=dc优先使⽤CD-ROW(d),后使⽤硬盘(c),内存默认128m,使⽤-m 512指定faramita2016@linux-l9e6:~> qemu-kvm -cpu host -cdrom debian-9.4.0.iso -hda vdisk.img -boot order=dc三.设置虚拟机使⽤⽹桥bridge模式宿主机中执⾏,qemu-bridge-helper增加当前⽤户可执⾏权限,⽤来⾃动添加⽹络后端tap设备faramita2016@linux-l9e6:~> sudo chmod o+x /usr/lib/qemu-bridge-helper宿主机中执⾏,-net nic为虚拟机创建nic⽹卡(⽹络前端),-net bridge指定宿主机中使⽤⽹桥(⽹络后端)faramita2016@linux-l9e6:~> qemu-kvm -cpu host -hda vdisk.img -net nic -net bridge,br=br0 // 指定⽹桥br0虚拟机中执⾏,编辑/etc/network/interfaces,设置静态IProot@debian:~# vi /etc/network/interfaces# The primary network interfaceallow-hotplug ens3#iface ens3 inet dhcpiface ens3 inet staticaddress 10.0.0.8netmask 255.0.0.0gateway 10.0.0.1hwaddress ether 52:54:00:12:34:56 // 设置mac地址,前3组不变root@debian:~# ifup ens3 // 打开ens3⽹络接⼝,ifdown关闭⽹络接⼝root@debian:~# /etc/init.d/networking restart // 重启⽹络服务虚拟机中执⾏,编辑/etc/resolv.conf,设置DNSroot@debian:~# vi /etc/resolv.confnameserver 8.8.8.8 // Google DNS四.设置虚拟机为⾮图形模式虚拟机中执⾏,编辑/etc/default/grub⽂件,添加console=ttyS0启动参数root@debian:~# vi /etc/default/grubGRUB_DEFAULT=0 // 默认启动项GRUB_TIMEOUT=0 // 默认菜单项停留时间GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`GRUB_CMDLINE_LINUX_DEFAULT="quiet" // 默认内核启动参数GRUB_CMDLINE_LINUX="console=ttyS0" // ⼿动添加内核启动参数,添加console=ttyS0虚拟机中执⾏,更新grub配置,并重启root@debian:~# update-grubroot@debian:~# shutdown -h nowa.宿主机中执⾏,添加-nographic参数创建虚拟机,当前shell前台创建虚拟机faramita2016@linux-l9e6:~> qemu-kvm -cpu host -hda vdisk.img -net nic -net bridge,br=br0 -nographicb.宿主机中执⾏,添加-display none -daemonize参数创建虚拟机,当前shell后台创建虚拟机faramita2016@linux-l9e6:~> qemu-kvm -cpu host -hda vdisk.img -net nic -net bridge,br=br0 -display none -daemonize五.以只读⽅式启动虚拟机a.创建⼀个快照⽤qemu-img命令创建⼀个原始镜像的快照faramita2016@linux-l9e6:~> qemu-img create -f qcow2 -b vdisk.img snapshot.img使⽤快照⽂件启动虚拟机faramita2016@linux-l9e6:~> qemu-kvm -cpu host -hda snapshot.img -net nic -net bridge,br=br0 -nographicb.使⽤临时快照原理:创建⼀个临时快照,虚拟机启动之后,⾃动删除快照⽂件faramita2016@linux-l9e6:~> qemu-kvm -cpu host -hda vdisk.img -net nic -net bridge,br=br0 -snapshot -nographic以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。
kvm虚拟化技术实战与原理解析pdf KVM虚拟化技术实战与原理解析KVM(Kernel-based Virtual Machine)是一种开源的虚拟化技术,它通过利用Linux内核来创建和管理虚拟机,同时提供了高性能和快速的虚拟化环境。
本文将重点介绍KVM虚拟化技术的实战应用和原理解析。
一、KVM虚拟化技术概述KVM虚拟化技术是一种基于硬件的全虚拟化解决方案,它允许将一台物理机划分为多个虚拟机,并在每个虚拟机中运行不同的操作系统和应用程序。
KVM利用了Linux内核的虚拟化模块(KVM模块)来创建和管理虚拟机,并通过QEMU(Quick Emulator)提供了对虚拟硬件设备的模拟。
二、KVM虚拟化技术的实战应用1. 虚拟化服务器KVM虚拟化技术可以将一台物理服务器划分为多个虚拟服务器,每个虚拟服务器都具有独立的操作系统和资源。
这样可以提高服务器的利用率,节省硬件成本,并简化服务器的管理和维护。
同时,KVM 虚拟化技术还支持虚拟机的热迁移和快照功能,方便进行故障恢复和资源调度。
2. 云计算平台KVM虚拟化技术是目前主流的云计算平台使用的关键技术之一。
通过KVM虚拟化技术,云服务提供商可以将一台物理服务器划分为多个虚拟机,为不同用户提供独立的计算资源。
这样可以实现资源的弹性分配和动态扩缩容,提高云服务的灵活性和可扩展性。
3. 虚拟化桌面环境KVM虚拟化技术可以将一台物理桌面主机划分为多个虚拟桌面环境,每个虚拟桌面环境都具有独立的操作系统和应用程序。
这样可以实现桌面资源的集中管理和统一部署,减少用户端的硬件要求,并提高桌面环境的安全性和稳定性。
三、KVM虚拟化技术的原理解析1. KVM模块KVM虚拟化技术利用了Linux内核的虚拟化模块(KVM模块)来实现和管理虚拟机。
KVM模块利用虚拟化扩展技术,将物理机的处理器和内存虚拟化为多个虚拟机,每个虚拟机都能够独立运行不同的操作系统和应用程序。
2. QEMU在KVM虚拟化技术中,QEMU提供了对虚拟硬件设备的模拟。
KVM虚拟化(一)——介绍与简单使用KVM(Kernel-based Virtual Machine)是一种基于Linux内核的开源虚拟化技术,它允许在一台物理服务器上运行多个虚拟机。
KVM使用了Linux内核的虚拟化扩展,支持x86、x86-64、ARM等处理器架构。
KVM的核心思想是将Linux内核转化为一个虚拟化的管理层,这个管理层被称为Hypervisor。
Hypervisor负责管理虚拟机的创建、销毁和调度,同时它也负责为虚拟机提供一些虚拟设备,如虚拟CPU、虚拟内存、虚拟磁盘等。
KVM虚拟机运行在用户空间下,由Linux内核作为宿主机。
KVM的优势包括:1.性能高效:由于KVM直接运行在硬件上,因此虚拟机与宿主机几乎没有性能差异。
2. 安全可靠:KVM利用Linux内核的安全机制,可以隔离虚拟机之间,提供更高的安全性。
3. 灵活性:KVM虚拟机能够支持多种操作系统,如Linux、Windows、FreeBSD等。
4. 易于管理:KVM提供了丰富的管理工具,如virsh和virt-manager,可以方便地创建、配置和监控虚拟机。
下面我们来看一下KVM的简单使用。
首先需要确认宿主机是否支持KVM虚拟化。
可以通过以下命令来确认:```shellegrep -c '(vmx,svm)' /proc/cpuinfo```如果输出结果大于0,则表示宿主机支持KVM虚拟化。
接下来,我们需要安装KVM软件包。
在大多数Linux发行版中,kvm 和libvirt已经默认安装。
如果没有安装,可以通过以下命令来安装:```shellsudo apt-get install qemu-kvm libvirt-clients libvirt-daemon-system virtinst bridge-utils```安装完成后,我们可以通过以下命令来确认KVM是否安装成功:```shellvirsh list```如果输出结果是空的,则表示KVM安装成功。
KVM集中管理解决方案KVM(kernel-based virtual machine)是一种基于Linux内核的虚拟化技术,它可以将一台物理主机划分为多个虚拟机,并在每个虚拟机中运行独立的操作系统。
KVM虚拟化技术的主要优势之一是其能够提供高性能和低延迟的虚拟化环境。
然而,对于大规模的KVM部署来说,有效地管理和监控虚拟机变得非常重要。
因此,为了解决这个问题,可以采用一些KVM集中管理解决方案。
1. oVirt:oVirt是一个开源的虚拟化管理平台,它提供了对KVM虚拟机进行集中管理的功能。
oVirt提供了一个基于Web的管理界面,允许管理员轻松地创建和配置虚拟机、存储和网络资源。
此外,oVirt还提供了高级功能,如虚拟机迁移、负载均衡和自动化任务等。
2. Proxmox VE:Proxmox VE是一个基于KVM和LXC的虚拟化管理平台,它提供了一个易于使用的Web界面,用于管理和监控KVM虚拟机。
Proxmox VE支持高可用性集群、存储集成和备份/恢复功能,使管理员能够轻松地管理大规模的KVM虚拟化环境。
3. Kimchi:Kimchi是一个简单而轻量级的虚拟化管理工具,它专为管理KVM虚拟机而设计。
Kimchi提供了一个基于Web的用户界面,允许管理员远程管理和监控KVM虚拟机。
它还支持虚拟机的创建、删除、启动和停止等操作。
4. Virt-Manager:Virt-Manager是一个基于GTK+的图形化管理工具,用于管理KVM虚拟机。
Virt-Manager提供了一个用户友好的界面,允许管理员对虚拟机进行创建、配置和监控。
此外,Virt-Manager还支持虚拟机的迁移、快照和克隆等操作。
以上这些KVM集中管理解决方案都提供了一种简单而有效的方式来管理和监控大规模的KVM虚拟机环境。
无论您是一个小型企业还是一个大型数据中心,这些解决方案都可以帮助您更好地利用和管理KVM虚拟化技术。
根据您的需求和预算,您可以选择适合您的解决方案,并开始构建一个高性能、可靠和易于管理的虚拟化环境。
学习KVM 的系列文章:(1)介绍和安装(2)CPU 和内存虚拟化(3)I/O QEMU 全虚拟化和准虚拟化(Para-virtulizaiton)(4)I/O PCI/PCIe设备直接分配和SR-IOV(5)libvirt 介绍(6)Nova 通过libvirt 管理QEMU/KVM 虚机(7)快照(snapshot)(8)迁移(migration)1. 为什么需要CPU 虚拟化X86 操作系统是设计在直接运行在裸硬件设备上的,因此它们自动认为它们完全占有计算机硬件。
x86 架构提供四个特权级别给操作系统和应用程序来访问硬件。
Ring 是指CPU 的运行级别,Ring 0是最高级别,Ring1次之,Ring2更次之……就Linux+x86 来说,操作系统(内核)需要直接访问硬件和内存,因此它的代码需要运行在最高运行级别 Ring0上,这样它可以使用特权指令,控制中断、修改页表、访问设备等等。
应用程序的代码运行在最低运行级别上ring3上,不能做受控操作。
如果要做,比如要访问磁盘,写文件,那就要通过执行系统调用(函数),执行系统调用的时候,CPU的运行级别会发生从ring3到ring0的切换,并跳转到系统调用对应的内核代码位置执行,这样内核就为你完成了设备访问,完成之后再从ring0返回ring3。
这个过程也称作用户态和内核态的切换。
那么,虚拟化在这里就遇到了一个难题,因为宿主操作系统是工作在ring0 的,客户操作系统就不能也在ring0 了,但是它不知道这一点,以前执行什么指令,现在还是执行什么指令,但是没有执行权限是会出错的。
所以这时候虚拟机管理程序(VMM)需要避免这件事情发生。
虚机怎么通过VMM 实现Guest CPU 对硬件的访问,根据其原理不同有三种实现技术:1. 全虚拟化2. 半虚拟化3. 硬件辅助的虚拟化1.1 基于二进制翻译的全虚拟化(Full Virtualization with Binary Translation)客户操作系统运行在 Ring 1,它在执行特权指令时,会触发异常(CPU的机制,没权限的指令会触发异常),然后VMM 捕获这个异常,在异常里面做翻译,模拟,最后返回到客户操作系统内,客户操作系统认为自己的特权指令工作正常,继续运行。
KVM的工作原理KVM是一种虚拟化技术,全称为Kernel-based Virtual Machine,它允许将一台物理主机分割成多个虚拟机,每个虚拟机都可以运行独立的操作系统和应用程序。
KVM的工作原理是通过在Linux内核中实现虚拟化功能,将虚拟机监视器(VMM)嵌入到内核中,使得虚拟机可以直接访问硬件资源。
KVM的工作原理可以分为以下几个关键步骤:1.硬件虚拟化支持:KVM依赖于处理器的硬件虚拟化扩展,如Intel的VT-x和AMD的AMD-V。
这些扩展提供了虚拟化所需的指令集和特权级别,使得虚拟机可以在一个受限的环境中运行。
2.虚拟化模块加载:在Linux内核中,KVM模块负责将物理主机转变为虚拟机监视器。
当KVM模块被加载时,它会创建一个特殊的设备文件/dev/kvm,用于与用户空间的虚拟机管理程序进行通信。
3.虚拟机创建:当用户空间的虚拟机管理程序(如QEMU)启动时,它会通过与KVM模块的交互来创建一个虚拟机。
虚拟机管理程序会为虚拟机分配必要的资源,如内存、CPU和设备模拟器。
4.虚拟机运行:一旦虚拟机创建完成,它就可以在物理主机上运行。
KVM模块负责将虚拟机的指令转发给物理处理器,并对虚拟机的访问硬件资源进行隔离和管理。
5.设备模拟器:KVM通过设备模拟器来模拟虚拟机对硬件设备的访问。
设备模拟器将虚拟机对设备的请求转发给物理主机上的实际设备,并将设备的响应传递回虚拟机。
6.内存管理:KVM使用一种称为“二级页表”的技术来管理虚拟机的内存。
物理主机上的内存被分成小块,每个虚拟机都有自己的页表来映射虚拟地址到物理地址。
7.虚拟机迁移:KVM支持虚拟机的迁移,即将虚拟机从一台物理主机迁移到另一台物理主机上。
这通过将虚拟机的状态保存到磁盘上,然后在目标主机上恢复虚拟机的状态来实现。
总结起来,KVM的工作原理是通过在Linux内核中实现虚拟化功能,将物理主机分割成多个虚拟机,并提供对硬件资源的访问和管理。
一项目背景为公司其他部门提供的虚拟机运行在Vmware,Citrix的产品上,它们各自都是由相应的客户端管理虚拟机。
为了能够通过WEB方式对虚拟机进行统一化管理,我们开始寻找已有产品的官方解决方案,但是Vmware,Citrix官方的虚拟化WEB管理工具都是需要付费购买。
本身Vmware,Citrix的产品也不是开源的,从公司的利益以及其他技术方面的角度考虑,我们将采用开源的虚拟化平台软件来完全更换现有的商用虚拟化平台软件。
二开源虚拟化管理程序的选用熟知的开源虚拟化管理程序有XEN和KVM两种。
1.XEN介绍XEN是一个开放源代码的虚拟机管理程序。
由剑桥大学开发,它打算在单个计算上运行多达128个具有完全功能的操作系统。
在旧的处理器上运行XEN,操作系统必需进行显式地修改以在XEN上运行。
这使得XEN无需特殊硬件平台支持,就能达到高性能的虚拟化。
XEN通过一种叫做半虚拟化的技术获得高性能的表现。
在比较旧的硬件平台上,没有CPU的虚拟化支持,XEN可以通过半虚拟化获得比较高的性能。
半虚拟化使用虚拟机管理程序分享存取底层的硬件,但是它的客户操作系统集成了虚拟化方面的代码,该方法无需重新编译或引起陷阱,因为操作系统自身能够与虚拟化管理程序进行很好地协作,半虚拟化技术的优点是性能高,特别是I/0方面,但是操作系统需要进行更改,用户体验方面不强。
XEN也支持全虚拟化技术。
全虚拟化技术也称为原始虚拟化技术。
它使用虚拟机协调客户操作系统和原始硬件。
全虚拟化最大的优点是操作系统不需经过任何修改,但是性能方面不如半虚拟化。
2.KVM介绍KVM全称是Kernel-based Virtual Machine,即基于内核的虚拟机。
KVM项目代表下一代开源虚拟化。
该项目的目标是通过建立在先前的技术和充分利用当今的硬件条件下创造出一个现代的虚拟化管理程序。
KVM以一种可加载模块的方式移植到linux内核中,它将linux 转换成一种可以裸机安装的虚拟化管理程序。
KVM虚拟化技术能够在单个服务器硬件平台上运行多个虚拟机(vm)的能力在如今的it基础架构中实现了了成本、系统管理和灵活性等方面的优势。
在单个硬件平台上托管多个虚拟机,可减少硬件开支并帮助最大限度降低基础架构成本,比如能耗和制冷成本。
将操作方式不同的系统作为虚拟机整合在一个硬件平台上,可简化通过管理层(比如开源虚拟化库(libvirt))和基于它的工具(比如图形化的虚拟机管理器(vmm))对这些系统的管理工作。
虚拟化还提供了如今面向服务的高可用性it操作中所需的操作灵活性,支持将正在运行的虚拟机从一个物理主机迁移到另一个主机,以满足硬件或物理场所问题的需要,或者通过负载平衡最大限度提高性能,或者应对日益增长的处理器和内存需求。
开源桌面虚拟化应用程序(如VirtualBox)允许用户甚至小型企业(中小型企业单位或中小型企业)环境在单个物理系统上运行多个虚拟机。
然而,VirtualBox等虚拟化环境在桌面或服务器系统上作为客户端应用程序运行。
企业计算环境需要一个更接近物理硬件(“裸机”)的高性能、面向服务器的虚拟化环境,它支持虚拟机的执行,而操作系统开销要少得多。
裸机虚拟化机制可以更好地管理硬件资源,并充分利用大多数64位x86和PowerPC处理器内置的虚拟化硬件支持。
裸机虚拟化机制使用一个称为虚拟机管理程序的小操作系统,来管理和计划虚拟机以及相关的资源。
裸机虚拟机管理程序称为type1虚拟机管理程序。
两种最流行的裸机开源虚拟化技术是kernelvirtualmachine(kvm)和xen。
尽管xen和kvm各有自己的优点和爱好者,但kvm的流行度和复杂度在不断增加,它现在已成为大多数linux发行版的推荐默认虚拟化机制。
比较KVM和Xenxen虚拟化环境在传统上提供了linux系统上性能最高的开源虚拟化技术。
xen使用一个虚拟机管理程序来管理虚拟机和相关的资源,还支持半虚拟化,这可在“知道”自己已实现虚拟化的虚拟机中提供更高的性能。
KVM虚拟化集群技术概述一、虚拟化集群介绍、设计思路及架构使用虚拟化集群的目标是克服单机虚拟化的局限性,利用技术手段提高虚拟机可用性,最终达到业务不中断或者减少中断时间,确保业务数据更安全的目标。
1. 虚拟化集群介绍1) 什么是虚拟化集群虚拟机集群最显著的特征是有共享存储,因为有了共享存储,虚拟机就可以实现非常快速的在线迁移,并在虚拟化层配置高可用。
笔者在生产环境使用的集群有两种存储方式,基于商业存储和基于开源分布式文件系统。
2) 虚拟化集群的高可用和基于应用层高可用的区别高可用是经常用到的运维技术,在系统、网络、数据库、Web 业务等各个应用层面都有使用。
高可用技术是指至少有主备两个节点,当主节点故障的时候,迅速切换到备用节点。
为了避免备用节点误判,有时候还有第三个节点,或者主节点和备用节点共同能访问到的存储空间,用于做仲裁判断。
应用层面的高可用还有一个特点,就是一般都有浮动IP ,当切换发生的时候,IP 从主节点漂移到备用节点。
应用层面的高可用一般切换时间比较快,从几毫米到几秒中,同时应用层面的高可用一般需要专用软件,比如常用的Keepalived ,Heartbeat 等。
虚拟化层面的高可用是虚拟机系统层面的高可用,即当一台计算节点故障的时候,在另外一台计算节点上自动将故障节点上的虚拟机启动起来。
注意如果虚拟机上的业务不能做到开机自启动,即使虚拟机自动启动了,并不能保证业务层面的自动恢复!另外还有一个问题,就是即使虚拟机启动起来了,当启动到一半虚拟机的系统卡住了,也不能及时恢复业务!虚拟化层的高可用一般业务恢复实际是系统重启的时间,加上业务开机自启动的时间,通常是分钟级别。
虽然虚拟化层高可用有业务不能恢复的风险,业务恢复时间也相对比较长,但是虚拟化层高可用有个非常巨大的优势,就是不需要在应用层面配置,大大的拓宽了高可用的适用范围,使原来在应用层难以使用高可用技术的应用,也能做到高可用,尤其是在某些专用的软件领域。
其实虚拟机层高可用和应用层面高可用并不矛盾,在虚拟机的系统里面,也可以配置应用层面的高可用,做这样的配置的时候,注意主备节点放置到不同宿主机上!3) 虚拟化集群后端存储的使用最早的时候,笔者在生产环境使用的集群都是以机柜为单位的小集群,主要因为笔者一直搭建的是私有云,在IDC 机房里面机柜都是要计算费用的,为了充分利用资源,合理节省成本,笔者私有云一个设计思想就是能够按照机柜,灵活扩展或者伸缩。
后来随着虚拟化的规模扩大,也进行了一些基于开源分布式文件系统集群的搭建,基于开源分布式文件系统的集群,规模可以更大,扩展性更好,适用于KVM的开源分布式文件系统在第9章、第10章都有详细的介绍。
开源的虚拟化管理平台,本书第11 章、第12 章、第13 章有详细介绍,所以本章不再介绍开源分布式文件系统及管理平台。
2. 使用虚拟化集群的优势虚拟化集群相对于单机虚拟化,有以下几点优势:q 快速的在线迁移(Live Migration) ,设备、系统维护造成的业务计划内停机时间减少到零。
q 高可用(HA) ,一台计算节点故障,上面的虚拟机可以很快在其他计算节点上启动运行起来,极大缩短计划外停机时间。
q 动态资源调度,业务负载发生变化引起计算节点压力分布不均匀时,可手动或者自动平衡物理机负载。
也可在整体压力较低的时间段,将虚拟机集中在部分计算节点上,将不用的计算节点临时关闭,达到节能的目标。
q 业务快速部署,集群将资源池化,通过和管理平台结合,在集群的容量范围内,业务部署的速度非常快。
q 数据更安全,后端存储采用冗余度更高的商业存储,或者分布式文件系统,数据可靠性可以达到99.99%以上。
q 网络速度、可靠性更高,集群网络采用冗余架构,网络设备、网络连接都是双冗余,网络速度更高,可靠性也更高,单台网络设备、单根网线、单个网卡故障都不会引起网络中断。
提示:1) 什么是计划内停机与计划外停机计划内停机是指可预期可计划的停机,比如定期的维护,提前通告的维护。
计划外停机是指突发事件引起的停机事件,比如硬件故障,网络DDO攻击等。
一般计划内停机因为是提前预知的,会做好预防措施,不会有数据丢失,对业务的损失是比较小的。
计划外停机则因为是突发事件,对业务的损失要大很多。
运维的重要职责之一就是通过技术手段减少计划外和计划内停机时间,对虚拟化来说,虚拟化集群能够做到在线虚拟机迁移,并且是全冗余设计,需要计划内硬件和软件维护的时候,可以做到计划内停机时间为零。
当宿主机发生紧急硬件故障的时候,虚拟机可以很快在其他宿主机上开起来,所以虚拟化集群也能有效降低计划外停机。
2) 在线迁移并不是灾备手段在线迁移实际迁移的是虚拟机的内存,当宿主机发生故障的时候,虚拟机的内存信息已经丢失了,这时候是不能再去做虚拟机的在线迁移的。
所以在线迁移解决的是有计划的维护问题,比如要升级宿主机内存,可以将宿主机上的虚拟机在线迁移到其他宿主机上,内存升级完成后,在将虚拟机在线迁移回来。
3. 集群设计及架构1) 虚拟化集群设计为保证虚拟机的尽量的在线时间,灵活的扩展,虚拟化集群的设计需要满足以下要求:q 有共享存储,虚拟机能够在线迁移;q 通过增加计算节点、存储、网络设备可以横向扩展;q 没有单点故障,计算节点有多个,商业存储为双控制器,分布式文件系统镜像写多份,网络设备冗余;q 性能满足要求,并且通过增加设备,性能可以扩展2) 虚拟化集群的架构一套虚拟化集群体系包括以下组成部分:q 若干计算节点,承载虚拟机的计算、内存、网络资源q 管理节点及管理平台,管理虚拟机的镜像,虚拟机生成、维护、销毁的生命周期,虚拟机的调度;q 后端存储,存储虚拟机镜像存放;q 网络设备。
二、虚拟化集群技术方案1. 前端计算虚拟化集群前端计算节点可以使用普通机架式服务器,也可以使用刀片服务器。
1) 机架式服务器做为计算节点的优缺点机架式服务器做为计算节点的优点是:q 架构简单,安装配置方便;q 扩展节点数量和升级较为容易q 成本有一定的优势缺点是:q 随着节点数量的增多,占用的机柜空间也在增大,单机柜服务器密度低;q 网络结构复杂,每台服务器有公网、私网、存储网;q 交换机端口数量多,接线容易出错。
2) 刀片服务器做为计算节点的优缺点使用刀片服务器作为计算节点的优点是:q 刀片服务器内置交换机,可以灵活的配置网络;q 刀片服务器连线简单,占有交换机端口数量少,网络非常简洁; q 单位机柜服务器密度大;q 功耗低;q 刀片服务器冗余电源和风扇,冗余交换模块,是全冗余的架构。
使用刀片服务器的缺点是:q 成本较高;q 配置复杂,安装配置需要专业的知识;q 往往需要改造机柜电源,并受限于机柜最高电流。
另外目前还有一种多节点服务器,就是在1U或者2U的空间里面,能够容纳2到4台服务器,这些服务器很像是刀片服务器,共享电源和机框,但是网络接口独立。
多节点服务器密度介于机架式服务器和刀片服务器之间,使用上和机架式服务器完全一样。
服务器的配置选型,根据笔者的经验,选择比较高的配置,虽然初期投入高,但是长远看,因为能够容纳更多的虚拟机,其实是节省成本的。
宿主机在运行一段时间后,往往会发现内存是瓶颈,所以开始配置的时候,内存尽量配置大一些。
具体宿主机如何选型在第15 章已经有详细的介绍,本章就不重复介绍了。
3. 后端存储技术方案虚拟化集群的后端存储可以使用商业存储和分布式文件系统,商业存储有三类:NAS、IP SAN、FC SAN。
1)NAS 共享存储NAS(NETWORK ATTACHED STORAG即网络附加存储,网络上直接挂接的存储设备,相当于一个网络文件共享服务器。
测试环境可以用一台普通的主机模拟NAS只要这台主机有自己的磁盘和文件系统,并且对外提供访问文件系统的接口。
最常见的NAS有Linux 下的NFS和windows 下的CIFS。
2)IP SAN 共享存储SAN(STORAGE AREA NETWOR即存储区域网络,主要是基于TCP/IP的网络来实现数据存取,即传输介质为IP网络。
通过IP网络将计算计算节点和存储设备连接起来,计算节点通过发送BlockI/O 的请求到存储设备,最常见的就是用ISCSI 技术,计算节点通过SCSI 协议发出读取数据的请求,并用TCP/IP包封装SCSI包,就可以再TCP/IP 网络中进行传输,即SCSI over TCP/IP 。
测试环境也可以用普通服务器模拟ISCSI 存储。
3)F C 存储FC(Fibre Channel 光纤通道)SAN类似于IP SAN,只是以光纤作为传输介质,性能较高,目前使用最广。
计算节点上安装光纤接口的HBA(Host BusAdapter,提供服务器内部的I/O通道与存储系统的I/O通道之间的物理连接)卡,为了冗余HBA卡一般有两块,分别接两台光纤交换机, 存储一般有两个控制器, 也分别接两台光纤交换机, 达到全容易的目标。
FC SAN计算节点直接将I/O请求通过FC网络发送到存储设备,性能非常高。
4)生产环境如何选择存储类型在实际部署的生产环境中,选择存储类型,取决于以下几个因素:q 业务性能及可靠性需求q 预算q 运维对技术熟悉程度一般来说,对性能要求非常高的业务,使用FCSAN存储,FCSAN 存储也是成本最高的一种方案。
如果业务性能需要稍低,可以使用NAS IP SAN的存储,NAS IP SAN的存储是性价比比较高的方式。
如果业务主要是CPU消耗型的,可以考验使用分布式文件系统,本书第9章介绍的DRBD GlusterFS,第10章介绍的CEPH工作都很稳定,但是性能相对比较低,很适合CPU消耗型的虚拟机。
关于NFS和ISCSI,业内一直有争论,NFS配置简单,但是因为是应用层的协议,有人认为性能低,其实商业存储做了许多优化,性能也不见得比ISCSI 差。
如何选择主要取决于预算、运维的技术习惯、具体的存储品牌型号,笔者生产环境喜欢使用ISCSI 存储。
内容仅供参考。