作者介绍:简历上没有一个精通的运维工程师。希望大家多多关注作者,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。
虚拟化,简单来说就是把一台服务器/PC电脑,虚拟成多台独立的虚拟机,每台虚拟机之间相互隔离,每个虚拟机都有自己独立的操作系统,磁盘,网络资源。虚拟化是一个很庞大的系统,我的介绍主要是帮助你入门,让你了解基本技术原理,具备搭建操作虚拟化的能力。由于涉及到内容较多,这里的目录就只是以简单分类介绍和说明,不再针对单个小节进行目录列出,主要涉及的分类包括以下几个方面:
1.虚拟化介绍
2.kvm基本使用
3.kvm进阶使用(本小节属于)
4.kvm技术原理
5.vmware介绍&使用
6.小结
虚拟机的迁移主要分三种:冷迁移,热迁移和故障迁移。冷迁移,主要指的是虚拟机在处于关机状态下的迁移。热迁移则说的是虚拟机在运行中的迁移。故障迁移则说的是虚拟机所在节点故障以后触发的迁移。
由于为了演示热迁移,所以迁移将分两小节来讲解,本小节将主要介绍冷迁移和故障迁移。
通过我们前面几节的学习,我们知道一个虚拟机主要包含配置文件,就是xxx.xml文件,另外一个就是虚拟机的镜像文件,而我们前面演示的虚拟机都是使用的本地文件,配置文件也在本地。那么故障迁移肯定是无法做到的,因为虚拟机因为机器故障已经失联,我们无法操作该虚拟机对应的文件和配置文件。
冷迁移
冷迁移是指在虚拟机关机的状态下进行的迁移。这种迁移通常涉及以下步骤:
-
备份虚拟机:包括虚拟机的磁盘文件和配置文件(其实好像也不需要再备份)。
-
传输文件:将这些文件复制或移动到新的宿主服务器上。
-
重新配置:如果需要的话,更新虚拟机的配置以适应新环境。
-
启动虚拟机:在新的宿主服务器上启动虚拟机。
#其实备份是不需要的,在虚拟机关机状态下直接复制即可 rsync -avz xxx.xml root@1.1.1.1:/etc/libvirt/qemu/
#文件要和原始路径一致,或者修改xml里面的路径 rsync -avz xxx.qcow2 root@1.1.1.1:/data/image
#重新定义虚拟机virsh define /etc/libvirt/qemu/xxx.xml
本质上这个迁移和上一小节基于文件复制或者clone虚拟机是一样的操作,只是这个把操作从复制文件到本地变成到另外一台服务器,需要注意的就是复制过去以后,需要确保网络连通性。
另外我们在解释kvm主机的镜像文件的时候,KVM-磁盘格式介绍说过,如果raw格式,即便是空文件,通过网络传输的时候,也会传输定义的大小,如下图。
解决办法,转换成qcow2文件进行传输
csharp
[root@localhost raw]# qemu-img convert -c -O qcow2 image_file.img output.qcow2
[root@localhost raw]# ll
total 1220
-rw-r--r-- 1 root root 21474836480 Nov 1 21:41 image_file.img
-rw-r--r-- 1 root root 197120 Nov 1 21:52 output.qcow2
[root@localhost raw]# du -sh image_file.img
1.0M image_file.img
[root@localhost raw]# du -sh output.qcow2
196K output.qcow2
故障迁移
前面说过,使用本地数据是没有办法故障迁移的,所以故障迁移的前提条件是镜像文件和配置文件都不保存在本地。存储可以使用共享存储,比如分布式存储ceph,配置文件则存储在数据库里面。
那怎么触发故障迁移呢?作者在某头部云厂商工作的经历来说,他们是定义了下面2个条件。
第一个条件是ping不可达,由于是专门的计算服务器,所以在很少干扰的情况下ping不可达确实可以作为判断服务器是否故障的依据,如果真的出现了ping不可达的情况,则管控节点根据自己的逻辑进行故障迁移流程。
第二个条件则是agent上报超时,每个计算节点都有一个专门的agent进程,用于统计或者监控计算服务器的信息,这个agent会定时上报服务器情况,如果服务器未按照预期上报主机状态,则管控节点也会根据自己的逻辑进行故障迁移流程。
故障迁移流程一般包含下面内容(不保证准确,仅供参考)。
-
下发故障虚拟机的配置文件和镜像文件到目标主机,供主机拉起。
-
下发故障虚拟机对应的路由信息等,确保该主机能正常加入网络,并隔离原有故障网络。
-
更新这个虚拟机的状态信息,比如原来在A服务器,现在迁移到了B服务器。
-
更新宿主机状态,确保它不会自动恢复可用状态,这个需要等待人工确认以后才会恢复正常状态。
当然,如果大家使用公有云,以目前公有云的体量来说,还是不容易遇到的,作者多年的公有云使用经验到目前为止只遇到过一次,所以我们需要确保自己业务是高可用及自动恢复的。
运维小路
一个不会开发的运维!一个要学开发的运维!一个学不会开发的运维!欢迎大家骚扰的运维!
关注微信公众号《运维小路》获取更多内容。