Перейти к основному контенту

Лабораторная работа 2. Установка клиентской ВМ и настройка динамической миграции на базе Corosync/Pacemaker

Запуск ВМ с использованием Ceph FS и Ceph RBD

Монтирование Ceph FS
  1. На каждом узле кластера необходимо выполнить следующие команды:

    sudo mkdir /mnt/cephfs
    sudo mount -t ceph fsclient@.cephfs=/ /mnt/cephfs -o secretfile=/etc/ceph/fsclient.secret
    
  2. Проверить статус монтирования:

    df -hT | grep ceph
    
Запуск ВМ
  1. Скачать образ cirros и скопировать его в /mnt/cephfs/, где примонтирована Ceph FS

    wget 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
    
  2. Создать Ceph RBD как дополнительное хранилище для виртуальной машины:

    sudo virsh vol-create-as libvirt-pool cirros-img --capacity 1G --format raw
    
  3. Создать ВМ:

    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
    
  4. Проверить работоспособность запущенной ВМ:

    sudo virsh list --all
    sudo virsh console Test-VM
    

Настройка динамической миграции

Установка Pacemaker/Corosync
  • На всех узлах нужно установить требуемые пакеты и запустить демон pcsd:
    udosudo apt install pacemaker corosync pcs resource-agents
    udosudo systemctl enable --now pcsd
    ``
    
Запуск кластера
  1. Задать пароль пользователя hacluster на всех узлах (в примере используется пароль password):

    sudo passwd hacluster
    
  2. Отредактировать раздел 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
        }
    }
    
  3. С помощью 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
    
  4. Отключить fencing (в рамках работы он не рассматривается):

    sudo pcs property set stonith-enabled=false
    
  5. Включить автозапуск сервисов на всех трех машинах:

    sudo systemctl enable pacemaker corosync
    
  6. Просмотреть информацию о кластере и кворуме:

    sudo pcs status
    sudo corosync-quorumtool
    
Создание ресурса
  1. Создать дамп созданной ВМ и затем удалить её:

    sudo virsh dumpxml Test-VM | tee vm_conf.xml
    sudo virsh undefine Test-VM
    sudo virsh destroy Test-VM
    
  2. Скопировать дамп с ceph-01 на ceph-02 и ceph-03:

    scp vm_conf.xml ceph-02:~
    scp vm_conf.xml ceph-03:~
    
  3. На ceph-01, ceph-02 и ceph-03 переместить файл в /etc/pacemaker/

    sudo mv vm_conf.xml /etc/pacemaker/
    sudo chown hacluster:haclient /etc/pacemaker/vm_conf.xml
    
  4. Теперь добавить сам ресурс:

    sudo pcs resource create test-vm VirtualDomain \
    config="/etc/pacemaker/vm_conf.xml" \
    migration_transport=tcp meta allow-migrate=true
    
  5. Просмотреть список добавленных ресурсов:

    sudo pcs status
    sudo pcs resource config test-vm
    
  6. Проверить список виртуальных машин на узле, на котором запустился ресурс:

    sudo virsh list --all
    
  7. Проверить, что ресурс успешно запустился.

Настройка миграции

Выполнить действия на всех узлах

  1. Необходимо отредактировать файл /etc/libvirt/libvirtd.conf:

    listen_tls = 0
    listen_tcp = 1
    auth_tcp = "none"
    
  2. Отредактировать файл /etc/default/libvirtd:

    libvirtd_opts="--config /etc/libvirt/libvirtd.conf"
    
  3. Запустить сокет libvirt-tcp:

    sudo systemctl stop libvirtd && sudo systemctl start libvirtd-tcp.socket
    
Миграция ресурса
  1. Нужно переместить ресурс на ceph-02:

    sudo pcs resource move test-vm ceph-02
    
  2. На ceph-02 посмотреть статус кластера, и проверить список запущенных гостевых машин можно следующими командами:

    sudo pcs status
    sudo virsh list --all
    
  3. Команда move добавляет ресурсу правило, заставляющее его запускаться только на указанном узле. Для того, чтобы очистить все добавленные ограничения - clear:

    sudo pcs resource clear test-vm