我们有一个在 CentOS 5.2 64 位上使用 DRBD 8.2 的两节点集群。该集群在 Xen 3.2.1 之上运行了一些虚拟机,以下是 Ubuntu Jaunty 虚拟机的配置:
name = 'dev'
bootloader = '/usr/bin/pygrub'
memory = '512'
vif = [ 'ip=192.168.1.217,mac=00:16:3E:CD:60:80' ]
disk = [ 'phy:/dev/drbd24,xvda1,w',
'phy:/dev/drbd25,xvda2,w' ]
如您所见,磁盘被指定为“phy:”,因此pygrub对底层drbd设备一无所知......
所以我的问题是即使VM启动得很好,它也没有处理 drbd 设备的状态。结果,当设备由于某种原因进入辅助/辅助状态时,VM 将无法启动,我必须手动指定哪个节点是主节点。
我读到从 Xen 3.3 开始 pygrub 理解“drbd:”规范,我认为它可以解决我的问题,但我目前无法升级 Xen……有解决方法吗?例如,我可以使用 3.3 版本的 pygrub 吗?
谢谢!
为什么在启动 DomU 之前不确保您的 drbd 是主要的?
我猜你正在使用心跳作为集群软件?
所以 /etc/ha.d/resource.d/ 中应该有一个资源类型“drbddisk”
在您的 xen-resource 和启动工作之前使用该资源。
这就是我对 SLES 10 到 SP2 所做的事情(使用旧的 drbd 0.7)。随着切换到 SLES 10 SP3,我转向了我自己的 drbd 8.3.5 构建 - 我认为它包含与 xen 的集成,因此从那时起 drbd-disk-type 是可能的。
顺便说一句 - 你也不必使用 pygrub。我模拟了 SuSE 在 /boot 中进行通用链接的方式,方法是在我的 CentOS-DomU 中创建一个指向最新的 initrd/vmlinz 的符号链接,该链接具有通用名称。这可以通过传统方式在 Dom0-Config 中使用。
亲切的问候
尼尔斯
作为一种解决方法,我正在使用 drbd 指令
become-primary-on
。