Лабораторная работа 2. Установка клиентской ВМ и настройка динамической миграции
Запуск ВМ с использованием Ceph FS и Ceph RBD
Запуск файловой системы
На любом узле кластера необходимо выполнить следующие команды:
Чтобы запустить файловую систему ceph, нужно создать два пула: пул для данных и пул для метаданных:sudo ceph osd pool create cephfs_data 64 sudo ceph osd pool create cephfs_metadata 64Создадим файловую систему:sudo ceph fs new cephfs cephfs_metadata cephfs_dataС помощью данных команд можно просмотреть статус файловой системы:sudo ceph fs ls sudo ceph mds stat sudo ceph fs status cephfsСоздадим пользователя для подключения к файловой системе и запишем ключ пользователя в отдельный файл:sudo ceph fs authorize cephfs client.fsclient / rw -o /etc/ceph/ceph.client.fsclient.keyring sudo ceph auth get-or-create-key client.fsclient -o /etc/ceph/fsclient.secretНеобходимо скопировать файлы/etc/ceph/fsclient.secretи/etc/ceph/ceph.client.fsclient.keyringна остальные узлы.
Монтирование Ceph FS
-
На каждом узле кластера необходимо выполнить следующие команды:
sudo mkdir /mnt/cephfs sudo mount -t ceph fsclient@.cephfs=/ /mnt/cephfs -o secretfile=/etc/ceph/fsclient.secret -
Проверить статус монтирования:
df -hT
Запуск ВМ
-
Скачать образ cirros и скопировать его в
/mnt/cephfs/, где примонтирована Ceph FSwget http://download.cirros-cloud.net/0.5.1/cirros-0.5.1-x86_64-disk.img sudo cp cirros-0.5.1-x86_64-disk.img /mnt/cephfs/cirros.img -
Создать Ceph RBD как дополнительное хранилище для виртуальной машины:
sudo virsh vol-create-as libvirt-pool cirros-img --capacity 1G --format raw -
Создать ВМ:
sudo virt-install --name Test-VM --graphics none \ --vcpus 1 --memory 128 --disk "path=/mnt/cephfs/cirros.img" \ --disk "vol=libvirt-pool/cirros-img" --import --autostart -
Проверить работоспособность запущенной ВМ:
sudo virsh list --all sudo virsh console Test-VM
Настройка динамической миграции
Установка Pacemaker/Corosync
- На всех узлах нужно установить требуемые пакеты и запустить демон
pcsd:udo apt install pacemaker corosync pcs resource-agents udo systemctl enable --now pcsd ``
Запуск кластера
-
Задать пароль пользователя
haclusterна всех узлах (в примере используется парольpassword):sudo passwd hacluster -
Отредактировать раздел nodelist файла
/etc/corosync/corosync.conf(на одном из узлов):nodelist { node { name: ceph-01 nodeid: 1 ring0_addr: 172.17.5.237 } node { name: ceph-02 nodeid: 2 ring0_addr: 172.17.5.232 } node { name: ceph-03 nodeid: 3 ring0_addr: 172.17.5.251 } } -
С помощью pcs создать кластер (на одном из узлов):
sudo pcs host auth ceph-01 addr=172.17.5.237 \ ceph-02 addr=172.17.5.232 ceph-03 addr=172.17.5.251 \ -u hacluster -p password sudo pcs cluster setup newcluster ceph-01 ceph-02 ceph-03 --force sudo pcs cluster start --all -
Отключить fencing (в рамках работы он не рассматривается):
sudo pcs property set stonith-enabled=false -
Включить автозапуск сервисов на всех трех машинах:
sudo systemctl enable pacemaker corosync -
Просмотреть информацию о кластере и кворуме:
sudo pcs status sudo corosync-quorumtool
Создание ресурса
-
Создать дамп созданной ВМ и затем удалить её:
sudo virsh dumpxml Test-VM | tee vm_conf.xml sudo virsh undefine Test-VM sudo virsh destroy Test-VM -
Скопировать дамп с ceph-01 на ceph-02 и ceph-03:
scp vm_conf.xml ceph-02:~ scp vm_conf.xml ceph-03:~ -
На ceph-01, ceph-02 и ceph-03 переместить файл в /etc/pacemaker/
sudo mv vm_conf.xml /etc/pacemaker/ sudo chown hacluster:haclient /etc/pacemaker/vm_conf.xml -
Теперь добавить сам ресурс:
sudo pcs resource create test-vm VirtualDomain \ config="/etc/pacemaker/vm_conf.xml" \ migration_transport=tcp meta allow-migrate=true -
Просмотреть список добавленных ресурсов:
sudo pcs status sudo pcs resource config test-vm -
Проверить список виртуальных машин на узле, на котором запустился ресурс:
sudo virsh list --all -
Проверить, что ресурс успешно запустился.
Настройка миграции
Выполнить действия на всех узлах
-
Необходимо отредактировать файл
/etc/libvirt/libvirtd.conf:listen_tls = 0 listen_tcp = 1 auth_tcp = "none" -
Отредактировать файл
/etc/default/libvirtd:libvirtd_opts="--config /etc/libvirt/libvirtd.conf" -
Запустить сокет
libvirt-tcp:sudo systemctl stop libvirtd && sudo systemctl start libvirtd-tcp.socket
Миграция ресурса
-
Нужно переместить ресурс на
ceph-02:sudo pcs resource move test-vm ceph-02 -
На ceph-02 посмотреть статус кластера, и проверить список запущенных гостевых машин можно следующими командами:
sudo pcs status sudo virsh list --all -
Команда move добавляет ресурсу правило, заставляющее его запускаться только на указанном узле. Для того, чтобы очистить все добавленные ограничения - clear:
sudo pcs resource clear test-vm