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

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

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

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

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

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

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

2. Создать виртуальные машины для работы
Название виртуальной машины Источник Тип инстанса Сети для внешнего подключения Размер диска Размер доп диска ip в сети labnet
Labnode-1 Образ-Ubuntu-server20.04 small external-net 10GB 7gb 10.0.12.21
Labnode-2 Образ-Ubuntu-server20.04 small external-net 10GB - 10.0.12.22
Labnode-3 Образ-Ubuntu-server20.04 small external-net 10GB - 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