Лабораторная работа 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
