Лабораторная работа 6. Основы виртуализации в Linux. Отказоустойчивый кластер на базе Corosync/Pacemaker.
Цель
Получить базовые навыки в работе с пакетом управления виртуализацией Libvirt.
Задачи
- Настроить nfs клиент.
- Установить и настроить Corosync/Pacemaker.
- Подготовить XML ВМ.
- Создать ресурс.
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. На всех узлах.
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
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
И добавить в него следующее содержимое:
TYPE=Bridge
DEVICE=br0
BOOTPROTO=dhcp
ONBOOT=yes
NAME=br0
А в файл /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
И изменить в разделе
<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.