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