xen虚拟机实时迁移

前言:

 xen虚拟机提供了一种类似于heartbeat高可用方案,在保证也不中断的业务情况下实现虚拟机迁移技术。在保证虚拟机上的服务正常的情况下将运行中的Domain迁移到其他机器上,实现xen虚拟机的高可用。

一、实验准备:

 (1)各个测试机之间时间要同步

 (2)node3提供iscsi网络共享存储

 (4)node4与node5做为xen虚拟机

 (5)本人使用的都是CentOS6.6操作系统

 (6)关闭所有节点的iptables和SELinux

二、安装xen虚拟机:

(1)准备yum源,若在物理机安装xen直接使用http://mirrors.aliyun.com/centos/6/xen4/x86_64/这个地址作为yum源即可,本次做实验使用的是虚拟机,所以使用的是软件是有马哥提供;软件包太多这里就不在上传了;安装过程如下

node4节点和node5节点安装方式一样:

 yum -y localinstall xen-4.2.2-22.el6.centos.alt.x86_64.rpm   xen-libs-4.2.2-22.el6.centos.alt.x86_64.rpm  xen-licenses-4.2.2-22.el6.centos.alt.x86_64.rpm   xen-runtime-4.2.2-22.el6.centos.alt.x86_64.rpm  xen-hypervisor-4.2.2-22.el6.centos.alt.x86_64.rpm   kernel-xen-3.7.4-1.el6xen.x86_64.rpm  kernel-xen-firmware-3.7.4-1.el6xen.x86_64.rpm kernel-xen-release-6-4.noarch.rpm

(2)编辑grub.conf配置文件,修改内容如下:node4节点与node5节点修改一样

[root@node4 ~]# vim /boot/grub/grub.conf 
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS (3.7.4-1.el6xen.x86_64)
        root (hd0,0)
        kernel /xen.gz dom0_mem=1025M,max:1024M dom0_max_vcpus=1 dom0_vpus_pin cpufreq=xen
             \\此处更改内核为xen.gz,同时向xen内核传递相关参数
        module /vmlinuz-3.7.4-1.el6xen.x86_64 ro root=/dev/mapper/vg_node4-lv_root rd_NO_LUKS.UTF-8 rd_NO_MD rd_LVM_LV=vg_node4/lv_swap SYSFONT=latarcyrheb-sun16 crashkernel=auto rd_LVM_LV=vg_node4/lv_root  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet
        module /initramfs-3.7.4-1.el6xen.x86_64.img
title CentOS 6 (2.6.32-504.el6.x86_64)\\将原有的内核信息和ramfs都更改为模块方式
        root (hd0,0)
        kernel /vmlinuz-2.6.32-504.el6.x86_64 ro root=/dev/mapper/vg_node4-lv_root rd_NO_LUKS.UTF-8 rd_NO_MD rd_LVM_LV=vg_node4/lv_swap SYSFONT=latarcyrheb-sun16 crashkernel=auto rd_LVM_LV=vg_node4/lv_root  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet
        initrd /initramfs-2.6.32-504.el6.x86_64.img

(3)重启主机:

[root@node4 ~]# reboot
[root@node5 ~]# reboot

(4)查看xen是否安装成功

[root@node4 ~]# uname -r;ssh node5 'uname -r'
3.7.4-1.el6xen.x86_64
3.7.4-1.el6xen.x86_64
[root@node4 ~]# service xend status;ssh node5 'service xend status'
xend (pid  3042) is running...
                                                           [  OK  ]
xend (pid  3537) is running...
[  OK  ]

三、安装配置iscsi

(1)准备一块没有格式化的磁盘

(2)安装scsi-target-utils

[root@node3 ~]# yum -y install scsi-target-utils

(3)编辑scsi配置文件,添加以下信息

[root@node3 ~]# vim /etc/tgt/targets.conf 
<target iqn.2015-08.com.linux:xen.t1>
        direct-store /dev/sdb
        initiator-address 172.16.2.0/24
</target>

(4)启动scsi服务,查看scsi信息:

[root@node3 ~]#/etc/init.d/tgtd start
[root@node3 ~]# tgtadm --lld iscsi --mode target --op show
Target 1: iqn.2015-08.com.linux:xen.t1
    System information:
        Driver: iscsi
        State: ready
    I_T nexus information:
    LUN information:
        LUN: 0
            Type: controller
            SCSI ID: IET     00010000
            SCSI SN: beaf10
            Size: 0 MB, Block size: 1
            Online: Yes
            Removable media: No
            Prevent removal: No
            Readonly: No
            Backing store type: null
            Backing store path: None
            Backing store flags: 
        LUN: 1
            Type: disk
            SCSI ID: IET     00010001
            SCSI SN: beaf11
            Size: 21468 MB, Block size: 512
            Online: Yes
            Removable media: No
            Prevent removal: No
            Readonly: No
            Backing store type: rdwr
            Backing store path: /dev/sdb1
            Backing store flags: 
    Account information:
    ACL information:
        172.16.2.0/24

(5)配置iscsi端;node4节点与node5节点操作相同

[root@node4 ~]# yum -y install iscsi-initiator-utils

(6)在node4节点发现并格式化此设备块

[root@node4 ~]# iscsiadm -m discovery -t st -p 172.16.2.14:3260 -l \\发现iscsi设备并登陆,node5节点步骤相同
172.16.2.14:3260,1 iqn.2015-08.com.linux:xen.t1
Logging in to [iface: default, target: iqn.2015-08.com.linux:xen.t1, portal: 172.16.2.14,3260] (multiple)
Login to [iface: default, target: iqn.2015-08.com.linux:xen.t1, portal: 172.16.2.14,3260] successful.
[root@node4 ~]# mke2fs -t ext4 /dev/sdb \\格式化iscsi提供的块设备,node5节点不需要操作
[root@node4 ~]# mkdir -pv /xen/image 创建挂载点
[root@node4 ~]# mount /dev/sdb /xen/image \\将iscsi设备挂载到刚刚创建的目录,node5节点同样需要此目录

四、利用busybox制作一个linux系统

(1)创建磁盘镜像

[root@node4 ~]# cd /xen/image/
[root@node4 image]# qemu-img-xen create -f qcow2  -o preallocation=metadata  busybox.img 100G
Formatting 'busybox', fmt=qcow2 size=107374182400 encryption=off cluster_size=65536 preallocation='metadata'

(2)格式化磁盘镜像

[root@node4 image]# mke2fs -t ext4 busybox   \\格式化磁盘镜像设备
[root@node4 ~]# mount -o loop  /xen/image/busybox  /mnt  \\挂载镜像设

(3)编译安装busybox

[root@node4 ~]# yum install ncurses-devel glibc-static  \\安装依赖软件
[root@node4 ~]# yum -y groupinstall "Development Tools" "Server Paltfrom Development"  \\安装开发环境
[root@node4 ~]# tar xf busybox-1.22.1.tar.bz2
[root@node4 busybox-1.22.1]# make menuconfig
   Busybox Settings  --->   Build Options  --->   [*] Build BusyBox as a static binary (no shared libs)    
[root@node4 busybox-1.22.1]# make;make install
[root@node4 busybox-1.22.1]# cp -a _install/* /mnt

(4)创建系统启动时所需要的目录

[root@node4 mnt]# mkdir -pv  proc sys dev home root tmp usr lib/module mnt
[root@node4 mnt]# cp /lib/modules/3.7.4-1.el6xen.x86_64/kernel/drivers/net/xen-netfront.ko lib/module/
[root@node4 mnt]# sync

(5)卸载/mnt

[root@node4 ~]# umount /mnt

(6)配置桥设备;node5节点也安装此方法创建桥设备

[root@node4 ~]# cd /etc/sysconfig/network-scripts/
[root@node4 network-scripts]# cp ifcfg-eth0 ifcfg-br0
[root@node4 network-scripts]# vim ifcfg-br0
    DEVICE=br0
    TYPE=Bridge
    ONBOOT=yes
    NM_CONTROLLED=no
    BOOTPROTO=static
    IPADDR=172.16.2.15
    NETMASK=255.255.255.0
    GATEWAY=172.16.2.1
[root@node4 network-scripts]# vim ifcfg-eth0 
     DEVICE=eth0
    HWADDR=00:0C:29:10:84:38
    TYPE=Ethernet
    ONBOOT=yes
    NM_CONTROLLED=no
    BOOTPROTO=none
    BRIDGE=br0
[root@node4 ~]# service network restart
[root@node4 ~]# ifconfig 
br0       Link encap:Ethernet  HWaddr 00:0C:29:10:84:38  
          inet addr:172.16.2.15  Bcast:172.16.2.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fe10:8438/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:38 errors:0 dropped:0 overruns:0 frame:0
          TX packets:42 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:2844 (2.7 KiB)  TX bytes:4552 (4.4 KiB)

eth0      Link encap:Ethernet  HWaddr 00:0C:29:10:84:38  
          inet6 addr: fe80::20c:29ff:fe10:8438/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:167781 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1750795 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:151936658 (144.8 MiB)  TX bytes:2498647650 (2.3 GiB)

(7)编辑busybox的配置文件

[root@node4 ~]# vim /etc/xen/busybox 
kernel = "/boot/vmlinuz-2.6.32-504.el6.x86_64"
ramdisk = "/boot/initramfs-2.6.32-504.el6.x86_64.img"
name = "busybox"
vcpus = 2
memory = 512
disk = [ 'file:/xen/image/busybox.img,xvda,w', ]
root = "/dev/xvda ro"
extra = "selinux=0 init=/bin/sh"
vif = [ 'bridge=br0' ]
on_reboot = "destroy"
on_crash = "destroy"

(8)创建虚拟机:

[root@node4 xen]# xm create -c busybox
/bin/sh: can't access tty; job control turned off
/ # 
  \\这是最终结果,导出busybox小型linux制作完成
[root@node4 xen]# xm list  \\查看虚拟机列表
Name                                        ID   Mem VCPUs      State   Time(s)
Domain-0                                     0  1024     1     r-----    362.3
busybox                                      2   512     2     -b----     10.7

(9)停止busybox系统,将iscsi设备挂载到node5节点,复制busybox配置文件到node5节点,测试busybo是否能启动

[root@node4 ~]# xm destroy busybox  \\停止busybox系统
[root@node4 ~]# umount /xen/image/  \\卸载挂载点
[root@node5 ~]# mount /dev/sdb /xen/image \\node5节点挂载iscsi设备
[root@node4 ~]# scp /etc/xen/busybox  node5:/etc/xen/  \\复制node4节点的busybox配置文件到node5节点一份
[root@node5 ~]# xm create -c busybox  \\创建busybox虚拟机
dracut: Switching root
/bin/sh: can't access tty; job control turned off
/ #    \\node5节点创建busybox成功

五、对busybox小系统进行实施迁移

(1)在node4节点将iscsi设备挂载到/xen/image目录

[root@node4 ~]# mount /dev/sdb /xen/image/

(2)迁移busybox之前进行检查

[root@node4 ~]# xm list  \\确保node4节点没有运行bosybox
Name                                        ID   Mem VCPUs      State   Time(s)
Domain-0                                     0  1024     1     r-----    393.7
root@node5 ~]# xm list \\确保在迁移之前busybox运行在node5节点
Name                                        ID   Mem VCPUs      State   Time(s)
Domain-0                                     0  1024     1     r-----    286.1
busybox                                      2   512     2     -b----      3.5

(3)修改node4节点与node5节点的xen配置文件,开启以下选项

[root@node4 ~]# vim /etc/xen/xend-config.sxp 
(xend-relocation-server yes)
(xend-relocation-port 8002)
(xend-address '172.16.2.16')
(xend-relocation-hosts-allow '')
[root@node5 ~]# vim /etc/xen/xend-config.sxp 
(xend-relocation-server yes)
(xend-relocation-port 8002)
(xend-address '172.16.2.15')
(xend-relocation-hosts-allow '')
[root@node4 ~]# service xend restart;ssh node5 'service xend restart'
Stopping xend daemon:                                      [  OK  ]
Starting xend daemon:                                      [  OK  ]
Stopping xend daemon: [  OK  ]
Starting xend daemon: [  OK  ]

(3)将运行在node5节点的busybox小系统迁移到node4节点

[root@node5 ~]# xm migrate -l busybox 172.16.2.15   \\将busybox系统迁移到node4节点
[root@node4 ~]# xm list  \\在node4节点查看,busybox已经成功移植到node4节点
Name                                        ID   Mem VCPUs      State   Time(s)
Domain-0                                     0  1024     1     r-----    427.8
busybox                                      3   512     2     -b----      0.1
[root@node5 ~]# xm list  \\node5节点已经没由DomU在运行
Name                                        ID   Mem VCPUs      State   Time(s)
Domain-0                                     0  1024     1     r-----     64.7

至此实验完成,本人是刚刚学习xen技术,有不足之处请大家多多给宝贵的意见。O(∩_∩)O

原创文章,作者:马行空,如若转载,请注明出处:http://www.178linux.com/7330

(0)
马行空马行空
上一篇 2015-08-26
下一篇 2015-08-27

相关推荐

  • 推荐-BtrFS学习总结

    一、原理介绍1.可扩展性2.数据一致性的相关特性3.多设备管理及快照二、命令介绍与实战1.命令介绍2.命令实战1)环境准备,添加3块磁盘/dev/sd{b,c,d}如下:2)创建btrfs文件系统3)查看已创建的btrfs文件系统4)挂载btrfs文件系统,启用压缩功能5)在线调整文件系统大小6)往当前btrfs文件系统添加设备,以达到在线扩容扩容目的7)执…

    Linux干货 2016-06-03
  • 马哥教育21期网络班—第11周课程+练习—-成长进行时–不退步–上

    1、详细描述一次加密通讯的过程,结合图示最佳。 对称加密: 加密和解密使用同一个密钥; 缺点:如何通信方多的话,需要保存多组密钥 公钥加密:密钥是成对儿出现 公钥:公开给所有人;pubkey 私钥:自己留存,必须保证其私密性;secret key 特点:用公钥加密的数据,只能使用与之配对儿的私钥解密;反之亦然; 数字签名:主要在于让接收方确认发送方…

    Linux干货 2016-09-19
  • awk的进阶

    前言 awk的中有很多的控制语句,awk也支持if语句,while语句,for语句等等编程逻辑充的控制语句及数组、函数。 awk的进阶无非就是多练。 1.控制语句 (1)if-else语句 语句格式: if(condition) {statments}    if  (条件) 条件为真 执行{statments} 只有一个语句可…

    Linux干货 2016-06-26
  • LVM 2 介绍以及怎么使用?

    一、 LVM是什么? LVM利用Linux内核的device-mapper来实现存储系统的虚拟化(系统分区独立于底层硬件)。 通过LVM,你可以实现存储空间的抽象化并在上面建立虚拟分区(virtual partitions),可以更简便地扩大和缩小分区,可以增删分区时无需担心某个硬盘上没有足够的连续空间, without getting caught up …

    Linux干货 2017-01-06
  • Linux系统shell脚本

                                          &n…

    系统运维 2016-09-01
  • 脚本的进阶与一些基本脚本

    1,脚本中用于表示数字大小写和符号为: -gt(大于)-lt(小于)-ne(不等于)-eq(等于) 格式为 [[空格 ”符号”空格]] 2,测试文件类型的选项 -f(是否为普通文件)-l(是否为链接文件)-d(是否为目录)-e(单独测试文件是否存在) 3,if语句的格式:(其中path代表条件,elif链接多个条件,最后一个条件用else表示) if pat…

    Linux干货 2017-05-22

评论列表(6条)

  • stanley
    stanley 2015-08-27 09:28

    有序言,有准备,有开始,有结束,行云流水般,赞 :idea:

    • 马行空
      马行空 2015-08-27 09:44

      @stanley谢谢

  • zx5200
    zx5200 2015-08-28 14:49

    可以不可以添加此实验拓扑图,

    • 马行空
      马行空 2015-08-31 11:23

      @zx5200不要意思,现在已经添加不了实验拓扑图了,你加我qq(249502221),我发给你 :smile:

  • wwenyunkui
    wwenyunkui 2015-09-02 14:29

    node4的bridge设备,是做什么样的?

    • 马行空
      马行空 2015-09-05 13:45

      @wwenyunkuibridge是虚拟化网络,通过TUN或TAP模拟出真实网络中的二层或三层网络