在Debian Jessie上使用DRBD进行Xen在线迁移

时间:2020-03-21 11:47:33  来源:igfitidea点击:

以下是3部分系列文章的第3部分,该系列文章介绍了使用DRBD进行Xen实时迁移的安装和配置。

本文介绍了DRBD资源的安装和配置。

本文遵循的约定是[ALL]表示需要在两个Xen节点上都运行的命令。

安装

[ALL]# apt-get install drbd8-utils

全局DRBD配置

打开“ /etc/modprobe.d/drbd.conf”进行编辑,并添加以下行:

options drbd disable_sendpage=1

如果不存在,请创建该文件。

我们的全局DRBD配置'/etc/drbd.d/global_common.conf'可以在下面看到。

global {
        usage-count no;
}
common {
        handlers {
                # split-brain "/usr/lib/drbd/notify-split-brain.sh root";
        }
        startup {
                wfc-timeout 30;
        }
        options {
		on-no-data-accessible io-error;
        }
        disk {
                on-io-error detach;
                resync-rate 10M; #100Mbps link
                #fencing resource-and-stonith;
        }
        net {
                protocol C;
                timeout 50; #5 seconds
                allow-two-primaries yes;
                cram-hmac-alg sha1;
                shared-secret XenNodes;
                after-sb-0pri discard-zero-changes;
                after-sb-1pri discard-secondary;
                after-sb-2pri disconnect;
                rr-conflict disconnect;
                ping-timeout 10; #1 second
                verify-alg sha1;
                csums-alg sha1;
        }
}

DRBD资源配置

我们将需要一个逻辑卷来存储DRBD元数据:

[ALL]# lvcreate --size 1g --name lv_meta vg_xen

在下面的'/etc/drbd.d/jessie01-disk.res'中,我们可以看到我们使用'/dev/vg_xen/lv_meta [0]'指定了带有meta-disk的行。
可以使用同一设备(逻辑卷)来存储多个DRBD资源的元数据,方法是在设备名称后添加[X]。

我们的DRBD资源'/etc/drbd.d/jessie01-disk.res'的配置如下所示。

resource jessie01-disk {
 meta-disk /dev/vg_xen/lv_meta[0];
 device /dev/drbd0;
 disk /dev/vg_xen/jessie01-disk;
 on xen01.igi.local {
  address  172.16.22.13:7789;
 }
 on xen02.igi.local {
  address  172.16.22.14:7789;
 }
}

另外,仅在xen02节点上,创建一个名为jessie01-disk的逻辑卷,并匹配xen01上的逻辑卷的大小(在本例中为4GB):

[xen02]# lvcreate --size 4g --name jessie01-disk vg_xen

创建设备元数据,启动设备并强制使其成为主节点:

[xen01]# drbdadm create-md jessie01-disk
[xen01]# drbdadm up jessie01-disk
[xen01]# drbdadm primary --force jessie01-disk
[xen01]# drbd-overview
 0:jessie01-disk/0  WFConnection Primary/Unknown UpToDate/Outdated

在第二个Xen节点上初始化并启动DRBD资源,然后等待直到同步:

[xen02]# drbdadm create-md jessie01-disk
[xen02]# drbdadm up jessie01-disk
[xen02]# watch drbd-overview
 0:jessie01-disk/0  SyncTarget Secondary/Primary Inconsistent/UpToDate
        [============>.......] sync'ed: 67.5% (1339308/4097084)K

同步完成后,将xen02 DRBD节点设置为主节点,以启用Xen实时迁移:

[xen02]# drbdadm primary jessie01-disk
[xen02]# drbd-overview
 0:jessie01-disk/0  Connected Primary/Primary UpToDate/UpToDate

Xen Live迁移

打开文件“ /etc/xen/jessie01.cfg”以在两个Xen节点上进行编辑,并替换以下行:

disk        = [
                  'phy:/dev/vg_xen/jessie01-disk,xvda1,w',
              ]

有了这个:

disk        = [
                  'drbd:jessie01-disk,xvda1,w',
              ]

启动虚拟访客:

[xen01]# xl create /etc/xen/jessie01.cfg
[xen01]# xl list
Name                                        ID   Mem VCPUs      State   Time(s)
Domain-0                                     0  1022     1     r-----     160.6
jessie01                                     1   256     1     -b----       2.9

连接到来宾的控制台以确保它已启动并正在运行。

[xen01]# xl console jessie01

将来宾VM从xen01迁移到xen02:

[xen01]# xl migrate jessie01 xen02
migration target: Ready to receive domain.
Saving to migration stream new xl format (info 0x0/0x0/706)
Loading new save file  (new xl fmt info 0x0/0x0/706)
 Savefile contains xl domain config
xc: progress: Reloading memory pages: 7168/131072    5%
xc: progress: Reloading memory pages: 13312/131072   10%
xc: progress: Reloading memory pages: 20480/131072   15%
xc: progress: Reloading memory pages: 26624/131072   20%
xc: progress: Reloading memory pages: 32768/131072   25%
xc: progress: Reloading memory pages: 39936/131072   30%
xc: progress: Reloading memory pages: 46080/131072   35%
xc: progress: Reloading memory pages: 53248/131072   40%
xc: progress: Reloading memory pages: 59392/131072   45%
xc: progress: Reloading memory pages: 65737/131072   50%
migration sender: Target has acknowledged transfer.
migration sender: Giving target permission to start.
migration target: Transfer complete, requesting permission to start domain.
migration target: Got permission, starting domain.
migration sender: Target reports successful startup.
migration target: Domain started successsfully.
Migration successful.
[xen02]# xl list
Name                                        ID   Mem VCPUs      State   Time(s)
Domain-0                                     0  1022     1     r-----     294.7
jessie01--incoming                           2   143     0     --p---       0.0
[xen02]# xl list
Name                                        ID   Mem VCPUs      State   Time(s)
Domain-0                                     0  1022     1     r-----     301.4
jessie01                                     2   256     1     -b----       1.6

请注意,迁移后xen01如何成为DRBD设备上的“辅助”对象。

[xen01]# drbd-overview
 0:jessie01-disk/0  Connected Secondary/Primary UpToDate/UpToDate

移回

[xen01]# drbdadm primary jessie01-disk
[xen01]# drbd-overview
 0:jessie01-disk/0  Connected Primary/Primary UpToDate/UpToDate
[xen02]# xen migrate jessie01 xen01
migration target: Ready to receive domain.
Saving to migration stream new xl format (info 0x0/0x0/706)
Loading new save file  (new xl fmt info 0x0/0x0/706)
 Savefile contains xl domain config
xc: progress: Reloading memory pages: 7168/131072    5%
xc: progress: Reloading memory pages: 13312/131072   10%
xc: progress: Reloading memory pages: 20480/131072   15%
xc: progress: Reloading memory pages: 26624/131072   20%
xc: progress: Reloading memory pages: 32768/131072   25%
xc: progress: Reloading memory pages: 39936/131072   30%
xc: progress: Reloading memory pages: 46080/131072   35%
xc: progress: Reloading memory pages: 53248/131072   40%
xc: progress: Reloading memory pages: 59392/131072   45%
xc: progress: Reloading memory pages: 65571/131072   50%
migration sender: Target has acknowledged transfer.
migration sender: Giving target permission to start.
migration target: Transfer complete, requesting permission to start domain.
migration target: Got permission, starting domain.
migration sender: Target reports successful startup.
migration target: Domain started successsfully.
Migration successful.
[xen01]# xl list
Name                                        ID   Mem VCPUs      State   Time(s)
Domain-0                                     0  1022     1     r-----     724.4
jessie01                                     6   256     1     -b----       1.7