В этой статье мы рассмотрим ряд необязательных, но полезных настроек:
Эта статья — продолжение, начало см. oVirt за 2 часа Часть 1 и часть 2.
Для удобства работы поставим дополнительные пакеты:
Для включения автодополнения команд bash-completion следует перевойти в bash.
Это потребуется, когда к менеджеру необходимо подключиться по альтернативному имени (CNAME, псевдоним или просто короткое имя без доменного суффикса). Из соображений безопасности менеджер допускает подключение только по разрешенному списку имен.
Создаем файл конфигурации:
следующего содержания:
и перезапускаем менеджер:
oVirt имеет встроенную базу пользователей, но также поддерживаются внешние LDAP провайдеры, в т.ч. AD.
Простейший путь для типовой конфигурации — запуск мастера и перезапуск менеджера:
Использование мастера подходит для большинства случаев. Для сложных конфигураций настройки выполняются вручную. Подробнее в документации oVirt, Users and Roles. После успешного подключения Engine к AD, в окне подключения появится дополнительный профиль, а на вкладке Permissions у объектов системы — возможность выдавать полномочия пользователям и группам AD. Следует отметить, что внешним каталогом пользователей и групп может быть не только AD, но и IPA, eDirectory и др.
В производственной среде система хранения должна быть подключена к хосту несколькими независимыми путями множественного ввода-вывода. Как правило, в CentOS (и следовательно oVirt'е) проблем со сборкой множественных путей к устройству не возникает (find_multipaths yes). О дополнительных настройках для FCoE написано во 2-й части. Стоит обратить внимание на рекомендацию производителя СХД — многие рекомендуют использовать политику round-robin, по умолчанию же в Enterprise Linux 7 используется service-time.
Позволяет выполнить, например, аппаратный сброс машины, если Engine не сможет продолжительное время получить ответ от Host'а. Реализуется через Fence Agent (агент ограждения).
Compute -> Hosts -> HOST — Edit -> Power Management, далее включить «Enable Power Management» и добавить агента — «Add Fence Agent» -> +.
Указываем тип (напр., для iLO5 надо указать ilo4), имя/адрес ipmi интерфейса, а также имя/пароль пользователя. Пользователя рекомендуется создать отдельного (напр., oVirt-PM) и, в случае с iLO выдать ему привилегии:
Не спрашивайте почему именно так, подобрано опытным путем. Консольный fencing agent требует меньшего набора прав.
При настройке списков контроля доступа следует иметь ввиду, что агент запускается не на engine, а на «соседнем» хосте (так называем Power Management Proxy), т.е., если в кластере окажется только один узел, управление питанием работать не будет.
Полная официальная инструкция — в документации, Appendix D: oVirt and SSL — Replacing the oVirt Engine SSL/TLS Certificate.
Сертификат может быть как нашего корпоративного ЦС, так и от внешнего коммерческого центра сертификации.
Важное замечание: сертификат предназначен для подключения к менеджеру, не повлияет на взаимодействие между Engine и узлами — они будут использовать самоподписанные сертификаты, выданные Engine.
Требования:
Предположим, наш издающий центр сертификации работает под управлением CentOS, называется subca.example.com, а запросы, ключи и сертификаты располагаются в каталоге /etc/pki/tls/.
Выполняем резервные копии и создаем временный каталог:
Загрузка сертификатов, выполняем ее со своей рабочей станции либо передаем иным удобным способом:
В результате вы должны увидеть все 3 файла:
Копируем файлы и обновляем списки доверия:
Добавить/обновить конфирурационные файлы:
Далее перезапускаем все затронутые службы:
Готово! Пора подключиться к менеджеру и проверить, что соединение защищено подписанным SSL сертификатом.
Куда же без нее! В этой секции речь пойдет об архивации менеджера, архивация ВМ — отдельный вопрос. Архивные копии будем делать 1 раз в сутки и складываать по NFS, напр., на ту же систему, где мы разместили ISO образы — mynfs01.example.com:/exports/ovirt-backup. Не рекомендуется хранить архивы на той же машине, где работает Engine.
Устанавливаем и включаем autofs:
Создаем скрипт:
следующего содержания:
Делаем файл исполняемым:
Теперь каждую ночь мы будем получать архив настроек менеджера.
Cockpit — современный административный интерфейс для Linux систем. В данном случае выполняет роль, близкую web-интерфейсу ESXi.
Рис. 3 — внешний вид панели.
Устанавливается очень просто, нужны пакеты cockpit и плагин cockpit-ovirt-dashboard:
Включение Cockpit:
Настройка брандмауэра:
Теперь можно подключиться к хосту: https://[Host IP or FQDN]:9090
Подробнее о сетях стоит почитать в документации. Возможностей много, здесь опишем подключение виртуальных сетей.
Для подключения других подсетей их сперва следует описать в конфигурации: Network -> Networks -> New, здесь обязательным полем является только имя; чекбокс VM Network, разрешающий машинам использовать эту сеть, включен, а для подключения тега надо включить Enable VLAN tagging, прописать номер VLAN и нажать Ок.
Теперь нужно пройти в хосты Compute -> Hosts -> kvmNN -> Network Interfaces -> Setup Host Networks. Добавленную сеть из правой части Unassigned Logical Networks перетащить влево в Assigned Logical Networks:
Рис. 4 — перед добавлением сети.
Рис. 5 — после добавления сети.
Для массового подключения нескольких сетей к хосту удобно при создании сетей присваить им метку(и), и добавлять сети по меткам.
После создания сети хосты перейдут в состояние Non Operational, пока на закончится добавление сети на все узлы кластера. Такое поведение вызывается признаком Require All на вкладке Cluster при создании новой сети. В случае, когда сеть нужна не на всех узлах кластера, этот признак можно отключить, тогда сеть при добавлении хосту будет справа в секции Non Required и можно выбрать, подключать ли ее к конкретному хосту.
Рис. 6 — выбор признака требования сети.
Почти у всех производителей есть инструменты, повышающие удобство работы с их продуктами. На примере HPE, полезны AMS (Agentless Management Service, amsd для iLO5, hp-ams для iLO4) и SSA (Smart Storage Administrator, работа с дисковым контроллером) и др.
Установка и запуск:
На этом пока все. В следующих статьях планирую рассказать некоторых базовых операциях и применениях. Напр., как сделать VDI в oVirt'е.
- использование дополнительных имен для менеджера;
- подключение аутентификации через Active Directory;
- Mutlipathing;
- управление питанием;
- замена SSL сертификата;
- архивация;
- менеджмент-интерфейс хостов (cockpit);
- VLANs;
- специфичное для HPE.
Эта статья — продолжение, начало см. oVirt за 2 часа Часть 1 и часть 2.
Статьи
- Введение
- Установка менеджера (ovirt-engine) и гипервизоров (hosts)
- Дополнительные настройки — Мы здесь
- Базовые операции
Дополнительные настройки менеджера
Для удобства работы поставим дополнительные пакеты:
$ sudo yum install bash-completion vim
Для включения автодополнения команд bash-completion следует перевойти в bash.
Добавление дополнительных DNS имен
Это потребуется, когда к менеджеру необходимо подключиться по альтернативному имени (CNAME, псевдоним или просто короткое имя без доменного суффикса). Из соображений безопасности менеджер допускает подключение только по разрешенному списку имен.
Создаем файл конфигурации:
$ sudo vim /etc/ovirt-engine/engine.conf.d/99-custom-sso-setup.conf
следующего содержания:
SSO_ALTERNATE_ENGINE_FQDNS="ovirt.example.com some.alias.example.com ovirt"
и перезапускаем менеджер:
$ sudo systemctl restart ovirt-engine
Настройка аутентификации через AD
oVirt имеет встроенную базу пользователей, но также поддерживаются внешние LDAP провайдеры, в т.ч. AD.
Простейший путь для типовой конфигурации — запуск мастера и перезапуск менеджера:
$ sudo yum install ovirt-engine-extension-aaa-ldap-setup
$ sudo ovirt-engine-extension-aaa-ldap-setup
$ sudo systemctl restart ovirt-engine
Пример работы мастера
$ sudo ovirt-engine-extension-aaa-ldap-setup
Available LDAP implementations:
…
3 — Active Directory
…
Please select: 3
Please enter Active Directory Forest name: example.com
Please select protocol to use (startTLS, ldaps, plain) [startTLS]:
Please select method to obtain PEM encoded CA certificate (File, URL, Inline, System, Insecure): URL
URL: wwwca.example.com/myRootCA.pem
Enter search user DN (for example uid=username,dc=example,dc=com or leave empty for anonymous): CN=oVirt-Engine,CN=Users,DC=example,DC=com
Enter search user password: *password*
[ INFO ] Attempting to bind using 'CN=oVirt-Engine,CN=Users,DC=example,DC=com'
Are you going to use Single Sign-On for Virtual Machines (Yes, No) [Yes]:
Please specify profile name that will be visible to users [example.com]:
Please provide credentials to test login flow:
Enter user name: someAnyUser
Enter user password:
…
[ INFO ] Login sequence executed successfully
…
Select test sequence to execute (Done, Abort, Login, Search) [Done]:
[ INFO ] Stage: Transaction setup
…
CONFIGURATION SUMMARY
…
Available LDAP implementations:
…
3 — Active Directory
…
Please select: 3
Please enter Active Directory Forest name: example.com
Please select protocol to use (startTLS, ldaps, plain) [startTLS]:
Please select method to obtain PEM encoded CA certificate (File, URL, Inline, System, Insecure): URL
URL: wwwca.example.com/myRootCA.pem
Enter search user DN (for example uid=username,dc=example,dc=com or leave empty for anonymous): CN=oVirt-Engine,CN=Users,DC=example,DC=com
Enter search user password: *password*
[ INFO ] Attempting to bind using 'CN=oVirt-Engine,CN=Users,DC=example,DC=com'
Are you going to use Single Sign-On for Virtual Machines (Yes, No) [Yes]:
Please specify profile name that will be visible to users [example.com]:
Please provide credentials to test login flow:
Enter user name: someAnyUser
Enter user password:
…
[ INFO ] Login sequence executed successfully
…
Select test sequence to execute (Done, Abort, Login, Search) [Done]:
[ INFO ] Stage: Transaction setup
…
CONFIGURATION SUMMARY
…
Использование мастера подходит для большинства случаев. Для сложных конфигураций настройки выполняются вручную. Подробнее в документации oVirt, Users and Roles. После успешного подключения Engine к AD, в окне подключения появится дополнительный профиль, а на вкладке Permissions у объектов системы — возможность выдавать полномочия пользователям и группам AD. Следует отметить, что внешним каталогом пользователей и групп может быть не только AD, но и IPA, eDirectory и др.
Multipathing
В производственной среде система хранения должна быть подключена к хосту несколькими независимыми путями множественного ввода-вывода. Как правило, в CentOS (и следовательно oVirt'е) проблем со сборкой множественных путей к устройству не возникает (find_multipaths yes). О дополнительных настройках для FCoE написано во 2-й части. Стоит обратить внимание на рекомендацию производителя СХД — многие рекомендуют использовать политику round-robin, по умолчанию же в Enterprise Linux 7 используется service-time.
На примере 3PAR
и документа HPE 3PAR Red Hat Enterprise Linux, CentOS Linux, Oracle Linux, and OracleVM Server Implementation Guide EL создается как Host с Generic-ALUA Persona 2, для него в настройки /etc/multipath.conf вносятся следующие значения:
После чего дается команда на перезапуск:
Рис. 1 — политика множественного ввода-вывода по умолчанию.
Рис. 2 — политика множественного ввода-вывода после применения настроек.
defaults {
polling_interval 10
user_friendly_names no
find_multipaths yes
}
devices {
device {
vendor "3PARdata"
product "VV"
path_grouping_policy group_by_prio
path_selector "round-robin 0"
path_checker tur
features "0"
hardware_handler "1 alua"
prio alua
failback immediate
rr_weight uniform
no_path_retry 18
rr_min_io_rq 1
detect_prio yes
fast_io_fail_tmo 10
dev_loss_tmo "infinity"
}
}
После чего дается команда на перезапуск:
systemctl restart multipathd
Рис. 1 — политика множественного ввода-вывода по умолчанию.
Рис. 2 — политика множественного ввода-вывода после применения настроек.
Настройка управления питанием
Позволяет выполнить, например, аппаратный сброс машины, если Engine не сможет продолжительное время получить ответ от Host'а. Реализуется через Fence Agent (агент ограждения).
Compute -> Hosts -> HOST — Edit -> Power Management, далее включить «Enable Power Management» и добавить агента — «Add Fence Agent» -> +.
Указываем тип (напр., для iLO5 надо указать ilo4), имя/адрес ipmi интерфейса, а также имя/пароль пользователя. Пользователя рекомендуется создать отдельного (напр., oVirt-PM) и, в случае с iLO выдать ему привилегии:
- Login
- Remote Console
- Virtual Power and Reset
- Virtual Media
- Configure iLO Settings
- Administer User Accounts
Не спрашивайте почему именно так, подобрано опытным путем. Консольный fencing agent требует меньшего набора прав.
При настройке списков контроля доступа следует иметь ввиду, что агент запускается не на engine, а на «соседнем» хосте (так называем Power Management Proxy), т.е., если в кластере окажется только один узел, управление питанием работать не будет.
Настройка SSL
Полная официальная инструкция — в документации, Appendix D: oVirt and SSL — Replacing the oVirt Engine SSL/TLS Certificate.
Сертификат может быть как нашего корпоративного ЦС, так и от внешнего коммерческого центра сертификации.
Важное замечание: сертификат предназначен для подключения к менеджеру, не повлияет на взаимодействие между Engine и узлами — они будут использовать самоподписанные сертификаты, выданные Engine.
Требования:
- сертификат издающего ЦС в формате PEM, со всей цепочкой до корневого ЦС (от подчиненного издающего в начале до корневого в конце);
- сертификат для Apache, выпущенный издающим ЦС (также дополненный всей цепочкой сертификатов ЦС);
- приватный ключ для Apache, без пароля.
Предположим, наш издающий центр сертификации работает под управлением CentOS, называется subca.example.com, а запросы, ключи и сертификаты располагаются в каталоге /etc/pki/tls/.
Выполняем резервные копии и создаем временный каталог:
$ sudo cp /etc/pki/ovirt-engine/keys/apache.key.nopass /etc/pki/ovirt-engine/keys/apache.key.nopass.`date +%F`
$ sudo cp /etc/pki/ovirt-engine/certs/apache.cer /etc/pki/ovirt-engine/certs/apache.cer.`date +%F`
$ sudo mkdir /opt/certs
$ sudo chown mgmt.mgmt /opt/certs
Загрузка сертификатов, выполняем ее со своей рабочей станции либо передаем иным удобным способом:
[myuser@mydesktop] $ scp -3 causer@subca.example.com:/etc/pki/tls/cachain.pem mgmt@ovirt.example.com:/opt/certs
[myuser@mydesktop] $ scp -3 causer@subca.example.com:/etc/pki/tls/private/ovirt.key mgmt@ovirt.example.com:/opt/certs
[myuser@mydesktop] $ scp -3 causer@subca.example.com/etc/pki/tls/certs/ovirt.crt mgmt@ovirt.example.com:/opt/certs
В результате вы должны увидеть все 3 файла:
$ ls /opt/certs
cachain.pem ovirt.crt ovirt.key
Установка сертификатов
Копируем файлы и обновляем списки доверия:
$ sudo cp /opt/certs/cachain.pem /etc/pki/ca-trust/source/anchors
$ sudo update-ca-trust
$ sudo rm /etc/pki/ovirt-engine/apache-ca.pem
$ sudo cp /opt/certs/cachain.pem /etc/pki/ovirt-engine/apache-ca.pem
$ sudo cp /opt/certs/ovirt03.key /etc/pki/ovirt-engine/keys/apache.key.nopass
$ sudo cp /opt/certs/ovirt03.crt /etc/pki/ovirt-engine/certs/apache.cer
$ sudo systemctl restart httpd.service
Добавить/обновить конфирурационные файлы:
$ sudo vim /etc/ovirt-engine/engine.conf.d/99-custom-truststore.conf
ENGINE_HTTPS_PKI_TRUST_STORE="/etc/pki/java/cacerts"
ENGINE_HTTPS_PKI_TRUST_STORE_PASSWORD=""
$ sudo vim /etc/ovirt-engine/ovirt-websocket-proxy.conf.d/10-setup.conf
SSL_CERTIFICATE=/etc/pki/ovirt-engine/certs/apache.cer
SSL_KEY=/etc/pki/ovirt-engine/keys/apache.key.nopass
$ sudo vim /etc/ovirt-imageio-proxy/ovirt-imageio-proxy.conf
# Key file for SSL connections
ssl_key_file = /etc/pki/ovirt-engine/keys/apache.key.nopass
# Certificate file for SSL connections
ssl_cert_file = /etc/pki/ovirt-engine/certs/apache.cer
Далее перезапускаем все затронутые службы:
$ sudo systemctl restart ovirt-provider-ovn.service
$ sudo systemctl restart ovirt-imageio-proxy
$ sudo systemctl restart ovirt-websocket-proxy
$ sudo systemctl restart ovirt-engine.service
Готово! Пора подключиться к менеджеру и проверить, что соединение защищено подписанным SSL сертификатом.
Архивация
Куда же без нее! В этой секции речь пойдет об архивации менеджера, архивация ВМ — отдельный вопрос. Архивные копии будем делать 1 раз в сутки и складываать по NFS, напр., на ту же систему, где мы разместили ISO образы — mynfs01.example.com:/exports/ovirt-backup. Не рекомендуется хранить архивы на той же машине, где работает Engine.
Устанавливаем и включаем autofs:
$ sudo yum install autofs
$ sudo systemctl enable autofs
$ sudo systemctl start autofs
Создаем скрипт:
$ sudo vim /etc/cron.daily/make.oVirt.backup.sh
следующего содержания:
#!/bin/bash
datetime=`date +"%F.%R"`
backupdir="/net/mynfs01.example.com/exports/ovirt-backup"
filename="$backupdir/`hostname --short`.`date +"%F.%R"`"
engine-backup --mode=backup --scope=all --file=$filename.data --log=$filename.log
#uncomment next line for autodelete files older 30 days
#find $backupdir -type f -mtime +30 -exec rm -f {} \;
Делаем файл исполняемым:
$ sudo chmod a+x /etc/cron.daily/make.oVirt.backup.sh
Теперь каждую ночь мы будем получать архив настроек менеджера.
Менеджмент-интерфейс хостов
Cockpit — современный административный интерфейс для Linux систем. В данном случае выполняет роль, близкую web-интерфейсу ESXi.
Рис. 3 — внешний вид панели.
Устанавливается очень просто, нужны пакеты cockpit и плагин cockpit-ovirt-dashboard:
$ sudo yum install cockpit cockpit-ovirt-dashboard -y
Включение Cockpit:
$ sudo systemctl enable --now cockpit.socket
Настройка брандмауэра:
sudo firewall-cmd --add-service=cockpit
sudo firewall-cmd --add-service=cockpit --permanent
Теперь можно подключиться к хосту: https://[Host IP or FQDN]:9090
VLANs
Подробнее о сетях стоит почитать в документации. Возможностей много, здесь опишем подключение виртуальных сетей.
Для подключения других подсетей их сперва следует описать в конфигурации: Network -> Networks -> New, здесь обязательным полем является только имя; чекбокс VM Network, разрешающий машинам использовать эту сеть, включен, а для подключения тега надо включить Enable VLAN tagging, прописать номер VLAN и нажать Ок.
Теперь нужно пройти в хосты Compute -> Hosts -> kvmNN -> Network Interfaces -> Setup Host Networks. Добавленную сеть из правой части Unassigned Logical Networks перетащить влево в Assigned Logical Networks:
Рис. 4 — перед добавлением сети.
Рис. 5 — после добавления сети.
Для массового подключения нескольких сетей к хосту удобно при создании сетей присваить им метку(и), и добавлять сети по меткам.
После создания сети хосты перейдут в состояние Non Operational, пока на закончится добавление сети на все узлы кластера. Такое поведение вызывается признаком Require All на вкладке Cluster при создании новой сети. В случае, когда сеть нужна не на всех узлах кластера, этот признак можно отключить, тогда сеть при добавлении хосту будет справа в секции Non Required и можно выбрать, подключать ли ее к конкретному хосту.
Рис. 6 — выбор признака требования сети.
Специфичное для HPE
Почти у всех производителей есть инструменты, повышающие удобство работы с их продуктами. На примере HPE, полезны AMS (Agentless Management Service, amsd для iLO5, hp-ams для iLO4) и SSA (Smart Storage Administrator, работа с дисковым контроллером) и др.
Подключение репозитория HPE
Импортируем ключ и подключаем репозитории HPE:
следующего содержания:
Просмотр содержимого репозитория и информации о пакете (справочно):
$ sudo rpm --import https://downloads.linux.hpe.com/SDR/hpePublicKey2048_key1.pub
$ sudo vim /etc/yum.repos.d/mcp.repo
следующего содержания:
[mcp]
name=Management Component Pack
baseurl=http://downloads.linux.hpe.com/repo/mcp/centos/$releasever/$basearch/current/
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/GPG-KEY-mcp
[spp]
name=Service Pack for ProLiant
baseurl=http://downloads.linux.hpe.com/SDR/repo/spp/RHEL/$releasever/$basearch/current/
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/GPG-KEY-mcp
Просмотр содержимого репозитория и информации о пакете (справочно):
$ sudo yum --disablerepo="*" --enablerepo="mcp" list available
$ yum info amsd
Установка и запуск:
$ sudo yum install amsd ssacli
$ sudo systemctl start amsd
Пример работы утилиты по работе с дисковым контроллером
На этом пока все. В следующих статьях планирую рассказать некоторых базовых операциях и применениях. Напр., как сделать VDI в oVirt'е.
bodun666
Спасибо за статью.
oVirt используется уже лет пять без каких-либо проблем (2 ноды, SAN FC, hosted engine, 20+ вирт серверов).
В статье грамотно описан механизм использования своих сертификатов — /opt/certs, потом копируем в /etc/… Просто на всякий случай хочу предостеречь других пользователей, чтоб не повторили моей ошибки.
Ключевое слово тут — копируем.
Я в свое время сделал симлинки в нужные папки, все работало и т. д. Бекап делается ежедневно, но все руки не доходили его проверить (да, знаю, это идиотизм :) ).
Конечно же однажды звезды сложились так, что очень уж удачно рубанули электроснабжение, со всеми этими скачками упсы посходили с ума и не погасили кластер и т. д. И собственно hostedEngine благополучно померла.
При восстановлении конечно же оказалось, что папка с сертификатами не резервировалась и соответственно при пробе восстановления ничего хорошего не происходило — не могло все это хозяйство стартовать из-за битых ссылок.