Пост про установку системы виртуализации oVirt на CentOS 7.1.
Кратко о oVirt - это система управления виртуализацией основанная на KVM. Позволяет управлять виртуальными машинами через веб интерфейс используя библиотеку libvirt. Активно поддерживается компанией Red Hat. Аналог такой системы, всем известный vSphere от VMware.
Как и другие системы управления виртуализацией, эта система предлагает следующее:
- Живая миграция
- Балансировка нагрузки между гипервизорами
- Высокая доступность
- и т.д.
По права: В oVirt есть подробное разделение доступа для пользователей, плюс есть три разных веб портала, для разных видов доступа.
Для простых юзеров портал показывает только выделенные им виртуальные машины или пулы, и пользователь имеет всего три кнопки - включить, выключить и подключиться.
Для суперюзеров портал выглядит иначе, они могут создавать виртуальные машины и манипулировать ими, но не видят хостов, сетей и СХД. Все в пределах выделенных админами квот. Как раз получается self - сервис как в облаках.
Для админа портал намного серьезнее, с полным управлением всей системой.
Тестовая лаборатория в моем случае была построена на одном физическом компьютере с установленной на него ОС CentOS 7 x64 + гипервизор KVM. И далее после этого, на этом хосте были созданы 4-е гостевые системы:
1. oVirt Engine (аналог vCenter)
2. Гипервизор KVM №1
3. Гипервизор KVM №2.
4. СХД - NFS, iSCSI
Тестовое СХД можно сделать на физическом хосте, и пункт номер 4 - уже станет не нужен. А также не нужен отдельный хост для oVirt Engine, он умеет работать как ВМ, этот режим работы называется - Hosted Engine. Если у вас куча хостов гипервизоров, то желательно держать oVirt Engine на железном сервере отдельно, а если у вас мало хостов до 100, то не зачем тратить сервер, запускайте его как ВМ. Правда я его сделал отдельным, и это оказалось правильным решением - опытный специалист виртуализатор посоветовал в любом случае все равно ставить oVirt Engine отдельно на железный сервер.
При установке в режиме Hosted Engine (Engine внутри ВМ), главное чтобы (hosted) кластер состоял из нескольких нод (хостов с гипервизорами). Тогда они будут мониторить Engine и друг друга, при падении хоста с Engine, он перезапустится на другой ноде.
У вас есть компьютер с 8Гб ОЗУ? Тогда быстрым способом загрузить KVM будет в установке CentOS 7 на флешку или переносной жесткий диск. И далее загрузка ПК с этого носителя. Это был мой способ, желательно помимо флешки иметь SSD, где должны создаваться и работать ВМ, разумеется потребуется настроить TRIM.
Получится примерно вот такая схема работы:
На ОС где был запущен KVM были отключены selinux, iptables и networkmanager.
КРАТКОЕ СОДЕРЖАНИЕ
1. Настройка DNS сервера и общего хранилище NFS и iSCSI
2. Сколько серверов потребуется для oVirt
3. Установка репозитория oVirt на менеджере и гипервизорах
4. Установка oVirt
5. Подключение NFS и iSCSI стораджа
6. Настройка Power Managment - Fencing
7. Тестируем кластерные фичи
7.1. Живая миграция
7.2. High Availability
7.3. Балансировка нагрузки
8. Конвертирование физической машины в виртуальную
9. Резервное копирование
10. Ссылки
Начнем с поднятия DNS службы.
1. Настройка DNS сервера и общего хранилище NFS и iSCSI
Настройка DNS сервера - здесь настроим имена хостов, доменную часть берем свою, я взял asia.local.
По идее, надобность в настройке DNS сервера - маленькая. Дело в том, что для тестового запуска, хватит банального прописывания хостов в файле /etc/hosts
Устанавливаем Bind:
# yum install bind –y
Редактируем файл /etc/named.conf
# vi /etc/named.conf
//// named.conf//// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS// server as a caching only nameserver (as a localhost DNS resolver only).//// See /usr/share/doc/bind*/sample/ for example named configuration files.//options {
listen-on port 53 { 10.0.10.20; 127.0.0.1; };
listen-on-v6 port 53 { ::1; }; directory "/var/named"; dump-file "/var/named/data/cache_dump.db"; statistics-file "/var/named/data/named_stats.txt"; memstatistics-file "/var/named/data/named_mem_stats.txt";
allow-query { localhost; any; };
/* - If you are building an AUTHORITATIVE DNS server, do NOT enable recursion. - If you are building a RECURSIVE (caching) DNS server, you need to enable recursion. - If your recursive DNS server has a public IP address, you MUST enable access control to limit queries to your legitimate users. Failing to do so will cause your server to become part of large scale DNS amplification attacks. Implementing BCP38 within your network would greatly reduce such attack surface */
recursion yes; dnssec-enable no; dnssec-validation no;
/* Path to ISC DLV key */ bindkeys-file "/etc/named.iscdlv.key"; managed-keys-directory "/var/named/dynamic"; pid-file "/run/named/named.pid"; session-keyfile "/run/named/session.key";};
zone "asia.local" { type master; file "asia.local.fwd"; allow-update {none;}; allow-transfer {none;};};zone "10.0.10.in-addr.arpa" { type master; file "asia.local.rev"; allow-update {none;};
};logging { channel default_debug { file "data/named.run"; severity dynamic; };};zone "." IN { type hint; file "named.ca";};include "/etc/named.rfc1912.zones";include "/etc/named.root.key";
Создаем файл прямой и обратной зоны.
# vi /var/named/asia.local.fwd
$TTL 86400
@ IN SOA ns1.asi.local. root.asia.local. (
2014120801 ;Serial ВАЖНО !!! серийный номер должен меняться в большую строну при каждом изменении, иначе slave сервера не обновят данные
3600 ;Refresh
1800 ;Retry
604800 ;Expire
86400 ;Minimum TTL
)
; Указываем два name сервера
IN NS ns1.asia.local.
; Определяем IP адреса name серверов
ns1 IN A 10.0.10.20
; Define hostname -> IP нашего сервера для этого домена
ovirt-en1 IN A 10.0.10.30
ovirt-kvm1 IN A 10.0.10.10
ovirt-kvm2 IN A 10.0.10.11
dstore1 IN A 10.0.10.20
#dstore2 IN A 10.0.10.21
Обратная зона:
# vi /var/named/asia.local.rev
$ORIGIN 10.0.10.in-addr.arpa.
$TTL 3D
@ SOA ns1.asia.local. admin.asia.local. (13 4h 1h 1w 1h)
@ IN NS ns1.asia.local.
30 IN PTR ovirt-en1.asia.local.
10 IN PTR ovirt-kvm1.asia.local.
11 IN PTR ovirt-kvm2.asia.local.
20 IN PTR ns1.asia.local.
На этом настройка DNS сервера завершена.
НАСТРОЙКА ХРАНИЛИЩЕ ДАННЫХ iSCSI
Здесь отдадим на растерзание виртуальным машинам один жесткий диск.
Начнем сразу с установки LIO:
# yum install targetcli -y
# PYTHONPATH=../scripts/targetcli
# systemctl enable target
# systemctl start target
По идее лучше сделать LVM раздел и потом его уже отдавать:
# pvcreate /dev/sdb
# vgcreate lvg1 /dev/sdb
# lvcreate -n vmstore -L39G lvgroup1
У меня здесь диск 40Гб.
Очищаем текущею конфигурацию
# targetcli clearconfig confirm=true
Запускаем конфигуратор LIO:
# targetcli
Отдаем раздел LVM для нужд LIO:
/> cd /backstores/block
/> create hdd_block1 /dev/mapper/lvgroup1-vmstore
или
/> create hdd_block1 /dev/mapper/lvgroup1-vmstore set vpd_unit_serial=12345"
Или другой вариант, если у вас текущий раздел LVM большой:
/> cd /backstores/fileio
/> create vmstore /opt/guestimages.img 30G
Отключаем авторизацию на поиск LUN:
/> cd /iscsi
/iscsi> set discovery_auth enable=0
Создаем WWN:
/iscsi> create iqn.2016-01.com.company:t1
Создаем единственный LUN, наберите "cd iqn" и нажмите TAB:
/iscsi> cd iqn.2016-01.com.company:t1
/iscsi> cd tpg1
Ставим логин "usr" и пароль "pwd" на доступ к LUN:
/iscsi> set attribute authentication=1 Лучше 0
/iscsi> set attribute generate_node_acls=1 Лучше 0
/iscsi> set auth userid=usr
/iscsi> set auth password=pwd
/iscsi> set parameter AuthMethod=CHAP # или пусто - None
Создаем LUN из диска:
/iscsi> cd luns
/iscsi> create /backstores/block/hdd_block1
Created LUN 0.
или
/iscsi> create /backstores/fileio/vmstore
/iscsi> cd ..
Создаем ACL:
/iscsi> cd acls
/iscsi> create iqn.2016-01.com.company:t1
Created Node ACL for iqn.1991-05.com.microsoft:node01
Created mapped LUN 0.
/iscsi> cd ..
Создаем portal:
/iscsi> cd portals
/iscsi> create
/iscsi> cd /
Сохраняем конфиг
/> saveconfig
/> exit
НАСТРОЙКА ХРАНИЛИЩЕ ДАННЫХ NFS
Здесь отдадим два каталога для нужд виртуализации:
- /nfs/iso - для установочных ISO образов
- /nfs/guestimages - для некоторых виртуальных машин
Устанавливаем NFS:
# yum install nfs-utils -y
# systemctl enable rpcbind
# systemctl enable nfs-server
# systemctl start rpcbind
# systemctl start nfs-server
Отдадим два каталога:
- /nfs/iso
- /nfs/guestimages
# mkdir -p /nfs/iso && mdkdir /nfs/guestimages
Первый каталог будет содержать установочные ISO образы.
Второй каталог для некоторых гостевых виртуальных машин.
# vi /etc/exports
/nfs/iso *(rw,no_root_squash)
/nfs/guestimages *(rw,no_root_squash)
# exportfs -r
Таким же способом ставим второй сервер СХД. При настройке задаем IP адрес 10.0.10.21 и имя хоста dstore2. Роль DNS поднимать не стоит.
ИТОГО:
- Настроено хранилище данных iSCSI и NFS
- Настроен DNS сервер
2. Сколько серверов потребуется для oVirt
Минимум потребуется четыре сервера:
1. Хост с менеджером управления oVirt
2. Два хоста с гипервизором с поддержкой fencing
3. Общее хранилище iSCSI (FC, NFS)
Итого 4-ре сервера.
3. Установка репозитория oVirt на менеджере и гипервизорах
Прописываем репозиторий на хостах - oVirt и двух гипервизорах:
# yum -y update
# yum install http://plain.resources.ovirt.org/pub/yum-repo/ovirt-release36.rpm -y
4. Хосты
На хостах прописать IP адреса 10.0.10.10 и 10.0.10.11, например:
DEVICE="eth0"
HWADDR="08:00:27:79:17:85"
NM_CONTROLLED="no"
ONBOOT="yes"
BOOTPROTO=static
GATEWAY=10.0.10.1
IPADDR=10.0.10.10 # Для второго хоста 10.0.10.11
NETMASK=255.255.255.0
BROADCAST=10.0.10.255
DNS1=10.0.10.20
Настройка хостнейма для 1 и 2 хоста:
# hostnamectl set-hostname ovirt-kvm1.asia.local
# hostnamectl set-hostname ovirt-kvm2.asia.local
Не помешает отключить IPv6:
# echo "install ipv6 /bin/true" >> /etc/modprobe.d/disableipv6.conf
5. Установка oVirt
oVirt Engine 3.6 устанавливается на CentOS x64 7.1 minimal командой engine_install, после чего добавляются хосты с гипервизорами в веб интерфейсе - Web_UI.
Настройка сети (пример):
DEVICE="eth0"
HWADDR="08:00:27:79:17:85"
NM_CONTROLLED="no"
ONBOOT="yes"
BOOTPROTO=static
GATEWAY=10.0.10.1
IPADDR=10.0.10.30
NETMASK=255.255.255.0
BROADCAST=10.0.10.255
DNS1=10.0.10.30
Настройка хостнейма:
# hostnamectl set-hostname ovirt-en1.asia.local
Установка oVirt Engine (веб интерфейс и система управления - manager), ставится только на одном хосте:
# yum -y install ovirt-engine
# engine-setup
И далее мастер установки задает вопросы:
Отключаем на время firewalld и selinux:
# systemctl disable firewalld
# systemctl stop firewalld
# vi /etc/selinux/config
SELINUX=peRmissive
# setenforce 0
Страница администрирования (administration portal) находится по адресу: https://ovirt-en1.asia.local/
(можно https://ovirt-en1.asia.local/webadmin/или https://ovirt-en1.asia.local/ovirt-engine/)
Логин и пароль для входа - admin / ваш пароль который задавали при установке.
Теперь в oVirt обязательно требуется добавить хосты, по умолчанию создается пустой Datacenter и Cluster (Default), в последний добавляются хосты KVM. После этой операции добавляются стораджы и привязываются к одному из хостов.
Поэтому добавляем хосты, идем в Data Center -> Cluster -> Hosts -> New:
Щелкаем Data Center -> Cluster -> Hosts -> New
Здесь прописываем имя хоста гипервизора ovirt-kvm1.asia.local.
Проделайте это же указав имя второго хоста ovirt-kvm2.asia.local.
После чего, видим зеленные стрелочки возле добавленных хостов.
5. Подключение NFS и iSCSI стораджа
Во время установки менеджера нам было предложено создать локальный NFS сторадж для ISO образов.
Он прописался в файле /etc/exports.d/ovirt-engine-iso-domain.exports
У меня один раз там оказался мусор, какие-то непонятные символы, хотя по умолчанию данный файл должен содержать всего одну строку:
/var/lib/exports/iso *(rw)
Проверить правильность текущего NFS стораджа можно командой:
# exportfs
Должно выйти сообщение которое содержит каталог ISO:
/var/lib/exports/iso <world>
Если за место каталога видите ошибку, смотрите инструкцию внизу.
Поэтому, если вдруг у вас там непонятно что, создавайте NFS DATA сторадж по стандартной инструкции:
Удалим содержимое файла /etc/exports.d/ovirt-engine-iso-domain.exports
# :> /etc/exports.d/ovirt-engine-iso-domain.exports
Эта команда стерла все содержимое файл. Теперь стандартно прописываем наши каталоги, для этого откроем файл /etc/exportfs и отредактируем его до такого вида:
# vi /etc/exportfs
/var/lib/exports/iso *(rw,no_root_squash)
/var/lib/exports/data *(rw,no_root_squash)
Так как каталог /var/lib/exports/data пока еще не создан, создадим его:
# mkdir /var/lib/exports/data
# chown vdsm:kvm /var/lib/exports/data
Также не помешает удалить содержимое каталога ISO - /var/lib/exports/iso/:
# rm -rf /var/lib/exports/iso/*
Теперь осталось перезапустить NFS сервер:
# systemctl restart nfs-server
И посмотреть есть ли наши шаренные каталоги:
# exportfs
/var/lib/exports/iso
<world>
/var/lib/exports/data
<world>
Осталось подключить наши стораджы в самом oVirt:
Идем в Storage -> New Domain и далее прописываем последовательно сперва DATA сторадж-домен для виртуальных машин, а потом ISO сторадж для образов ISO. В System -> Storage - удалить стандартный ISO domain и пересоздать его.
Получится примерно так:
Здесь видны наши два NFS стораджа.
Добавляем iSCSI сторадж:
Устанавливаем дополнительные утилиты по работе с iSCSI:
# yum install iscsi-initiator-utils -y
Далее появится файлик с вымышленным номером "iqn" - /etc/iscsi/initiatorname.iscsi
InitiatorName=iqn.1994-05.com.redhat:d93c1b34f23
В нем видим уникальный тестовый номер (логин), он создается от фонаря утилитой iscsi-iniciator. Это строчка как бы логин для авторизации на хранилище данных. Мы должны заменить этот логин нашим - "iqn.2016-01.com.company:t1", который создали во время настройки iSCSI хранилище.
В итоге, потребуется в обязательном порядке прописать номер "iqn.2016-01.com.company:t1" в файле "/etc/iscsi/initiatorname.iscsi" на всех хостах участвующих в кластере oVirt, Node 1 и Node 2. После чего рестартуйте демон клиентского инициатора iscsd чтобы он перечитал новый IQN:
# systemctl restart iscsid
Нажимаем New Domain:
Конфиг таргета:
# targetcli ls /
o- / .................................................................... [...]
o- backstores ....................................................... [...]
| o- block ...................................... [Storage Objects: 1]
| | o- hdd_block1 [/dev/mapper/lvgroup1-vmstore (39.0GiB) write-thru activated]
| o- fileio ...................................... [Storage Objects: 0]
| o- pscsi ...................................... [Storage Objects: 0]
| o- ramdisk .................................. [Storage Objects: 0]
o- iscsi .................................................... [Targets: 1]
| o- iqn.1994-05.com.redhat:913f4624da3 ........ [TPGs: 1]
| o- tpg1 ................................................... [gen-acls, tpg-auth, 1-way auth]
| o- acls .................................................. [ACLs: 1]
| | o- iqn.1994-05.com.redhat:913f4624da3 ..... [auth via tpg, Mapped LUNs: 1]
| | o- mapped_lun0 ................................... [lun0 block/hdd_block1 (rw)]
| o- luns ................................................... [LUNs: 1]
| | o- lun0 ................. [block/hdd_block1 (/dev/mapper/lvgroup1-vmstore)]
| o- portals ................................................ [Portals: 1]
| o- 0.0.0.0:3260 ....................................... [OK]
o- loopback .....................................................[Targets: 0]
2. Установка репозитория oVirt на гипервизорах
# yum install http://plain.resources.ovirt.org/pub/yum-repo/ovirt-release36.rpm -y
3. Загрузка ISO образов
# wget http://tinycorelinux.net/6.x/x86/release/TinyCore-current.iso
# ovirt-iso-uploader upload --iso-domain=ISO TinyCore-current.iso --force
# wget http://distro.ibiblio.org/puppylinux/puppy-slacko-6.3.0/32/slacko-6.3.0.iso
# ovirt-iso-uploader upload --iso-domain=ISO slacko-6.3.0.iso --force
Если у вас много ISO образов, удобней их качать прямо в каталог ISO:
/var/lib/exports/iso/b89c8dd6-310d-4054-a506-ce4c0c737a4b/images/11111111-1111-1111-1111-111111111111
При создании ISO NFS хранилище, внутри каталога создаются служебные файлы и каталоги самим oVirt. В каталоге images создается подкаталог с цифрами, вы можете прямо туда загружать ваши ISO образы.
4. Установка гостевых систем
Идем в System -> Data Centers -> Default
Вкладка Virtual Machines -> New VM
Заполняем поля:
- Operation system - Linux
- Name - TinyLinux (без пробелов)
- nic1 - ovirtmgmt/ovirtmgmt
Далее щелкаем кнопку Create для создания виртуального диска:
Заполняем поля:
- Задаем объем диска - 1 Гб
- Выбираем хранилище (Storage Domain) где будет создана ВМ. Я выбрал iSCSI хранилище.
- Выбираем тип виртуального диска - Тонкий диск (Thin provision)
- Нажимаем ОК
На картинке внизу есть кнопка Show Advanced Options. После ее нажатия появляется расширенное меню, где можно указать конфигурацию железа для ВМ - кол-во ОЗУ, ядер CPU и другие опции.
Нажимаем ОК
Теперь осталось запустить нашу ВМ с загрузочным ISO образом. Для этого есть кнопка Run Once (запустить однажды). Щелкаем ее, и указываем ISO образ для загрузки.
Здесь ставим галку Attach CD и в списке выбираем ISO образ Tiny Linux. Нажимаем ОК.
После нажатия ОК запускается ВМ Tiny Linux.
Просмотр работы виртуальных машин
Первый способ:
Для того чтобы видеть как работают виртуальные машины в oVirt, потребуется программа Virt-Viewer, которая показывает ход работы ВМ по протоколу Spice:
https://virt-manager.org/download/sources/virt-viewer/virt-viewer-x64-3.1.msi
Скачайте virt-viewer и установите его.
Щелкаем значок зеленного мониторчика как на картинке.
После чего вам будет предложено скачать файл "console.vv" и сразу же открыть его через Virt-Viewer.
Нажимаем ОК.
И видим как работаешь наш Tiny Linux. Чтобы перейти в полно экранный режим, нажмите Shift + F12.
Для переключения мыши нажмите Shift+F11.
Второй способ:
Для этого надо экспортировать сертификат из браузера:
Далее импортируем этот сертификат, при импорте указываем "Доверенные корневые центры сертификации":
Меняем Spice клиент на Spice html5 viewer:
Теперь можно увидеть экран ВМ прямо в браузере:
6. Настройка Power Managment - Fencing
Для тестирования кластера высокой доступности High Availability (HA), потребуется настроить Power Managment (управление питанием), а именно Fencing. Что такое Fencing - это автоматический перезапуск (типа отключили питание/включили питание) хоста гипервизора, в случае если связь с ним потеряна. Требуется для предотвращения записи данных с упавшего хоста. То есть это нужно, чтобы два хоста параллельно не смогли записывать данные в одну и ту же виртуальную машину. Если такой сценарий произойдет - данные виртуальной машины превратятся в тыкву.
Перезапуском управляет oVirt Engine. Допустим хост KVM Node 1 сгорел и перестал отвечать, в этом случае, oVirt Engine посылает команду на хост KVM Node 2, чтобы тот произвел Fence (перезагрузку) хоста который не отвечает - KVM node 1. Если остался всего один хост KVM, то перезагрузка не будет работать - логично. После операции Fence, идет перезапуск виртуальных машин на работающем хосте - KVM node 2. А вы в это время идете и смотрите, почему хост KVM Node 1 перестал работать (завис и т.д.).
В основном в качестве Fencing используют:
- Управляемые распределители питания (power distribution unit, PDU).
- IPMI (Intelligent Platform Management Interface) — интеллектуальный интерфейс управления платформой. Сюда можно отнести HP iLO, Dell Drac и т.д.
Вот полный список устройств через которые можно запустить fencing в oVirt: apc, apc_snmp, bladecenter, cisco_ucs, drac5, eps, ilo, ilo2, ilo3, ilo4, ipmilan, rsa, rsb, wti и zzz
Так как у меня нет управляемого PDU и серверов с iLO, DRAC, IPMI и т.д., был взят эмулятор фенсинга, который написан очень классным спецом - Евгением Деревянкиным, кстати посмотрите его видео на youtube, он выложил целый цикл занимательного видео по oVirt. Даже иностранцы смотрят его ролики, хотя язык изложения русский. Вот видите, как хороший материал может привлекать обширную аудиторию.
Эмулятор фенсинга работает только в Linux с KVM, но думаю его можно переписать(ох, зачем я этого написал), чтобы он работал в Windows(VirtualBox или Workstation).
Устанавливаем Fake Fencing:
# yum install git make python-libvirt -y
# git clone https://github.com/jekader/fake_ilo.git
# cd fake_ilo
# make
# cd /etc/fake_ilo
# chkconfig --level 35 fake_ilo on
Создаем сертификаты для работы Fake Ilo:
# openssl req -x509 -newkey rsa:2048 -keyout server.key -out server.crt -nodes -days 9999
Запускаем в ручном режиме Fake iLO
# /usr/bin/ilo.py
Будет просто мигать курсов, это означает что он готов к работе.
Теперь можно даже перезагрузить хост гипервизора через него :)
Созданные сертификаты потребуется скопировать на node 1 и node 2 чтобы проверить как идет коннект:
# scp server.* root@10.0.10.10:/opt
# scp server.* root@10.0.10.11:/opt
И на нодах можно проверить как идет соединения по сертификату:
# cd /opt
# openssl s_client -host 10.0.10.100 -port 1234 -cert server.crt -key server.key
Хотя на самом деле эти сертификаты не нужны на нодах.
Создаем systemd юнит для запуска и останова Fake Fencing:
# vi /etc/systemd/system/fakelio.service
[Unit]
Description= Fakeilo
After=syslog.target
After=network.target
[Service]
Type=forking
PIDFile=/var/run/fakeilo.pid
ExecStartPre=/usr/bin/kill $(ps aux | grep '[p]ython /usr/bin/ilo.py' | awk '{print $2}')
ExecStart=/usr/bin/ilo.py
ExecStop=/usr/bin/kill $(ps aux | grep '[p]ython /usr/bin/ilo.py' | awk '{print $2}')
[Install]
WantedBy=multi-user.target
Установим зависимости:
# yum install fence-agents -y
Проверка работы iLO с хостов KVM
Статус хоста гипервизора:
# fence_ilo --ssl-insecure -a 10.0.10.100 -u 1234 -l ovirt-kvm2 -p ovirt-kvm2 -o status
Перезагрузка хоста node2 - kvm:
# fence_ilo --ssl-insecure -a 10.0.10.100 -u 1234 -l ovirt-kvm2 -p ovirt-kvm2 -o reboot
Включаем Power Managment у хостов c KVM:
Нажимаем Edit сперва на первом хосте и на втором, включаем Power Managment:
Щелкаем плюсик и добавляем Fence Agent - наш Fake Ilo.
На этом все!
Обязательно ставьте опцию - "ssl_insecure=1"
На первом хосте указываете ovirt-kvm2 node, на втором ovirt-kvm1 node. То есть первый хост перезагружает второй, и на оборот, второй хост перезагружает первый.
7. Тестируем кластерные фичи
В этом разделе посмотрим как работают кластерные фичи oVirt. Возможно это не все возможности данного программного обеспечения, которые я могу знать.
7.1. Живая миграция
Живая миграция - это перенос виртуальной машины с одного физического сервера на другой без прекращения работы виртуальной машины и остановки сервисов.
Для живой миграции не нужен Fencing, это самый простой кластер, который можно настроить за 5 минут. У вас не отнимет много времени настройка такого типа кластера, чтобы обеспечить простейшею отказоустойчивость у себя в компании. Когда мы добавили два хоста в oVirt, нам сразу стали доступны функции живой миграции. Как это работает: Допустим некая виртуальная машина работает на хосте ovirt-kvm1, в один прекрасный день на этом хосте начал барахлить жесткий диск, вы читаете его S.M.A.R.T. отчет, диагноз - диск потихоньку покрывается бедами. И вот вы видя это, предпринимаете шаги: мигруруете ВМ которая работала на этом хосте на другой сервер ovirt-kvm2. Далее после чего, переводите хост в режим обслуживания и выключаете его для процедуры замены диска. При этом пользователи которые работали с данной ВМ, даже не заметят того, что один из серверов перестал работать. А вы в это время будете спокойны что все ИТ системы работают.
Для миграции ВМ, просто выделите нужную ВМ и нажмите Migrate. Если у вас всего два хоста, то будет автоматически выбран второй хост в качестве цели миграции. Таким простым способом происходит кочевание виртуальных машин с хоста на хост. Это операция делается в ручном режиме, то есть нужны руки администратора.
Выделяем машину и нажимаем Migrate
Текущая ВМ работает на хосте ovirt-kvm2.asia.local, автоматически предложен хост для миграции - ovirt-kvm1.asia.local.
Нажимаем OK.
Видим что ВМ смигрировала на ноду KVM Node 1.
7.2. High Availability
Высокая доступность (High Availability) - это метод проектирования системы, позволяющий достигать высокий уровень доступности системы в течение какого-либо промежутка времени (Wikipedia).
HA - это группа серверов с установленными на них гипервизорами которые хранят данные ВМ (виртуальных машин) в общем хранилище данных. Допустим что один хост (сервер) с гипервизором перестал работать - отказало железо [сгорела мат. плата]. Работающая на нем виртуальная машина, например с Windows, в итоге при таком случае, автоматически перезапустится на другом хосте. Простой от такой операции равен 30 секундному таймауту + времени загрузки виртуальной машины Windows. Это все происходит в автоматическом режиме. Упавший хост со сгоревшей мат. платой ремонтируется, и вводится опять в кластер. Само собой, юзеры могут позвонить и поднять шум, за время запуска их виртуальной машины. Это операция требует минимального простоя (downtime). Таймаут в 30 секунд требуется для защиты от случайных случаев перезапуска, то есть oVirt Engine может ошибиться если сразу инициирует процесс перезапуска ВМ, бывает что хост гипервизора на секунды 3-10 по каким либо причинам может отвалится. Чтобы попросту не гонять ВМ между гипервизорами, необходимо удостоверится что хост точно упал, вот для этого и нужен этот таймаут.
Как обычно, для работы HA требуется выполнить следующие условия:
- Кластер с как минимум двумя хостами
- Общее хранилище данных (СХД)
- Настроенный Power Managment (Fencing)
- Желательно чтобы железо серверов было одинаковым (модель процессора, кол-во ОЗУ и т.д.)
Включаем HA на нужной ВМ:
Идем в System -> Virtual Mchines -> выделяем ВМ -> Нажимаем Edit
Заходим в Advanced Options -> High Availability -> Ставим галку -> Нажимаем ОК
Все теперь HA включена.
7.3. Балансировка нагрузки
С помощью Optaplanner, вы можете распределять нагрузку между хостами гипервизоров. Например, допустим есть два хоста ovirt-kvm1 и ovirt-kvm2. На первом хосте, работает две ВМ (виртуальные машины), а второй хост свободен - на нем не работает ни одной ВМ. Разумеется ресурсы хоста ovirt-kvm1 расходуются и он нагружен. Анализируя данную ситуацию, балансировщик нагрузки может распределят ресурсы равномерно между гипервизорами, например, он может инициировать процесс живой миграции одной из ВМ хоста ovirt-kvm1 на простаивающий хост ovirt-kvm2. Тем самым проводя балансировку нагрузки между хостами гипервизоров.
Заходим в свойства кластера Default и далее в Scheduling Policy:
Здесь выбираем политику работы балансировщика:
- Select Policy (выбор политики) - Evenly Distributed (равномерное распределение)
- Properties (свойства политики):
- === CpuOverCommitDurationMinutes - Продолжительность потребления процессора в минутах для активации алгоритма выбора - 2 минуты
- === HighUtilization - Предельное использования процессора = 80
- === MaxFreeMemoryForOverUtilization - Максимальное свободная память для использования политики = 80
Или вариант для энергосбережения:
8. Конвертирование физической машины в виртуальную
Есть специальная утилита virt-p2v которая может перевести ваш физический ПК в виртуальный.
А также, это программа позволит перетянуть другие ВМ с гипервизоров ESXi, Hyper-V на ваш oVirt.
9. Резервное копирование
Есть два варианта, первый это использовать oVirtBackup или второй - Acronis Backup Advanced 11.5 for rhev/kvm
Для oVirt Engine есть команда engine-backup которая делает резервную копию Engine, а также команда engine-restore - восстанавливает Engine из сделанной копии. Всегда создавайте копии Engine, он является узким местом в кластере.
10. Ссылки:
3. Установка_системы_управления_виртуализацией_Ovirt_3.5_в_доменной_среде_IPA_на_базе_RELS_6.6
5. Инструкция по быстрой установки
7. Видео балансировка нагрузки
8. Optaplanner
9. Цикл видео от Евгения Деревянкина
10. Fake iLO Fencing от Евгения Деревянкина
12. Yanic Bronheim - oVirt Overview - Open-Source Product For Virtualization Management
13. Установка и настройка oVirt в CentOS 6
15. FAQ SSL