我正在用gluster分布式存储来探索KVM_qemu。 我的目标是build立一个完整的HAtesting集群。 即HA的虚拟机以及gluster存储。 我打算设置一个3节点gluster集群,并使用libgfapi而不是旧的FUSE方法的qemu gluster驱动程序。但是,然后我注意到在vm xml文件或qemu映像创build命令我们只能指定一个gluster服务器的IP! 那么如果那台服务器出现故障,存储将不可用? 那么在使用qemu libgfapi方法时应该怎样提供HA呢? 用keeplived分配虚拟浮动IP到gluster服务器?
请咨询..谢谢
<driver name='qemu' type='qcow2' cache='none'/> <source protocol='gluster' name='kvm/test.img'> <host name='192.168.60.11' port='24007'/> <host name='192.168.60.12' port='24007'/> <host name='192.168.60.13' port='24007'/> </source> <target dev='vda' bus='virtio'/> </disk>
您可以在kvm节点中安装gluster,并使gluster对等探测器kvm主机。 这个kvm主机成为集群成员后,xml config
<driver name='qemu' type='qcow2' cache='none'/> <source protocol='gluster' name='kvm/test.img'> <host name='127.0.0.1' port='24007'/> </source> <target dev='vda' bus='virtio'/> </disk>
这似乎不像一开始似的。
首先,在客户端挂载期间(无论是使用FUSE还是libgfapi)指定一个Gluster主机IP,您只能用于对等探测。 探测完成后,libfgapi会处理探测到的所有探测对象之间的通信。
直到你明确IP探测的主机出现故障,这一切都很好。 有几件事你可以做,以防止发生这种情况。 Keepalived或ctdb可以提供浮动IP,您只能用于客户端到服务器的探测。 或者,DNS循环将用名称完成此操作。
这个名称或浮动IP不会用于实际发送数据到Gluster卷,但只会确保即使在恶化的环境中也能始终发生探测。
使用libvirt,结果如下所示:
<driver name='qemu' type='qcow2' cache='none'/> <source protocol='gluster' name='kvm/test.img'> <host name='gluster-probe' port='24007'/> </source> <target dev='vda' bus='virtio'/> </disk>
在这种情况下,我已经在libvirt之外实现了一个DNS循环,所以我可以确定这个名字总是会被parsing到gluster对等池中的主机上,前提是至less有一个启动了。 当它联系一个,它得到完整的列表,通过IP连接到该列表中的主机,然后愉快地移动。