CentOS6.5部署KVM及实现在线迁移

CentOS6.5部署KVM及实现在线迁移

一、前言
  虚拟化技术已经成为未来计算机技术的一个重要的发展方向。Linux在虚拟化方面已经有了很多种解决方案:VMware、VirtualBox、Xen和KVM!现在给大家分享下本人在KVM里遇到坑及解决方法。大牛们别喷.....
  
  KVM简介
    KVM是一个全虚拟化的解决方案。可以在x86架构的计算机上实现虚拟化功能。但KVM需要CPU中虚拟化功能的支持,只可在具有虚拟化支持的CPU上运行,即具有VT功能的Intel
  CPU和具有AMD-V功能的AMD CPU。
  在kvm技术中应用到2样东西:kvm+qemu
  kvm负责cpu虚拟化+内存虚拟化,实现了cpu和内存的虚拟化,但kvm不能模拟其他设备;
  qemu是模拟IO设备(网卡,磁盘),kvm加上qemu之后就能实现真正意义上服务器虚拟化。
  因为用到了上面两个东西,所以一般都称之为qemu-kvm

  关于KVM的介绍在这里我就不多说了,有兴趣的童鞋可以自己去查找下;下面我们直接进行部署阶段。


二、环境介绍
  本环境需要至少3台机器分别为:

1、KVM_Server_1: 192.168.30.1312、KVM_Server_2: 192.168.30.1323、iSCSI_Server: 192.168.30.133

三、安装前的准备(3台主机都需要操作)

  1、开启BISO中的CPU虚拟化支持(具体方法在这里就不多介绍了)
  2、查看系统对KVM虚拟化的支持

[[email protected] ~]# egrep "svm|vmx" /proc/cpuinfo |wc -l1

  注:vmx是Intel系列CPU支持虚拟化的标签;
    svm是AMD系列CPU支持虚拟化的标签;
     如果数值大于0表示支持虚拟化

  3、配置主机FQDN

[[email protected] ~]# hostname --fqdnlocalhost[[email protected] ~]# sed -i "s/HOSTNAME=.*$/HOSTNAME=KVM-1/g" /etc/sysconfig/network[[email protected] ~]# hostname KVM-1[[email protected] ~]# cat /etc/hosts127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4::1 localhost localhost.localdomain localhost6 localhost6.localdomain6[[email protected] ~]# echo "192.168.30.131 KVM-1" >> /etc/hosts[[email protected] ~]# echo "192.168.30.132 KVM-2" >> /etc/hosts[[email protected] ~]# hostname --fqdnKVM-1[[email protected] ~]# exit

4、关闭Selinux

[[email protected] ~]# grep "SELINUX=enforcing" /etc/selinux/config SELINUX=enforcing[[email protected] ~]# sed -i ‘s/SELINUX=.*$/SELINUX=disabled/g‘ /etc/selinux/config[[email protected] ~]# setenforce 0[[email protected] ~]# getenforce Permissive[[email protected] ~]# 

        5、同步时间

[[email protected] ~]# yum -y install epel-release[[email protected] ~]# yum -y install ntp*[[email protected] ~]# dateThu Mar 2 11:13:03 CST 2017[[email protected] ~]# cp -Rf /usr/share/zoneinfo/Asia/Shanghai /etc/localtimecp: overwrite `/etc/localtime‘? y[[email protected] ~]# ntpdate 133.100.11.82 Mar 11:44:58 ntpdate[11762]: step time server 133.100.11.8 offset 1756.326390 sec[[email protected] ~]# sed -i ‘s#ZONE="America/New_York"#ZONE="Asia/Shanghai"#g‘ /etc/sysconfig/clock[[email protected] ~]# hwclock -w[[email protected] ~]# date -RThu, 02 Mar 2017 11:46:05 +0800[[email protected] ~]# echo "ntpdate 133.100.11.8" >> /etc/rc.d/rc.local

三、部署KVM;
  

  以下操作需要在2台KVM宿主机上部署,这里以KVM-1为例给大家演示具体的安装流程
  1、安装常用软件包

[[email protected]1 ~]# yum -y install vim wget gcc make crontabs mlocate \ntp lrzsz gcc-c++ autoconf setuptool ntsysv iptables \system-config-securitylevel-tui system-config-network-tui \sysstat dstat screen

  2、安装KVM

[[email protected] ~]# yum -y groupinstall Virtualization ‘Virtualization Client‘ \‘Virtualization Platform‘ ‘Virtualization Tools‘

    注:
      Virtualization:提供虚拟机的环境,主要包含qumu-kvm
      Virtualization-client:管理和安装虚拟机实例的客户端,主要有python-virtinst,virt-manager,virt-viewer    
      Virtualization-platform:提供访问和控制虚拟客户端的接口,主要有libvirt,libvirt-client
      Virtualization-tools:管理离线虚拟机镜像的工具,主要有libguestfs根据需求选择软件包。

  

  3、启动 Libvirt 服务

[[email protected] ~]# service libvirtd start[[email protected] ~]# chkconfig libvirtd on[[email protected] ~]# chkconfig --list libvirtdlibvirtd 0:off 1:off 2:off 3:on 4:on 5:on 6:off

  4、验证KVM模块的加载情况

[[email protected] ~]# lsmod | grep kvmkvm_intel    55464 0 kvm             345070 1 kvm_intel

  5、创建网桥(必须操作)

[[email protected] ~]# virsh iface-bridge eth0 cloudbr0

四、部署iSSCi磁盘共享
  八卦:前一篇文章已经介绍了《iSCSi共享存储》的具体部署方案,在这里我就不再重复介绍了;但是要注意确保两台KVM宿主机的挂载路径必须一样;
    例如:
      KVM-1的iSCSi磁盘为/dev/sdb挂载到本地的/mnt下,KVM-2的iSCSi磁盘也必须挂载到/mnt下:

[[email protected] ~]# df -h |egrep "Filesystem|sdb"Filesystem Size Used Avail Use% Mounted on/dev/sdb 19G 2.2G 16G 13% /mnt

[[email protected] ~]# df -h |egrep "Filesystem|sdb"Filesystem Size Used Avail Use% Mounted on/dev/sdb 19G 2.2G 16G 13% /mnt

请参考:http://zlyang.blog.51cto.com/1196234/1902349

五、创建Guest虚拟机
  八卦:因为我们下一步要做Guest虚拟机在服务不中断的情况下从KVM-1的宿主机上动态迁移到KVM-2的宿主机上,所以我们在创建虚拟机的时候只需要在KVM-1的宿主机上创建就行了;但需要iSCSi的配置必须相同;

    1、创建磁盘文件

[[email protected] ~]# qemu-img create -f qcow2 /mnt/CentOS6.8.qcow2 10G

    2、创建Guest虚拟机

[[email protected]1 ~]# virt-install --name CentOS6.8 --os-variant=rhel6 --ram 512 --vcpus=1 \--disk path=/mnt/CentOS6.8.qcow2,device=disk,format=qcow2,size=7,bus=virtio --accelerate \--cdrom /mnt/iso/CentOS-6.8-x86_64-minimal.iso \--vnc --vncport=5900 --vnclisten=0.0.0.0 \--network bridge=cloudbr0,model=virtio --noautoconsole

    参数介绍:
      --name name      虚拟机名称,需全局惟一
      --ram memory      分配给虚拟机的内存大小
      --vcpus CPU        分配给虚拟机的cpu核心数
      --disk          指定存储设备及其属性;格式为--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        磁盘映像使用稀疏格式,即不立即分配指定大小的空间;
      --cdrom         指定安装方法: 格式为 --cdrom /mnt/iso/CentOS-6.8-x86_64-minimal.iso
      --vnc         开启VPN
      --vncport       vnc端口,默认为5900
      --vnclisten         vnc监听地址,建议设为:0.0.0.0 即:监听所有地址
      --network        启用网络
        bridge         桥接到物理桥
        model         使用virtio驱动
      --autoconsole        不自动打开终端

    3、安装Guest虚拟机操作系统
       使用vnc-Viever来连接
        配置如下:
        VNC地址:192.168.30.131:5900
        注:如果出现窗口一闪就消失了,无法连接
        解决方法:
        点击vnc-viewer下面的options-----> expert ------> ColourLevel 的值改为rgb222 ---->确定
        然后重新连接就OK了!

    4、配置Guest虚拟机IP使其可以正常上网
       具体配置在这里就不做演示了!

六、配置KVM动态迁移
    前言
    虚拟机的迁移技术为服务器的虚拟化提供简便的方法。目前流行的虚拟化产品 VMware,Xen,Hyper-V,KVM 都提供各自的迁移工具。其中 Linux 平台上开源的虚拟化工具KVM发展迅速,基于KVM的虚拟机的迁移特性也日趋完善。本文全面介绍KVM虚拟机在不同的应用环境下的静态迁移(离线迁移)和动态迁移(在线迁移),并且在最新发布的 Suse Linux Enterprise Edition 11 SP1 上分别演示如何应用 libvirt/virt-manager 图形化工具和基于命令行的 qemu-kvm 工具进行迁移操作。
迁移方式的分类
    静态迁移
    静态迁移:也叫做常规迁移、离线迁移(Offline Migration)。就是在虚拟机关机或暂停的情况下从一台物理机迁移到另一台物理机。因为虚拟机的文件系统建立在虚拟机镜像上面,所以在虚拟机关机的情况下,只需要简单的迁移虚拟机镜像和相应的配置文件到另外一台物理主机上;如果需要保存虚拟机迁移之前的状态,在迁移之前将虚拟机暂停,然后拷贝状态至目的主机,最后在目的主机重建虚拟机状态,恢复执行。这种方式的迁移过程需要显式的停止虚拟机的运行。从用户角度看,有明确的一段停机时间,虚拟机上的服务不可用。这种迁移方式简单易行,适用于对服务可用性要求不严格的场合。

    共享存储的动态迁移
    动态迁移(Live Migration):也叫在线迁移(Online Migration)。就是在保证虚拟机上服务正常运行的同时,将一个虚拟机系统从一个物理主机移动到另一个物理主机的过程。该过程不会对最终用户造成明显的影响,从而使得管理员能够在不影响用户正常使用的情况下,对物理服务器进行离线维修或者升级。与静态迁移不同的是,为了保证迁移过程中虚拟机服务的可用,迁移过程仅有非常短暂的停机时间。迁移的前面阶段,服务在源主机的虚拟机上运行,当迁移进行到一定阶段,目的主机已经具备了运行虚拟机系统的必须资源,经过一个非常短暂的切换,源主机将控制权转移到目的主机,虚拟机系统在目的主机上继续运行。对于虚拟机服务本身而言,由于切换的时间非常短暂,用户感觉不到服务的中断,因而迁移过程对用户是透明的。动态迁移适用于对虚拟机服务可用性要求很高的场合。

    目前主流的动态迁移工具,VMware 的 VMotion,Citrix 的 XenMotion,他们都依赖于物理机之间采用 SAN(storage area network)或 NAS(network-attached storage)之类的集中式共享外存设备,因而在迁移时只需要进行虚拟机系统内存执行状态的迁移,从而获得较好的迁移性能。
    详细信息参考:https://www.ibm.com/developerworks/cn/linux/l-cn-mgrtvm2/

  1、配置iSCSi共享存储
      由于之前已经提到iscsi的配置方法了,且已经配置了这里就不多做介绍了

  2、配置ssh免密码登录
    a、KVM-1上操作

[[email protected] ~]# ssh-keygen -t rsa[[email protected] ~]# scp /root/.ssh/id_rsa.pub [email protected]:/root/

    b、KVM-2上操作

[[email protected] ~]# ssh-keygen -t rsa[[email protected] ~]# scp /root/.ssh/id_rsa.pub [email protected]:/root/[[email protected] ~]# cat /root/id_rsa.pub >> /root/.ssh/authorized_keys

    c、KVM-1上操作

[[email protected] ~]# cat /root/id_rsa.pub >> /root/.ssh/authorized_keys

    d、相互测试登录情况

[[email protected] ~]# ssh 192.168.30.132[[email protected] ~]# ssh 192.168.30.131

  3、为了保证实验的顺利进行,我们先把iptables关闭

[[email protected] ~]# service iptables stop[[email protected] ~]# service iptables stop

  4、执行迁移
    a、将Guest虚拟机从KVM-1上迁移至KVM-2上

[[email protected] ~]# virsh listId                 Name         State----------------------------------------------------11                 centos       running

[[email protected] ~]# virsh migrate centos --live qemu+ssh://192.168.30.132/system [[email protected] ~]# virsh listId                 Name         State----------------------------------------------------[[email protected] ~]#

    b、在KVM-2上查看

[[email protected] ~]# virsh listId                 Name         State----------------------------------------------------4                  centos       running

[[email protected] ~]#

七、总结

    关于KVM的动态迁移很多小伙伴儿们都没有提到需要做ssh免密码登录,在这里提醒大家一定要做哦,否则会出现错误的。
    虽然在安装过程中踩到了很多坑,但本人还是坚持走了过来;下面来分享下大家在搭建过程中可能会遇到的坑:

    1、迁移时遇到的错误描述:

[[email protected] ~]# virsh migrate centos --live qemu+ssh://192.168.30.132/systemerror: unable to connect to server at ‘KVM-2:49152‘: No route to host

    原因:你的免密登录没有成功
    解决方法:重新做免密登录即可

    2、迁移时的存储错误:

[[email protected] ~]# virsh migrate centos --live qemu+ssh://192.168.30.132/system error: Failed to open file ‘/mnt/CentOS6.8.qcow2‘: Input/output error

    原因:存储没有挂载成功

    解决方法:mount -o remount /dev/sdb /mnt

    3、迁移时FQDN错误:

[[email protected] ~]# virsh migrate centos --live qemu+ssh://192.168.30.132/system error: internal error hostname on destination resolved to localhost, but migration requires an FQDN

    原因:两台宿主机没有FQDN名称
    解决方法:重新配置FQDN,具体方法见上.

    4、迁移时语法错误:

[[email protected] ~]# virsh migrate centos --live qemu+ssh://192.168.30.132:/system
error: internal error Unable to parse URI qemu+ssh://192.168.30.132:/system

    原因:qemu+ssh语法写错了
    解决方法:正确的应该是:virsh migrate centos --live qemu+ssh://192.168.30.132/system

到此KVM的动态迁移就暂时到一个段落了,如果小伙伴儿们遇到问题可以直接回复或发邮件至:[email protected]

时间: 2024-08-07 08:36:30

CentOS6.5部署KVM及实现在线迁移的相关文章

如何使用一台PC搭建可以在线迁移的KVM学习环境

本文解答以下问题: 如何用一台PC单机KVM虚拟机的在线迁移实验环境? 如果对虚拟化是零知识,应该学习VMWare.XEN.HyperV还是KVM,或者是容器技术? 如何用一台PC搭建KVM虚拟机的在线迁移实验环境? 大家知道,如果要做虚拟机的在线迁移,需要至少2台宿主机,加至少一台共享存储,才能完成. 对于土豪来说,这个不是问题,但是对于屌丝来说,往往条件受限,只有一台PC,通常还是Windows系统,往往要做在线迁移这样的实验,就非常困难,其实这个问题是有办法解决的. 解决方法请看下表: 插

基于本地存储的kvm虚拟机在线迁移

基于本地存储的kvm虚拟机在线迁移 kvm虚拟机迁移分为4种(1)热迁移基于共享存储(2)热迁移基于本地存储(3)冷迁移基于共享存储(4)冷迁移基于本地存储 这里介绍的是热迁移基于本地存储 动态块迁移版本要求qemu版本要求  大于或等于0.12.1 rpm -qa|grep qemu qemu-kvm-0.12.1.2-2.491.el6_8.1.x86_64 qemu-kvm-tools-0.12.1.2-2.491.el6_8.1.x86_64 目标宿主机:10.11.30.52源宿主机:

kvm虚拟机在线迁移

本次实验环境示意图如下图图1所示: 图意解析: 三台VMware虚拟机Original.Destination和Nfsrv,把Original上的KVM虚拟机在线迁移到 Destination上 注:离线迁移本次实验不做演示,只演示基于NFS共享的在线迁移   一NFS服务端配置 1.设置共享目录 [[email protected] ~]# hostname Nfsrv.wjcyf.com [[email protected] ~]# cat /etc/exports /share 192.1

RedHat 7 KVM虚拟机在两台宿主机之间在线迁移

本文主要通过两台RedHat 7 KVM宿主机和NFS共享,将位于共享存储的虚拟机在两台宿主机之间进行在线迁移. 本文原始出处:江健龙的技术博客http://jiangjianlong.blog.51cto.com/3735273/1793913 环境介绍:  配置过程: 1.在rh7-02上配置NFS服务,共享/share目录出来 2.在两台宿主机的存储池都添加该NFS共享目录,下面以rh7-02添加存储池为例,点击左下角的+号添加一个存储池 3.输入存储池的名称为share,选择类型为net

玩转KVM:一招完成vm在线迁移

下篇预告: 玩转KVM:浅谈虚拟机lifecycle 前言 上篇一招打开vm的console口,让你轻轻松松管理vm.下面讲虚拟机是如何在kvm集群中来去自如. 为什么要迁移 迁移描述了将虚拟机从一台主机物理机移动到另一台主机的过程.虚拟机迁移可以分为:冷迁移(offline migration)和热迁移(live migration/online migration) 为什么要迁移呢? 1.负载平衡 - 当主机物理机器过载或其他主机物理机器未充分利用时,可将客户机虚拟机移动到主机物理机器,使用

部署kvm搭建虚拟化平台

部署 kvm的搭建虚拟化平台 前言:我们在以前学习过vsphere虚拟化平台,安装过esxi5.5,在esxi5.5上安装过虚拟机,使用vcenter管理esxi,从而实现了虚拟机的迁移,备份,高可用等操作,但是安装成本很高,需要购买正版.今天这一章内容是利用linux内核的一个模块kvm,并使用一些辅助工具来搭建虚拟机,完成和esxi类似的操作,实现linux虚拟化.KVM直接整合到了linux内核,因此在性能.安全性.兼容性.稳定性上都有好的表现.我们都知道,使用虚拟化技术可以为公司节约成本

Redis Cluster 4.0高可用集群安装、在线迁移操作记录

之前介绍了redis cluster的结构及高可用集群部署过程,今天这里简单说下redis集群的迁移.由于之前的redis cluster集群环境部署的服务器性能有限,需要迁移到高配置的服务器上.考虑到是线上生产环境,决定在线迁移,迁移过程,不中断服务.操作过程如下: 一.机器环境 1 2 3 4 5 6 7 8 9 10 11 12 13 迁移前机器环境 ----------------------------------------------------------------------

部署KVM虚拟化平台

防伪码:一场秋雨一场寒,十场秋雨穿上棉. 第四章 部署KVM虚拟化平台 前言:我们在以前学习过vsphere虚拟化平台,安装过esxi5.5,在esxi5.5上安装过虚拟机,使用vcenter管理esxi,从而实现了虚拟机的迁移,备份,高可用等操作,但是安装成本很高,需要购买正版.今天这一章内容是利用linux内核的一个模块kvm,并使用一些辅助工具来搭建虚拟机,完成和esxi类似的操作,实现linux虚拟化.KVM直接整合到了linux内核,因此在性能.安全性.兼容性.稳定性上都有好的表现.我

centos6.3 搭建KVM虚拟机

突然接到老总需求,需要在现有机房的服务器上边部署KVM,让内网测试机到达外网去测试.说实话有些头疼,因为我们的硬件资源实在是太缺了(小公司...),只有100G的剩余空间,让我在上边跑俩台虚拟机,还得应付时刻增涨的数据,这无疑让我很无语...hadoop可是在这台服务器的...所以,同学们懂了吧,那数据量,每天哗哗滴啊...废话少说,开始搭建~ 一.服务器硬件环境 服务器型号 DELL R710 CPU型号 Intel(R) Xeon(R) CPU  [email protected]*2 物理