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.www58058.com/7330

(0)
馬行空馬行空
上一篇 2015-08-26 09:21
下一篇 2015-08-27 16:17

相關推薦

  • 馬哥教育網絡班19期第一周課程練習

    1、描述計算機的組成及其功能。 從大體上計算機是由cpu、內存、主板、I/O設備、存儲設備組成 cpu的功能就好像人的大腦,控制身體的。嚴格意義上是用來解釋計算機指令以及處理軟件中的數據的。 內存的功能就好像人的大腦記憶區、來存放眼睛看到的世界。嚴格意義上是用于暫時存放cpu中的運算數據,以及與硬盤等外部存儲器交換的數據 主板的功能就好像人的身體,來鏈接身體…

    Linux干貨 2016-06-18
  • 文本處理(1)

    文本處理工具最全整理上半部

    Linux干貨 2018-03-15
  • Linux命令總結

      1、登陸和開關機 ? ? ? 關機    halt    poweroff    init 0    重啟    reboot    init 6    shutdown    shutdown -r 重啟    shutodwn -h 關機    shutdown -c 取消計劃關機    shutdown +0 馬上關機    +1 一分鐘后關機  …

    2017-09-11
  • 設計模式 ( 十八 ) 策略模式Strategy(對象行為型)

    設計模式 ( 十八 ) 策略模式Strategy(對象行為型) 1.概述         在軟件開發中也常常遇到類似的情況,實現某一個功能有多種算法或者策略,我們可以根據環境或者條件的不同選擇不同的算法或者策略來完成該功能。如查找、排序等,一種常用的方法是硬編碼(Hard Coding)在一個類中,如需要提供多種查找算…

    Linux干貨 2015-07-28
  • MySQL復制詳解

    目錄:        1、簡介        2、原理        3、常見復制架構        4、一主一叢異步復…

    Linux干貨 2015-10-01
  • Linux的發展史

       在早期電氣化發展時代1946年誕生了計算機事物,早期的計算機體積巨大,只能適用于一個人操作,而且運行速度慢。但已經形成計算機的架構體系,為了盡可能的榨干計算機資源在計算機發展的二階段,于是有當時著名實驗室BELL ,GE,MIT共同研發了一款叫MULTCS操作系統,這也是最早的操作系統。   1946年一個沒有完成的夢想,…

    Linux干貨 2016-10-13

評論列表(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模擬出真實網絡中的二層或三層網絡

欧美性久久久久