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

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

我们有两个Debian Jessie服务器,我们将它们配置为Xen主机(域0)并通过DRBD实现实时迁移。
该项目的主要目标是测试Xen实时迁移。

Xen项目管理程序

在这里说“ Xen”时,我们指的是Xen Project Hypervisor,不要与Citrix的XenServer混淆。

Xen Project系统管理程序是一种开源的Type-1或者裸机系统管理程序。
在Xen Project系统管理程序上运行的来宾虚拟机称为“域”(domU),其中称为dom0(也称为域零)的特殊域负责控制系统管理程序并启动其他来宾操作系统。

Xen虚拟机管理程序支持两种主要的虚拟化类型:半虚拟化(PV)和硬件虚拟机(HVM),也称为“完全虚拟化”。

PV不需要主机CPU的虚拟化扩展。
准虚拟化的操作系统知道它们已经被虚拟化了,因此不需要虚拟的“硬件”设备,而是对虚拟机管理程序进行了特殊调用,使它们可以访问CPU,存储和网络资源。

相反,HVM需要Intel VT或者AMD-V硬件扩展。
无需修改HVM guest虚拟机,因为管理程序将为此计算机创建一组完全虚拟的硬件设备,类似于物理x86计算机。
这种仿真比半虚拟化方法需要更多的开销,但是允许未经修改的来宾操作系统(例如Microsoft Windows)在虚拟机管理程序之上运行。

Dom0安装和配置

我们将使用Debian Jessie作为我们的Domain 0系统。
我们已经准备好两个服务器,分别名为xen01和xen02.
服务器具有2个CPU内核和2GB的内存。

这两个服务器都有两个网络接口,用于DRBD通信的“ eth0”(172.16.20.24上的不可路由VLAN)和连接到LAN(10.8.8.0/24)的“ eth1”。

局域网上有一个DHCP/DNS服务器,它根据客户端的MAC地址发出静态DHCP租约。

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

[xen01]# hostnamectl set-hostname xen01.igi.local
[xen02]# hostnamectl set-hostname xen02.igi.local
[ALL]# cat /etc/debian_version
8.4

对于那些无法访问(备用)物理硬件来安装Xen的用户,可以将VirtualBox来宾用作dom0。

需要注意的一件事是VirtualBox无法将VT-x功能传递给来宾,这对于允许嵌套的HVM来宾来说是必需的。
因此,只能使用半虚拟化域,因为它们不需要主机CPU的虚拟化扩展。

Xen软件包

[ALL]# apt-get update
[ALL]# apt-get install xen-linux-system-amd64 bridge-utils

建议使用Grub来启动Xen:

[ALL]# dpkg-divert --divert /etc/grub.d/08_linux_xen --rename /etc/grub.d/20_linux_xen
[ALL]# update-grub

联网

在两个Xen节点上配置软件桥。
我们的“/etc/network/interfaces”内容可以在下面看到。
请注意用于DRBD的静态IP地址。

source /etc/network/interfaces.d/*
auto lo
iface lo inet loopback
# Leaving allow-hotplug causes the following:
# *** A start job is running for LSB: Raise network interfaces. (15min 10s/no limit)
#allow-hotplug eth1
iface eth1 inet manual
# The default bridge that the toolstack expects is called xenbr0
auto xenbr0
iface xenbr0 inet dhcp
   bridge_ports eth1
   # Other possibly useful options in a virtualised environment
   bridge_stp off       # disable Spanning Tree Protocol
   bridge_waitport 0    # no delay before a port becomes available
   bridge_fd 0          # no forwarding delay
# DRBD heartbeat vlan
auto eth0
iface eth0 inet static
  address 172.16.22.13 #.13 is xen01, .14 is xen02
  netmask 255.255.255.0

强制网络配置:

[ALL]# systemctl restart networking

配置Dom0内存和CPU

打开两个Xen节点,打开文件'/etc/default/grub'并配置以下内容:

GRUB_TIMEOUT=1
GRUB_DISABLE_LINUX_UUID=true
# Xen boot parameters for all Xen boots 
GRUB_CMDLINE_XEN="dom0_mem=1024M,max:1024M dom0_max_vcpus=1 dom0_vcpus_pin"

记住将更改应用于grub配置:

[ALL]# update-grub

访客行为在Dom0重新启动

默认情况下,当Xen dom0关闭或者重新启动时,它会尝试保存(读取休眠)domU的状态。
我们要确保它们正常关闭。

[ALL]# grep -ve "^#" -ve "^$" /etc/default/xendomains
XENDOMAINS_RESTORE=false
XENDOMAINS_SAVE=
XENDOMAINS_AUTO=/etc/xen/auto
XENDOMAINS_STOP_MAXWAIT=300

工具栈

Xl是Xen 4.1发行版中引入的,但是xend仍然是默认设置。
从Xen 4.2开始,xend/xm已弃用(并已在Xen Project 4.5中删除),并且默认情况下现在应使用xl。

[ALL]# grep -ve "^#" /etc/default/xen
TOOLSTACK=xl

完成配置dom0后,重新启动服务器:

[ALL]# systemctl reboot
[xen01]# xl info
host                   : xen01.igi.local
release                : 3.16.0-4-amd64
version                : #1 SMP Debian 3.16.7-ckt25-2 (2015-04-08)
machine                : x86_64
nr_cpus                : 2
max_cpu_id             : 1
nr_nodes               : 1
cores_per_socket       : 2
threads_per_core       : 1
cpu_mhz                : 2294
hw_caps                : 178bfbff:28100800:00000000:00003300:d6d82203:00000000:00000021:00002017
virt_caps              :
total_memory           : 2047
free_memory            : 998
sharing_freed_memory   : 0
sharing_used_memory    : 0
outstanding_claims     : 0
free_cpus              : 0
xen_major              : 4
xen_minor              : 4
xen_extra              : .1
xen_version            : 4.4.1
xen_caps               : xen-3.0-x86_64 xen-3.0-x86_32p
xen_scheduler          : credit
xen_pagesize           : 4096
platform_params        : virt_start=0xffff800000000000
xen_changeset          :
xen_commandline        : placeholder dom0_mem=1024M,max:1024M dom0_max_vcpus=1 dom0_vcpus_pin
cc_compiler            : gcc (Debian 4.9.2-10) 4.9.2
cc_compile_by          : jmm
cc_compile_domain      : debian.org
cc_compile_date        : Tue Mar 15 22:37:15 CET 2015
xend_config_format     : 4