前言:
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
有序言,有準備,有開始,有結束,行云流水般,贊 :idea:
@stanley:謝謝
可以不可以添加此實驗拓撲圖,
@zx5200:不要意思,現在已經添加不了實驗拓撲圖了,你加我qq(249502221),我發給你 :smile:
node4的bridge設備,是做什么樣的?
@wwenyunkui:bridge是虛擬化網絡,通過TUN或TAP模擬出真實網絡中的二層或三層網絡