Chinaunix首页 | 论坛 | 博客
  • 博客访问: 137881
  • 博文数量: 38
  • 博客积分: 2010
  • 博客等级: 大尉
  • 技术积分: 460
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-24 15:48
文章分类

全部博文(38)

文章存档

2011年(1)

2009年(11)

2008年(26)

我的朋友

分类: 服务器与存储

2008-09-25 05:13:07

翻译:K.L
七、迁移
有两种方法可以把一个域从一台服务器迁移到另一台服务器上:
1、保存一份域的拷贝并在不同的服务器上还原这个域
2、在一个域运行过程中迁移,使用最小的服务中断时间(在线迁移)
迁移需求
下面是迁移建立和网络的需求:
* 源主机和目标主机都必须运行Xen和xend daemon
* 目标主机必须有足够的空间、内存和资源用于运行迁移后的域
* 源主机和目标主机必须有相同的架构和虚拟扩展,比如,如果源主机运行在X86-64扩展架构,那么也就必须确定目标主机也相同。这是在内核和用户库指引集下使你不会出现运行错误的规定。
* 源主机和目标主机必须在相同的2层子网网络内。如果在一个不同的子网,当一个域迁移后,此迁移将不完全成功,因为MAC和IP地址也是一起迁移的。
* 迁移处理会导致xend daemon停止源主机上运行的域,复制域到目标主机,然后重新启动域。xend daemon默认接受本地的迁移请求。要允许一个远程主机的迁移请求,必须修改目标主机/etc/xend-config.sxp上的xen-relocation-hosts-allow参数,由于没有提供验证,所以为了安全你系严格限制允许迁移的主机。
* 如果有运行防火墙,必须创建明确的iptables规则允许接入的迁移连接
* 典型的迁移一般会出现大概60-300ms的中断
* 已存在的控制台连接不会跟随迁移连到目标主机,必须在新的目标主机上重新连接该域的控制台
保存和还原一个域
运行中的域的当前状态保存在磁盘上的一个文件中,Xend使用这个文件来还原域的状态,这类似于笔记本电脑的休眠功能的概念。
Time for Action—Migrate Domains on your Xen Server
我们将创建一个Debian域并保存它的状态到一个将用于还原域的文件里
1、创建Debian客户域
xm create debian_etch_domU.cfg –c
2、检查并确定域已经启动并正常运行后,保存域的当前状态到/xen-saved-images或其他自选目录;
xm save 1 /xen-saved-images/etch.save
3、保存的域将会从当前运行域列表里面删除,可以用xm命令打印当前域信息来检查。
4、从文件还原已保存的域
xm restore /xen-saved-images/etch.save
5、重新运行xm命令,我们将看到还原的域重新回到当前运行域列表
下面一些东西是在使用保存和还原功能的时候必须记住的:
* 还原后的域的ID将于该域在保存前的ID不一样
* 域将被还原到它保存之前的状态,但是你不会自动连接到与的控制台
* 这是迁移域的一个简单容易的方法,但是必须注意这个域在保存的时候已经从激活的域里面移除,运行在域里面的服务已经不再存在或可访问。
在线迁移
Time for Action—Relocation of an Active Running domain
我们将要用于在线迁移的服务配置如下:
* palantir:使用一个NFS输出目录运行一个Ubuntu Feisty客户域的Xen主机
* boromir:从palantir服务器迁移的Ubuntu Feisty客户域的目标Xen主机
* frodo:Linux NFS服务器,通过网络为xen域提供存储
 
1、在线迁移需要共享的存储,实际的最小网络需求为100MB网络,其他迁移想关联的需求在之前已经提过。我们先在第一个Xen主机建立一个NFS服务用于共享存储,我们要迁移的域就运行在NFS服务的共享存储空间里。
2、编译/etc/exports并加入下面的行来导出存储目录:
/xen-storage *(r,sync,no_root_squash)
3、保存文件并重启NFS服务,在服务器上添加NFS服务到系统服务并配置他在重启后启动。
service nfs startchkconfig nfs on
4、配置两台Xen服务器使它们能使用NFS服务输出作为存储,在两台Xen服务器上添加挂载点来挂载输出目录:
mount palantir:/xen-storage
mount boromir:/xen-storage
5、修改xend配置文件允许在线迁移,修改/etc/xen/xend-config.sxp文件并确认下面的两行不被注释:
(xend-relocation-port 8002)
(xend-relocation-address '')
这就允许了xen daemon监听和响应在线迁移的请求
6、根据之前章节的步骤使xen于运行在一个NFS服务存储上,启动palantir上的客户域,使用下面的客户域配置:
 cat > /root/xen-images/ubuntu_feisty_nfs_domU.cfg <<   "EOF"
 kernel = "/boot/vmlinuz-2.6.16.38-xenU"
 memory = 256
 name = "ubuntu_feisty_nfs_domU"
 vif = [ 'ip=192.168.1.111' ]
 nfs_server = '192.168.1.67'
 nfs_root   = '/xen-storage'
 root       = '/dev/nfs'
 EOF
7、现在palantir上已经运行着一个使用NFS输出目录作为存储的客户域,我们将在线迁移这个域到boromir服务器,在完成之前将会花几分钟的时间,如果迁移没有成功完成,一个指示错误的信息会被显示在控制台。
xm migrate --live ubuntu_feisty_nfs_domU boromir
8、这就是迁移一个在线运行的域到另一个xen服务器的全部,如果你使用xm命令在palantir和boromir服务器上列出正在运行的域,你会发现迁移的域出现在boromir服务器同时不再显示在palantir服务器的运行域列表中。
配置的一些参数说明:
xend-relocation-server:允许/禁止本机接受远程的迁移请求,在迁移过程中,域虚拟内存是在无加密状态下以raw格式进行交换的,所有在一个不可信网络里面允许此项的时候要格外注意。
xend-relocation-port:xend daemon用于重新安置的端口,缺省值是8002
xend-relocation-address:限制域的迁移到一个指定接口的标识,指定的地址用于监听接入的重新安置套接,此标识只有在允许了xend-relocation-server参数的时候有效
xend-relocation-hosts-allow:定义允许与本机的重新安置接口通信的主机的标识。值是用空格分开的一串正则表达式,如果此值为空,那么所有的接入连接都被允许,这个值可以匹配一个IP地址或一个完整的域名。
从palantir到boromir的迁移可以分成一系列的步骤:
1、预迁移:Feisty域在palantir运行,它是一个激活的域
2、预定(Reservation):一个迁移请求分发palantir,用于检查并确认boromir上有足够的资源,然后xend预定一个请求的大小的VM容器,如果在boromir上xend不能获取所需的资源,接下来将什么都不会发生。域将在palantir上不进行任何改变得运行,重新安置被取消。
3、反复预拷贝:内存分页从palantir到boromir传输所有的页然后只传输在初始传输后有改变的页
4、停止然后拷贝:palantir上运行的与被挂起同时所有的网络传输重定向到doromir,在此阶段的最后,在boromir上额外会有一个挂起的拷贝到palantir上挂起的域,因在此时palantir上挂起的域仍然是主拷贝,万一此阶段有任何失败,它在palantir上将会继续运行。
5、通信:在此阶段如果没有任何的错误或失败,roromir将发生一个指示到palantir表明它已经有了一个与palantir相同的域的镜像,palantir将从它的xen服务里面抛弃这个域,从现在起,boromir变成了这个域的主要主机。
6、激活:已迁移的域在boromir上被激活,在域里面的所有设备驱动现在重新连接到新的机器。
阅读(1255) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~