Страницы

Сохранить статью у себя в соцсети:

понедельник, 20 августа 2012 г.

§ oVirt: Deep dive.

Установка и настройка oVirt в CentOS.

ВНИМАНИЕ: Статья морально устарела. Читайте новый вариант.

Как оказалось настройка oVirt не совсем очевидное занятие и не сразу можно сообразить что в какой последовательности делать и в каком месте находятся те или иные вещи. Разберем же поподробнее процесс настройки oVirt. Чтобы не повторяться, установка будет осуществляться в CentOS 6.3. Почему CentOS? Есть мнение что он стабильнее чем Fedora. Однако следует помнить что oVirt использует в качестве основной платформы именно Fedora. Для CentOS в свою очередь существует репозиторий oVirt с адаптированными пакетами. Таким образом есть два варианта:
  • Всегда свежая Fedora с родным oVirt
  • Стабильный CentOS c адаптированным oVirt

ВНИМАНИЕ: Статья морально устарела. Читайте новый вариант.

Итак начнем. Cкачиваем образ сетевой установки CentOS, например с Yandex'а
записываем на его флешку (dd if=image.iso of=/dev/sdc) или любым другим способом описанным в официальном FAQ CentOS. Загружаемся и выполняем установку. В качестве источника установки пакетов можно указать зеркало Yandex или RBC.
Тип установки выбираем Minimal, этого будет достаточно.
После установки CentOS настраиваем репозиторий oVirt и выполняем установку.
# yum install -y wget 
# wget http://www.dreyou.org/ovirt/ovirt-dre.repo -O /etc/yum.repos.d/ovirt-dre.repo
# yum install -y ovirt-engine
# yum install -y apr

Для полноценного запуска и работы oVirt некоторые шаманства присущие ИМХО, любому open-source продукту. Обеспечиваем автозагрузку модуля softdog.
# vi /etc/sysconfig/modules/softdog.modules
#!/bin/sh
modprobe softdog
exit 0
# chmod +x  /etc/sysconfig/modules/softdog.modules
# /etc/sysconfig/modules/softdog.modules

Теперь сама установка oVirt. Указываем порты для веб-приложения, имя узла, пароль администратора, тип хранилища, размещение и пароль для базы данных, размещение ISO домена (можно указывать любой путь, установщик создаст его самостоятельно), разрешаем установку правил iptables.
# engine-setup
Welcome to oVirt Engine setup utility
HTTP Port  [80] : 80
HTTPS Port  [443] : 443
Host fully qualified domain name, note that this name should be fully resolvable  [zeus.dev.apress.ru] : ov-engine-01.dev.apress.ru
The IP 10.101.14.1 does not hold a PTR record for the FQDN: ov-engine-01.dev.apress.ru
User input failed validation, do you still wish to use it? (yes|no): yes
Password for Administrator (admin@internal) : *********
Confirm password : *********
Organization Name for the Certificate: Apress
The default storage type you will be using  ['NFS'| 'FC'| 'ISCSI']  [NFS] : NFS
Enter DB type for installation ['remote'| 'local']  [local] : local
Local database password : *********
Confirm password : *********
Should the installer configure NFS share on this server to be used as an ISO Domain? ['yes'| 'no']  [yes] : yes
Local ISO domain path: /home/ovirt/iso
Display name for the ISO Domain: iso
Firewall ports need to be opened.
You can let the installer configure iptables automatically overriding the current configuration. The old configuration will be backed up.
Alternately you can configure the firewall later using an example iptables file found under /usr/share/ovirt-engine/conf/iptables.example
Configure iptables ? ['yes'| 'no']: yes

Подтверждаем настройки.
oVirt Engine will be installed using the following configuration:
=================================================================
http-port:                     80
https-port:                    443
host-fqdn:                     ov-engine-01.dev.apress.ru
auth-pass:                     ********
org-name:                      Apress
default-dc-type:               NFS
db-remote-install:             local
db-local-pass:                 ********
nfs-mp:                        /home/ovirt/iso
iso-domain-name:               iso
config-nfs:                    yes
override-iptables:             yes
Proceed with the configuration listed above? (yes|no): yes

Сам процесс установки выглядит следующим образом
Installing:
Configuring oVirt-engine...                              [ DONE ]
Creating CA...                                           [ DONE ]
Editing JBoss Configuration...                           [ DONE ]
Setting Database Configuration...                        [ DONE ]
Setting Database Security...                             [ DONE ]
Creating Database...                                     [ DONE ]
Updating the Default Data Center Storage Type...         [ DONE ]
Editing oVirt Engine Configuration...                    [ DONE ]
Editing Postgresql Configuration...                      [ DONE ]
Configuring the Default ISO Domain...                    [ DONE ]
Configuring Firewall (iptables)...                       [ DONE ]
Starting JBoss Service...                                [ DONE ]
Handling HTTPD...                                        [ DONE ]
 **** Installation completed successfully ******
     (Please allow oVirt Engine a few moments to start up.....)
Additional information:
 * There is less than 4 GB of available free memory on this machine.
It is  recommended to have at least 4 GB of available memory to run the oVirt Engine.
 * SSL Certificate fingerprint: 4C:A9:25:8D:5C:85:85:D4:14:F2:6E:79:71:98:4A:8F:71:DD:3E:37
 * SSH Public key fingerprint: 62:ac:02:51:6b:ec:e0:07:4f:52:2e:04:b0:fd:64:30
 * A default ISO share has been created on this host.
   If IP based access restrictions are required, please edit /home/ovirt/iso entry in /etc/exports
 * The firewall has been updated, the old iptables configuration file was saved to /usr/share/ovirt-engine/conf/iptables.backup.123436-08142012_1371
 * The installation log file is available at: /var/log/ovirt-engine/engine-setup_2012_08_14_12_32_15.log
 * Please use the user "admin" and password specified in order to login into oVirt Engine
 * To configure additional users, first configure authentication domains using the 'engine-manage-domains' utility
 * To access oVirt Engine please go to the following URL: http://ov-engine-01.dev.apress.ru:80

Когда все готово, идем в админку по указанному адресу, в моем случае это http://ov-engine-01.dev.apress.ru:80. Заходим в портал Администратора.
овирт
Стоит немного раcсказать о иерархии объектов. Существуют Датацентры которые вмещают в себя Кластеры, а те в свою очередь вмещают в себя Хосты. На Хостах размещаются Виртуальные машины. Также есть Хранилища, они служат для хранения ISO образов и блочных устройств для Виртуальных машин. Хранилища подключаются к Хостам и ассоциируются с Датацентрами. Все эти объекты могут находиться в выключенном (Non operational или Maintenance) или включенном (Up) состояниях. Также есть Виртуальные сети которые ассоциируются с Датацентрами, на деле же они являются мостовыми интерфейсами (bridge). Вот.
Дальше необходимо подключить Хост, который будет гипервизором для виртуальных машин. Заходим во вкладку Hosts, посредством кнопки New добавляем хост на котором выполнялась установка ovirt-engine. То есть добавляем сами себя. Указываем имя хост, ip-адрес и пароль учетной записи root. Пункт добавления iptables правил я оставил выключенным. 
овирт
Предупреждение о том что не сконфигурировано управление питанием можно проигнорировать и нажать OK. В нижней части браузера, в строке сообщений, можно наблюдать процесс установки пакетов. 
овирт
По завершению установки выполнится плановая перезагрузка, поэтому доступ к веб-консоли будет прерван. Когда хост перезагрузится, можно продолжить настройку.
Проверяем настройку сети. Пакет из репозитория dreyou почему-то не выполняет автоматическую перенастройку сетевых интерфейсов (может быть это косяки адаптации пакета под CentOS?) поэтому создадим все руками. Суть настройки сводится к следующему. Нужно создать интерфейс-мост и поместить в него физический интерфейс. UUID и аппаратный адрес HWADDR в настройках оставляем такими какие есть. Сначала физический интерфейс, потом мост ovirtmgmt.
# vi /etc/sysconfig/network-scripts/ifcfg-eth0 
DEVICE="eth0"
BOOTPROTO="none"
HWADDR="20:CF:30:A4:D7:A8"
NM_CONTROLLED="no"
ONBOOT="yes"
TYPE="Ethernet"
UUID="3ca879cb-37e6-4c8b-a0b4-5e29b22aa09f"
BRIDGE="ovirtmgmt"
# vi /etc/sysconfig/network-scripts/ifcfg-ovirtmgmt 
DEVICE=ovirtmgmt
TYPE=Bridge
ONBOOT=yes
DELAY=0
NM_CONTROLLED="no"
BOOTPROTO="none"
BROADCAST="10.101.255.255"
DNS1="10.101.0.11"
GATEWAY="10.101.0.1"
HWADDR="20:CF:30:A4:D7:A8"
IPADDR="10.101.14.1"
NETMASK="255.255.0.0"

Перезапускаем сеть
# service network restart
Shutting down interface eth0:  bridge ovirtmgmt does not exist!
                                                           [  OK  ]
Shutting down loopback interface:                          [  OK  ]
Bringing up loopback interface:                            [  OK  ]
Bringing up interface eth0:                                [  OK  ]
Bringing up interface ovirtmgmt:                           [  OK  ]

Перезапускаем службы. ovirt-engine сам не узнает что изменилась топология сети. Также добавляем в автозагрузку службы wdmd и sanlock (по-моему, так тоже недоработка маинтайнеров)
# service wdmd start
# service sanlock start
# chkconfig wdmd on
# chkconfig sanlock on
# service ovirt-engine stop
Waiting up to 10 seconds for engine process 1531 to finish.
Stopped engine process 1531.
# service ovirt-engine start
Started engine process 3240.

Настало время конфигурировать хранилища. В качестве хранилищ будут выступать NFS каталоги. Настраиваем NFS и перезапускаем сервис NFS.
# mkdir /home/ovirt/{data,export}
# chown vdsm:kvm /home/ovirt/{data,export}
# vi /etc/exports
/home/ovirt/iso 0.0.0.0/0.0.0.0(rw)     #rhev installer
/home/ovirt/data 0.0.0.0/0.0.0.0(rw)    #rhev installer
/home/ovirt/export 0.0.0.0/0.0.0.0(rw)  #rhev installer
# service nfs restart
Shutting down NFS daemon:                                  [  OK  ]
Shutting down NFS mountd:                                  [  OK  ]
Shutting down NFS services:                                [  OK  ]
Starting NFS services:                                     [  OK  ]
Starting NFS mountd:                                       [  OK  ]
Stopping RPC idmapd:                                       [  OK  ]
Starting RPC idmapd:                                       [  OK  ]
Starting NFS daemon:                                       [  OK  ]

И еще одна неочевидная вещь, чтобы можно было запустить виртуальные машины нужно выполнить правку в базе. Отправляем запрос через psql (предполагается что база размещается локально).
# psql -U postgres engine -c "update vdc_options set option_value='pc' where option_name LIKE 'EmulatedMachine';"
UPDATE 3

Снова заходим в веб-интерфейс и продолжаем настройку датацентра. Заходим во вкладку Host, выбираем наш добавленный хост и нажимаем кнопку Activate чтобы запустить его. Статус Non operational сменится на Up, и загорится зеленая стрелка (операция не моментальная, на моем хосте процесс активации выполнялся порядка 2-3 минут). Смотрите состояние задач в нижней части браузера во вкладке Tasks (нижний правый угол)
овирт
После того как хост перешел в состояние Up переходим к следующему шагу.
Переходим во вкладку Storage и добавляем домены хранилищ (кнопка New Domain) к уже созданному iso добавляем data и export. В качестве сервера и каталога указываем наш хост и размещенные на нем NFS каталоги.
овирт
В поцессе создания происходит подключение этих каталогов к датацентру. Если этого не произошло переходим во вкладку Data Centers и выбираем наш Default датацентр. Ниже откроется дополнительная панель. В ней нужно выполнить подключение всех (три) доменов данных Data, Iso и Export. После того как они подключатся их нужно активировать (кнопка Activate для каждого выделенного домена данных)
овирт
Как только добавили домены с данными переходим обратно в shell. Для создания виртуальных машин необходимы ISO образа. Доставляем образы любым известным способом на сервер и добавляем ISO в хранилище
# engine-iso-uploader upload -i iso /var/tmp/CentOS-6.3-x86_64-minimal.iso
Теперь можно создавать виртуальную машину. Переходим во вкладку Virtual Machines и нажимаем кнопку New Server
овирт
Указываем необходимые параметры ресурсов, в настройках связанные с загрузкой выбираем загрузку с CDROM и указываем используемый образ
овирт
Нажимаем OK и переходим ко второй части диалога, создание блочных и сетевых устройств.
овирт
Порядок неважен, добавляем диск
овирт
и сетевую карту
овирт
После добавления диска ждем завершения Task'ов (нижний правый угол) после чего запускаем машину (кнопка Run). После запуска будет доступна кнопка с изображением монитора, обозначающая подключение к консоли виртуальной машине. Используйте ее чтобы подключиться к гостю.
овирт
На этом все. Теперь можно устанавливать гостя.
Для закрепления в голове, можно запомнить такой алгоритм действий:
  • устанавливаем ovirt-engine;
  • в веб интерфейсе добавляем сами себя в качестве хоста;
  • проверяем сеть, должен быть настроен мост ovirtmgmt, физические адаптеры должны входить в него;
  • настраиваем NFS, перезапускаем необходимые службы;
  • после перезагрузки добавляем хранилища, подключаем их к датацентру и активируем их;
  • загружаем iso в хранилище;
  • создаем виртуальную машину.
Проделав такое пару раз, руки будут делать это на автомате.
Ну и от себя добавлю что на медленном компе (в моем случае Athlon II Opteron G3, 4GB RAM), oVirt весьма нетороплив, в частности, на таких операциях как активация нод, создание образов дисков.

На главную "Virtualizing Linux"

28 комментариев:

  1. здравствуйте, выражаю свою благодарность за подробную инструкцию, но возникла одна проблема, система centos 6,3 овирт 3,1, все делал как написано у Вас за исключением файла softdog.modules система начала ругаться и я его удалил, создаю ВМ делаю начальную конфигурацию, пытаюсь запустить, ВМ не запускается "Faled to run VM vm-name(user:admin@internal"
    в чем дело понять не могу не могли бы вы помочь и какую нужно информацию для выявления ошибки

    ОтветитьУдалить
  2. Привет! Такой вопрос, как ругалась система в случае подгрузки softdog.modules ?
    По поводу неудачного запуска VM, это довольно распространенная ошибка, детали нужно искать в логе запуска VM,.. на первый взгляд там все кажется непонятным, но если набраться терпения то можно найти более детальное описание причины.

    ОтветитьУдалить
  3. Спасибо за ответ, посмотреть логи уже не могу (переустановил систему, немного накосячил). Поставил 3.2 альфа где исправили softdog.modules и сетевые настройки, мост создался в автоматическом режиме как описано у вас, править в ручном режиме не пришлось. Но теперь у меня другая проблема аппаратная система ругается на аппаратный райд
    device-mapper: table: 253:3 multipath: error getting device - вот такими словами, насколько я понял не получает доступ к дискам из-за этого я теперь не могу создать хранилища.
    Не могли бы порекомендовать как лучше всего разбить диски для сервера виртуализации в общем случае и если есть аппаратный райд или может вообще не разбивать, что лучше LVM или без него.

    ОтветитьУдалить
  4. >> device-mapper: table: 253:3 multipath: error getting device
    Здесь проблема не с аппаратным рэйдом, а в cвязке multipathd + LVM. Проверяйте конфигурации.
    С разбивкой диска есть два подхода:
    1. когда используется общее внешнее дисковое хранилище, то не имеет значения как вы будете организовывать разделы - машины все равно будут находиться в общем хранилище.
    2. если машины размещаются на локальных дисках, то я предпочитаю использовать LVM на целых дисках без каких-либо разделов. Тут мы избавляемся от такой сущности как разделы и их границы и перекладываем их на LVM где они являются более гибкими.

    И еще остается вопрос аппаратного RAID, а актуально ли его использовать в современных серверах? )))

    ОтветитьУдалить
  5. По cвязке multipathd + LVM если честно не специалист, а только учусь. Можно ссылку на то как должно быть.
    Аппаратный райд 5 для для отказоустойчивости, диски с горячей заменой(ну я так думаю, хотя уже начал сомневаться).

    ОтветитьУдалить
  6. Добрый день, установил свежий Centos, далее следовал вашим инструкциям, только при настройке engine-setup указал "server.localdomain", при попытке залогиниться с другой машины в веб интерфейсе, перенапрвлял на "server.localdomain". Решил тогда заного перенастроить engine-setup и указать вместо "server.localdomain" ip адрес, но установка заканчивается провалом:

    Creating Database... [ ERROR ]
    Database creation failed

    Не подскажите как быть в такой ситуации? Пароль везде один и тотже указывал.

    ОтветитьУдалить
  7. Добрый день! при повторном запуске engine-setup, старые ошметки лучше вычистить(каталоги и базы) и проверить не запустил ли он каких сервисов, потушить их если они запущены."

    ... вспомнил, там есть engine-cleanup

    ОтветитьУдалить
  8. я его тоже нашел, но к сожалению после того как в ручную снёс /home/ovirt/iso((

    ОтветитьУдалить
  9. 3й день, максимум добился работы 3.1 при ручном создании бд, но ругаетс на каталог nfs(( мб поделитесь кто какую версию скуля использует?

    ОтветитьУдалить
  10. я использовал postgresql, 9.0 или 9.1 точно не вспомню.

    ОтветитьУдалить
  11. В pg_hba разрешил возможность trust подключения с локального узла где стоял ovirt.
    В целях дебага можно перевести всё на trust и проверить создание бд

    ОтветитьУдалить
  12. Установил всё по инструкции, но дальше чем авторизации в wеb форме дело не идет. Ввожу логин "admin" и пароль, который задавал при конфигурировании engine. (собственно пароль везде одинаковый пока). Ввожу данные и висит...

    ОтветитьУдалить
  13. Здравствуйте. Огромное спасибо за столь доходчивую статью.
    Однако, при попытке залить образ, выдает ошибку следующего содержания:
    ERROR: [ERROR]::ca_file (CA certificate) must be specified for SSL connection.

    ОтветитьУдалить
    Ответы
    1. Привет! на моей памяти в 3.1 не было использования SSL, скорей всего это уже нововведение (хотя могу и ошибаться). Посмотрите здесь, вроде это ваш случай
      http://lists.ovirt.org/pipermail/users/2012-October/010220.html

      Удалить
  14. Добрый день, Алексей!

    Начинаем, как у Вас написано - с Minimal.

    yum install ovirt-engine
    выдает вот такое:

    Error: Package: ovirt-engine-cli-3.2.0.10-1.el6.noarch (ovirt32-dre)
    Requires: python-kitchen
    Error: Package: ovirt-engine-cli-3.2.0.10-1.el6.noarch (ovirt32-dre)
    Requires: python-ply
    You could try using --skip-broken to work around the problem
    You could try running: rpm -Va --nofiles --nodigest


    Ни python-kitchen, ни pythin-ply - естественно, не бьются по зарегистрированным репозиториям.

    Как быть? :-)
    Заранее спасибо!

    ОтветитьУдалить
    Ответы
    1. Добрый день! попробуйте установить эти пакеты из EPEL.

      Удалить
  15. Да, так и поступил. :-)

    Спасибо!

    ОтветитьУдалить
  16. > # psql -U postgres engine -c "update vdc_options set option_value='pc' where option_name LIKE 'EmulatedMachine';"

    по идее это не верно, emulatedMachine должен быть RHEL6.3 (можно посмотреть в virsh capabilities) - опция определяет что попадет в свич -M передаваемый qemu-kvm

    ОтветитьУдалить
    Ответы
    1. В тот момент с текущим значением виртуалки попросту не запускались, в текущей версии возможно это не нужно и бага скорей всего пофикшена (в ближайшее время нужно будет разворачивать ovirt, хоть посмотрю что там вообще в базе). И если emulatedMachine действительно определяет то что попадает в -M, то pc имхо выглядит вполне логично, т.к. является дефолтным алиасом на последнюю поддерживаемую версию machine и будет универсальным значением для всех узлов виртуализации.

      Удалить
    2. там были свои проблемы с pc насколько я помню. на самом деле надо посмотреть на значения в RHEV - там все оттестировано и вылизано

      Удалить
    3. да. совсем забыл, все опции vdc_options доступны через ovirt-config, незачем в базу лазить

      Удалить
  17. Этот комментарий был удален автором.

    ОтветитьУдалить
  18. собрал связку ovirt+ipa. как поменять в ovirt порт на https отличный от 443?

    ОтветитьУдалить
    Ответы
    1. смотрите конфигурацию apache в /etc/httpd/conf.d/ssl.conf

      Удалить
  19. не могу создать никак хост, беда просто какаято,
    так же при создании меняет правила iptables ...и отрубает web мордочку, хост пыаюсь создать на той же машине где стоит ovirt... есть мысли как исправить?
    Host 23555 is installed with VDSM version (Non interactive user) and cannot join cluster asd which is compatible with VDSM versions [4.13, 4.14, 4.9, 4.11, 4.12, 4.10]. и все...

    ОтветитьУдалить
    Ответы
    1. vdsm и engine на одном хосте это all-in-one, не стандартная установка. http://www.ovirt.org/Feature/AllInOne

      Удалить

Популярные сообщения

Профиль в Google+ Яндекс цитирования Яндекс.Метрика