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

Лабораторная работа 6. Основы виртуализации в Linux. Отказоустойчивый кластер на базе Corosync/Pacemaker.

Цель

Получить базовые навыки в работе с пакетом управления виртуализацией Libvirt.

Задачи

  1. Настроить nfs клиент.
  2. Установить и настроить Corosync/Pacemaker.
  3. Подготовить XML ВМ.
  4. Создать ресурс.

Note: Логин/пароль на всех узлах
Логин:
labuser
Пароль: labpass1!

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

Задание 1. Настройка nfs клиента

В проекте [GROUP]:[team]-lab:4-7, на labnode-1, labnode-2 и labnode-3 нужно зайти в файл /etc/fstab:

sudo vi /etc/fstab

И раскомментировать следующую строку (уберите символ # в начале строки):

10.0.12.18:/home/nfs/ /media/nfs_share/ nfs rw,sync,hard,intr 0 0

На всех трёх машинах установить пакет для работы с nfs и перемонтировать разделы, используя комманды:

sudo yum install -y nfs-utils
sudo mkdir /media/nfs_share
sudo mount -a

Задание 2. Установка Pacemaker и Corosync

Установка очень проста. На всех узлах нужно выполнить команду:

sudo yum install -y pacemaker corosync pcs resource-agents qemu-kvm libvirt virt-install

Далее поднять pcs. Тоже, на всех узлах:

sudo systemctl start pcsd
sudo systemctl enable pcsd

Открыть порты, необходимые для работы кластера (на всех узлах):

sudo firewall-cmd --permanent --add-port=5900-5930/tcp
sudo firewall-cmd --permanent --add-port=49152-49216/tcp
sudo firewall-cmd --permanent --add-service={high-availability,libvirt,libvirt-tls}
sudo firewall-cmd --reload

Для обращения к узлам по имени, а не по адресу удобнее прописать на всех узлах сопоставление 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. Открыть файл:

sudo vi /etc/sysconfig/network-scripts/ifcfg-br0

И добавить в него следующее содержимое для labnode-2:

TYPE=Bridge
DEVICE=br0
BOOTPROTO=static
ONBOOT=yes
IPADDR=10.0.12.22
PREFIX=24
GATEWAY=10.0.12.1

И добавить в него следующее содержимое для labnode-3:

TYPE=Bridge
DEVICE=br0
BOOTPROTO=static
ONBOOT=yes
IPADDR=10.0.12.23
PREFIX=24
GATEWAY=10.0.12.1

А в файл /etc/sysconfig/network-scripts/ifcfg-eth0 добавить параметр BRIDGE и убрать BOOTPROTO и ONBOOT:

DEVICE=eth0
#HWADDR=”оставить как было”
#ONBOOT=yes
TYPE=Ethernet
NAME=eth0
USERCTL=no
BRIDGE=br0

Перезагрузить сеть:

sudo systemctl restart network

Задание 4. Создание ресурса

Для начала, нужно отключить Selinux. Требуется зайти в файл /etc/selinux/config:

sudo vi /etc/selinux/config

И заменить значение параметра SELINUX с enforcing на permissive:

SELINUX = permissive

После чего перезагрузить ВМ:

sudo reboot

Сделать это нужно на labnode-1, labnode-2 и labnode-3.

В предыдущих заданиях был сделан дамп (копия) конфигурации виртуальной машины cirros на labnode-1.

ls -lah /home/labuser/cirros.xml

Необходимо зайти в него через vi:

sudo vi cirros.xml

И изменить в разделе путь до диска с /var/lib/libvirt/images/ на /media/nfs_share/, удалив одну строку, и заменив её другой.

<source file='/var/lib/libvirt/images/cirros.img'/> ### эту строчку необходимо удалить

<source file='/media/nfs_share/cirros.img'/>

Можно воспользоваться поиском по файлу, набрав /, а затем то, что необходимо найти. Искать нужно <disk. То есть, набрать /<disk. Скопировать 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

Проверить, что ресурс успешно запустился. Для этого из virt_viewer (Пользователь - Admin, пароль - labpass1!) подключиться к нему через программу Reminna. Подключаться по адресу spice://[address]:5900. [address] - это IP адрес узла, на котором находится ресурс. Узнать его можно, набрав в консоли соответствующего узла ip -c a.