Я изучал KVM_qemu с распределенным хранилищем gluster. Моей целью было построить тестовый кластер с полной HA. т.е. высокая доступность для виртуальных машин, а также блестящее хранилище. Я планирую установить 3-узловой кластер gluster и использовать драйвер qemu gluster с libgfapi вместо старого метода FUSE. Но затем я заметил, что в vm xml файле или команде создания образа qemu мы можем указать только один IP-адрес сервера gluster !! Итак, если этот сервер выйдет из строя, хранилище будет недоступно? Тогда каким должен быть подход для обеспечения высокой доступности при использовании метода qemu libgfapi? Назначение виртуального плавающего IP-адреса серверам gluster с сохранением состояния?
Пожалуйста, посоветуйте .. Спасибо
Это не так страшно, как может показаться на первый взгляд.
Прежде всего, когда вы указываете IP-адрес хоста Gluster во время монтирования клиента (с FUSE или libgfapi), вы используете его только для однорангового зондирования. Как только это зондирование завершено, libfgapi обрабатывает связь между всеми зондированными одноранговыми узлами по IP-адресам, которые они предоставляют при зондировании.
Это все замечательно, пока хост, который вы зондируете по явному 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>
В этом случае я реализовал циклический перебор DNS за пределами libvirt, чтобы быть уверенным, что это имя всегда разрешает хост в пуле одноранговых узлов gluster при условии, что хотя бы один активен. После того, как он связывается с одним, он получает полный список, подключается к хостам в этом списке через IP, а затем успешно перемещается.
<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>
Вы можете установить gluster в узел kvm и сделать узел узла kvm узла gluster peer. После этого 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>