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

6. Практика кластера

Задание 0. Построение стенда

Схема виртуального лабораторного стенда

Рисунок 1. Схема стенда

1. Создать виртуальную сеть:
  1. labnet
Название сети/подсетиСетевой адресmtu
labnet10.0.12.0/241481

При создании подсети необходимо выбрать пункт "Запретить шлюз"

2. Создать виртуальные машины для работы
Название виртуальной машиныИсточникТип инстансаСети для внешнего подключенияРазмер дискаРазмер доп дискаip в сети labnet
Labnode-1Образ-Ubuntu-server20.04smallexternal-net10GB7gb10.0.12.21
Labnode-2Образ-Ubuntu-server20.04smallexternal-net10GB-10.0.12.22
Labnode-3Образ-Ubuntu-server20.04smallexternal-net10GB-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 и сохранить с названием cirros.xml

Скопировать cirros.xml с labnode-1 на labnode-2 и labnode-3:

scp cirros.xml labnode-2:~
scp cirros.xml labnode-3:~

На labnode-1, labnode-2 и labnode-3 также переместить файл в /etc/pacemaker/

sudo mv cirros.xml /etc/pacemaker/
sudo chown hacluster:haclient /etc/pacemaker/cirros.xml

Теперь добавить сам ресурс:

sudo pcs resource create cirros VirtualDomain \
сonfig="/etc/pacemaker/cirros.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 cirros labnode-2

На labnode-2 посмотреть статус кластера, и проверить список запущенных гостевых машин можно следующими командами:

sudo pcs status
sudo virsh list --all

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

sudo pcs resource clear cirros

Необходимо дождаться загрузки VM. Переместить ресурс на labnode-1:

sudo pcs resource move cirros labnode-1

Посмотреть на результат:

sudo pcs status
sudo virsh list --all