虚拟机热迁移环境部署

一、准备3台虚拟机

1. 准备3台统一网段的虚拟机

     3台虚拟机信息如下:

编号

IP

安装程序

作用

kvm1

192.168.153.129

kvm、qemu、liblibvirt、virt-installvirt-manager等

kvm宿主机,安装虚拟机及演示迁移

kvm2

192.168.153.139

kvm、qemu、liblibvirt、virt-install、virt-manager等

kvm宿主机,安装虚拟机及演示迁移

kvm3

192.168.153.149

nfs

kvm虚拟机的NFS服务器2

2. 修改hostname

3. 配置虚拟机网络信息

4. 安装依赖的程序

注意:使用VMware安装时,需要开启虚拟化,才能使用kvm功能,如下图所示。使用lsmod |grep kvm查看加载模块信息时,如果只查看到kvm_intel,没有kvm,则需要更新系统内核。例如:yum -y update。

默认情况下,kvm、qemu、liblibvirt、virt-install、virt-manager等模块都已安装,可以使用rpm -qa|grep app的方式确认是否已安装。

二、使用一台虚拟机作为NFS服务器

1. 安装NFS

yum install nfs-utils

2. 查看是否安装成功

rpm -qa|grep nfs

3. 创建共享目录

在/root目录下新建kvmpool目录

mkdir kvmpool

4. 配置并启动NFS

vim /etc/exports

填入

/root/kvmpool *(rw,sync,no_root_squash)

5. 重启rpcbind服务,并将rpcbind服务设置为开机自启动

systemctl restart rpcbind

systemctl enable rpcbind

6. 启动nfs服务,并将nfs服务设置为开机自启动

systemctl restart nfs-server

systemctl enable  nfs-server

7. 开放防火墙相关服务

firewall-cmd --add-service=rpc-bind 

firewall-cmd --add-service=rpc-bind --permanent 

firewall-cmd --add-service=nfs

firewall-cmd --add-service=nfs --permanent

firewall-cmd --add-service=mountd

firewall-cmd --add-service=mountd --permanent

没有加 --permanent,重启后,防火墙将不再开放相关服务

8. 开放端口

使用rpcinfo -p查看相关端口信息

iptables -A INPUT -p TCP --dport 111 -m state --state NEW -j ACCEPT

iptables -A INPUT -p UDP --dport 111 -m state --state NEW -j ACCEPT

iptables -A INPUT -p TCP --dport 2049 -m state --state NEW -j ACCEPT

iptables -A INPUT -p UDP --dport 2049 -m state --state NEW -j ACCEPT

9. 在kvm机器上查看NFS服务器的共享信息

showmount -e 192.168.153.149

10. 在kvm机器上创建挂载NFS共享目录

创建nfs目录,两台kvm机器的NFS共享目录的路径要求一样。

注意:一般使用root用户启动虚拟机管理工具,所以建议用root用户创建nfs共享目录,否则,可能会出现访问权限不够的问题。例如在/root目录下创建共享目录。

mkdir nfs

mount -t nfs 192.168.153.149:/root/kvmpool ./nfs

使用df -h可以查看挂载信息

注意:kvm虚拟机重启后,挂载的目录将失效,需要重新挂载。

三、创建虚拟机

1. 在kvm机器上配置机器别名

配置/etc/libvirt/libvirt.conf

2. 使用virt-manager打开虚拟机管理工具

3. 配置文件路径

在虚拟机管理工具的"edit->connection Details”界面中,创建镜像文件

4. 新建虚拟机

5. 选择挂载的镜像

6. 设置CPU和内存

7. 设置镜像文件

设置镜像文件大小时,镜像文件大小建议比可使用空间小1.5G以上,否则,可能会出现空间不够而导致安装过程中卡死的现象出现。

8. 设置虚拟机名称

修改名称,点"finish"开始创建虚拟机

9. 配置虚拟机参数

设置root密码,其它都默认

10. 安装完成后,重启虚拟机。

四、测试虚拟机热迁移

1. 登录虚拟机

使用账号登录虚拟机

2. 创建一个循环进程

虚拟机默认安装了python,创建一个python程序。例如,创建一个每3秒写当前时间到文件中的程序:

import time

import datetime

def log_time():

while True:

with open('log.txt', 'a') as f: 

           print(datetime.datetime.now())

            f.write(datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S') + '\n')

        time.sleep(3)  # 等待3秒

if __name__ == '__main__':

    log_time()

3. 使用virsh工具

在root用户下,执行virsh进入工具界面

4. 编辑虚拟机参数

使用list --all查看现有虚拟机,然后使用edit vm_name编辑虚拟机参数。如下:

修改虚拟机磁盘cache选项,writeback和writethrough模式不支持动态迁移。如下:

5. 关闭目标机器的防火墙

systemctl stop firewalld

不关闭可能会出现No route to host的情况,也可以通过打开指定防火墙端口的方式解决。

6. 执行迁移操作

virsh migrate <domain> --desturi <desturi> --persistent --undefinesource --offline

--desturi:迁移目的的URI,如:qemu+ssh://192.168.153.139/system

--persistent: 永久迁移(将虚拟机的配置文件复制到迁移目的节点)

--undefinesource: 在源节点中反定义虚拟机(删除源节点的虚拟机配置文件)

--live: 虚拟机在线迁移(动态迁移)

--offline: 虚拟机离线迁移(静态迁移)

例如:

virsh migrate subcentos --desturi kvmlab2 --live

或者

virsh migrate subcentos --desturi qemu+ssh://root@192.168.153.139/system --live

注意:没有加--persistent参数,迁移到目标机器上后,子虚拟机关停服务,会自动删除虚拟机。

附录:安装过程中遇到的问题

KVM安装过程中遇到的问题

1. 虚拟机管理工具报错:内部错误:没法找到适合 x86_64 的模拟器

安装完 KVM 以后,使用virt-manager启动虚拟机管理工具,管理工具报错:内部错误:没法找到适合 x86_64 的模拟器,使用命令systemctl status libvirtd查看日志。

过滤出关键信息为:symbol SSL_CONF_CTX_set_ssl_ctx, version libssl.so.10 not defined in file libssl.so.10 with link time reference

解决方法:

(1)安装openssl

 yum -y install openssl

(2)重启libvirtd

systemctl restart libvirtd

(3)查看libvirtd状态日志

systemctl status libvirtd

日志异常信息不再出现。

2. 系统内核没有kvm模块

VMware安装完centos系统后,使用lsmod |grep kvm 查看kvm模块时,没有kvm模块,如下图所示:

这是因为centos安装包内核版本太低原因导致的,使用yum -y update 更新内核后

出现了kvm模块

注意,没有kvm模块,使用kvm的虚拟机管理工具创建虚拟机时,会创建失败。

3. 虚拟机管理工具报错:配置完虚拟机参数,创建虚拟机时,界面卡死

虚拟机管理工具创建虚拟机过程中,配完虚拟机的内存、CPU和磁盘空间等参数后,创建虚拟机时,界面卡死,没有异常信息。

使用 virt-install命令安装,创建失败时,会打印创建失败的原因,有利于解决创建失败的问题。例如:

 virt-install --name subcentos --memory 2048 --vcpus 2 \

--disk path=/home/zqs/Img/subcentos.qcow2,size=7 --cdrom /home/zqs/Share/CentOS-7.2-x86_64-DVD-1511.iso \

--graphics vnc,port=5900,listen=0.0.0.0,password=123456 \

其中

-n NAME, --name=NAME:虚拟机名称,需全局惟一; 

-r MEMORY, --ram=MEMORY:虚拟机内在大小,单位为MB; 

--vcpus=VCPUS[,maxvcpus=MAX][,sockets=#][,cores=#][,threads=#]:VCPU个数及相关配置; 

--cpu=CPU:CPU模式及特性,如coreduo等;可以使用qemu-kvm -cpu ?来获取支持的CPU模式;

-c CDROM, --cdrom=CDROM:光盘安装介质; 

--disk=DISKOPTS:指定存储设备及其属性;格式为--disk /some/storage/path,opt1=val1,opt2=val2等;常用的选项有: 

 device:设备类型,如cdrom、disk或floppy等,默认为disk; 

 bus:磁盘总结类型,其值可以为ide、scsi、usb、virtio或xen; 

 perms:访问权限,如rw、ro或sh(共享的可读写),默认为rw; 

 size:新建磁盘映像的大小,单位为GB; 

 cache:缓存模型,其值有none、writethrouth(缓存读)及writeback(缓存读写); 

 format:磁盘映像格式,如raw、qcow2、vmdk等; 

 sparse:磁盘映像使用稀疏格式,即不立即分配指定大小的空间; 

--nodisks:不使用本地磁盘,在LiveCD模式中常用;

--graphics TYPE,opt1=val1,opt2=val2:指定图形显示相关的配置,此选项不会配置任何显示硬件(如显卡),而是仅指定虚拟机启动后对其进行访问的接口; 

 TYPE:指定显示类型,可以为vnc、sdl、spice或none等,默认为vnc; 

 port:TYPE为vnc或spice时其监听的端口; 

 listen:TYPE为vnc或spice时所监听的IP地址,默认为127.0.0.1,可以通过修改/etc/libvirt/qemu.conf定义新的默认值; 

 password:TYPE为vnc或spice时,为远程访问监听的服务进指定认证密码

-w NETWORK, --network=NETWORK,opt1=val1,opt2=val2:将虚拟机连入宿主机的网络中,其中NETWORK可以为: 

 bridge=BRIDGE:连接至名为“BRIDEG”的桥设备; 

 network=NAME:连接至名为“NAME”的网络;

--livecd: 把光盘当作LiveCD; 

--os-type=DISTRO_TYPE:操作系统类型,如linux、unix或windows等;

-l LOCATION, --location=LOCATION:安装源URL,支持FTP、HTTP及NFS等,如ftp://172.16.0.1/pub;

4. 使用virt-install安装虚拟机报错,提示:Permission denied

使用root权限创建虚拟机时,提示权限不够。如下图:

切换到普通用户zqs下,创建虚拟机。或者修改/home/zqs目录的权限。

5. 使用virt-install安装虚拟机报错,提示:Guest Is already in use

使用virsh undefine subcentos(subcentos是虚拟机名字)

6. 热迁移过程中提示不安全迁移,cache不为None

报错信息如下:

解决方法:

使用list --all查看现有虚拟机,然后使用edit vm_name编辑虚拟机参数。如下:

修改虚拟机磁盘cache选项,writeback和writethrough模式不支持动态迁移。如下:

重启虚拟机

7. 热迁移过程中,提示目的主机的hostname为localhost,但是需要为FQDN

报错信息如下:

修改kvm源节点和目的节点的主机名

vi /etc/hostname

重启kvm虚拟机

8. 热迁移过程中,提示不能进入共享的存储文件

报错信息如下:

解决方法:

vim /etc/libvirt/qemu.conf

把user和group的注释去掉,放开root权限

重启libvirt

systemctl restart libvirtd.service

9. 热迁移过程中,提示不能打开共享的存储文件

报错信息如下:

解决方法:

vim /etc/libvirt/qemu.conf

把user和group的注释去掉,放开root权限

重启libvirt

systemctl restart libvirtd.service

10. 热迁移过程中,提示Name or service not known

报错信息如下:

解决方法:

vi /etc/hosts

为kvmlab2关联ip

11. 热迁移过程中,提示No route to host

报错信息如下:

解决方法:

设置ssh免密码登录。

如果上述方法不行,关闭目标机器的防火墙

systemctl stop firewalld

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值