Chinaunix首页 | 论坛 | 博客
  • 博客访问: 487848
  • 博文数量: 82
  • 博客积分: 3003
  • 博客等级: 中校
  • 技术积分: 1285
  • 用 户 组: 普通用户
  • 注册时间: 2007-09-11 15:27
文章分类

全部博文(82)

文章存档

2011年(1)

2010年(5)

2009年(63)

2008年(13)

我的朋友

分类: LINUX

2009-10-08 15:23:25

通过Multipath实现Xen虚拟机的动态迁移

环境:四台装有Red Hat Enterprise Linux 5 update 4的机器

 

Live Migration的用途:

负载均衡。

当一个PV出现故障,可以将应用和服务migrate到另一个PV上。

当应用不忙时,可以把应用和服务集中到某几个PV上,其他的PV就可以关掉了。

 

动态迁移的三条原则:

1. 同样的共享存储:即虚拟块设备必须对两个节点同时可见。

2. 同样的网络环境:两个节点必须有同样的链接地址。

3. 同样的CPU结构:两个节点必须有同样的CPU结构。


 

因为虚拟机的image文件是虚拟机的主体,数据会经常改变,所以应该将image文件放到Multipath服务器上。虚拟机的配置文件是不经常改变的,而且很小,所以可以放到两个客户端的/etc/xen目录下。而且要保证VBDs在某一个时刻只能被一个node使用。

 

需要一台安装树的服务器,这里的IP192.168.0.254,安装树HTTP根下的rhel54目录下。

需要一台Multipath服务器,和两个客户端。

 

配置Multipath服务器:

两个网卡,这里配置成192.168.0.172192.168.0.173

dd一个6G大的文件test.img,作为target device

接下来是将test.img配置成target device

# service tgtd start

# tgtadm --lld=iscsi --op=new --mode=target --tid=48 --targetname=jaylin.server

# tgtadm --lld=iscsi --op=new --mode=logicalunit --tid=48 --lun=1 --backing-store =/iscsidata/test.img 

# tgtadm --lld=iscsi --op=bind --mode=target --tid=48 --initiator-address=ALL

# tgtadm --lld=iscsi --op=show --mode=target

这样服务器端的配置就完成了。

 

客户端配置

在两个客户端分别指定一个服务器的网卡和服务器建立一条Multipath的路径。

在其中一台客户端上的配置命令:

# service iscsid start

# iscsiadm --mode=discovery --type=sendtargets --portal=192.168.0.172

# iscsiadm --mode=node --targetname=jaylin.server --portal=192.168.0.172:3260 --login

另一个台的和上面的相似,只是将IP改为服务器的另一个网卡的IP地址192.168.0.173

现在两台客户端都多了一个设备sdb(如果之前只有一个磁盘的话),将虚拟机建到这个设备上。

为了让两台客户端可以互相Live Migration,需要在两台客户端上对/etc/xen/xend.config.sxp文件进行配置:

(xend-relocation-server yes) 

//默认的是注释掉的,而且为no
(xend-relocation-address '')
  //默认的是注释掉的。

(xend-relocation-hosts-allow '')
 //默认是注释掉的。

#(xend-relocation-hosts-allow '^localhost$ ^localhost\\.localdomain$')
 //默认是不注释的。

保存后重新启动xend服务。

至此,客户端的配置也完成了。

 

测试

在其中的一台客户端(记作客户端A)上创建虚拟机test_pv

# virt-install -p -n test_pv -r 256 -f /dev/sdb -f 

执行完上面的命令,在客户端A上就开始安装虚拟机了。

将客户端A192.168.0.191)上的虚拟机的配置文件传给客户端B192.168.0.190):

# scp /etc/xen/test_lv 192.168.0.190:/etc/xen

然后将正在客户端A上创建的虚拟机动态迁移到客户端B上:

# xm migrate test_lv 192.168.0.190

这时客户端A上正在创建的虚拟机就不存在了,同时客户端B上出现了一个正在创建的虚拟机,而且这个虚拟机的安装进度和刚才客户端A上的那个虚拟机的安装进度是一致的。

 

阅读(1151) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~