6. Практика кластера
Задание 0. Построение стенда
Схема виртуального лабораторного стенда
Рисунок 1. Схема стенда
1. Создать виртуальную сеть:
- labnet
Название сети/подсети | Сетевой адрес | mtu |
---|---|---|
labnet | 10.0.12.0/24 | 1481 |
При создании подсети необходимо выбрать пункт "Запретить шлюз"
2. Создать виртуальные машины для работы
Название виртуальной машины | Источник | Тип инстанса | Сети для внешнего подключения | Размер диска | Размер доп диска | ip в сети labnet |
---|---|---|---|---|---|---|
Labnode-1 | Образ-Ubuntu-server20.04 | small | external-net | 10.0.12.21 | ||
Labnode-2 | Образ-Ubuntu-server20.04 | small | external-net | - | 10.0.12.22 | |
Labnode-3 | Образ-Ubuntu-server20.04 | small | external-net | - | 10.0.12.23 |
Задание 1. Настройка NFS
На labnode-1 необходимо настроить NFS сервер и использовать его на всех vm с точкой монтирования /media/nfs_share/
Задание 2. Установка Pacemaker и Corosync
Установка очень проста. На всех узлах нужно выполнить команду:
sudo apt install -y pacemaker corosync pcs resource-agents qemu-kvm qemu-system qemu-utils
Далее поднять pcs. Тоже, на всех узлах:
sudo systemctl start pcsd
sudo systemctl enable pcsd
Для обращения к узлам по имени, а не по адресу удобнее прописать на всех узлах сопоставление ip адреса и его имени. В таком случае, для сетевого взаимодействия между узлами можно будет обращаться по его имени. Для того чтобы прописать это соответствие, необходимо открыть файл /etc/hosts:
sudo vi /etc/hosts
Прописать в нем следующее:
10.0.12.21 labnode-1 labnode-1.novalocal
10.0.12.22 labnode-2 labnode-2.novalocal
10.0.12.23 labnode-3 labnode-3.novalocal
Задайте пользователю hacluster пароль на всех узлах(сам пользователь был автоматически создан в процессе установки pacemaker).
echo password | sudo passwd --stdin hacluster
И, с помощью pcs создать кластер (на одном из узлов):
sudo pcs cluster auth labnode-1 labnode-2 labnode-3 -u hacluster -p password --force
sudo pcs cluster setup --force --name labcluster labnode-1 labnode-2 labnode-3
sudo pcs cluster start --all
Отключить fencing (в рамках работы он не рассматривается)
sudo pcs property set stonith-enabled=false
Включить автозапуск сервисов на всех трех машинах:
sudo systemctl enable pacemaker corosync --now
sudo systemctl status pacemaker corosync
Просмотреть информацию о кластере и кворуме:
sudo pcs status
sudo corosync-quorumtool
Задание 3. Настройка моста.
На labnode-1, labnode-2 и labnode-3. Необходимо создать bridge интерфейсы c названием br0
Задание 4. Создание ресурса
Необходимо создать VM на labnode-1 и разместить ее на общем nfs хранилишще.
Для создания VM, необходимо использовать образ ubuntu22.04 Его можно получить с s3
curl -L https://s3.resds.ru/itt/ubuntu22.04.iso -o /tmp/ubuntu22.04.iso
После этого сделать дамп конфигурации VM и сохранить с названием cirros.ubuntu.xml
Скопировать cirros.ubuntu.xml с labnode-1 на labnode-2 и labnode-3:
scp cirros.ubuntu.xml labnode-2:~
scp cirros.ubuntu.xml labnode-3:~
На labnode-1, labnode-2 и labnode-3 также переместить файл в /etc/pacemaker/
sudo mv cirros.ubuntu.xml /etc/pacemaker/
sudo chown hacluster:haclient /etc/pacemaker/cirros.ubuntu.xml
Теперь добавить сам ресурс:
sudo pcs resource create cirrosubuntu VirtualDomain \
сonfig="/etc/pacemaker/cirros.ubuntu.xml" \
migration_transport=tcp meta allow-migrate=true
Просмотреть список добавленных ресурсов
sudo pcs status
sudo pcs resource show cirros
Проверить список виртуальных машин на узле, на котором запустился ресурс:
sudo virsh list --all
Задание 5. Настройка динамической миграции
Необходимо перейти в файл /etc/libvirt/libvirtd.conf
sudo vi /etc/libvirt/libvirtd.conf
Добавить туда три параметра:
listen_tls = 0
listen_tcp = 1
auth_tcp = "none"
Сохранить файл. После этого необходимо изменить файл /etc/default/libvirtd
sudo vi /etc/default/libvirtd
Добавить параметр:
LIBVIRTD_ARGS="--listen --config /etc/libvirt/libvirtd.conf"
Перезагрузить libvirt.
sudo systemctl restart libvirtd
Проделать эти операции на всех узлах.
Задание 6. Миграция ресурса
Нужно переместить ресурс на labnode-2:
sudo pcs resource move cirrosubuntu labnode-2
На labnode-2 посмотреть статус кластера, и проверить список запущенных гостевых машин можно следующими командами:
sudo pcs status
sudo virsh list --all
Команда move добавляет ресурсу правило, заставляющее его запускаться только на указанном узле. Для того, чтобы очистить все добавленные ограничения - clear:
sudo pcs resource clear cirrosubuntu
Необходимо дождаться загрузки VM. Переместить ресурс на labnode-1:
sudo pcs resource move cirrosubuntu labnode-1
Посмотреть на результат:
sudo pcs status
sudo virsh list --all