oVirt — часть 5 — High Availability

    2014-03-21 00:21 | Автор: jekader | Filed under: Jekader

    Возможности High Availability для виртуальных машин в oVirt 3.3

    Использованный в тестах эмулятор iLO выложил на GitHub

    1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
    Loading...

    Метки:

    19 комментариев »


    комментариев 19

    1. Anton:

      Приветствую, Евгений.

      Собрал стенд для ознакомления, так сказать, с технологией. oVirt Engine Version: 3.5.0.1-1.el6

      Делаю все как в видео примерах. Только Power Managmet — idarc5. Но обнаружилось странное, как на мой взгляд, поведение фичи под названием High Availability. Делаю такой же тест как в видео. Тушим сеть на одном из хостов и через некоторое время менеджер дает команду на остановку (!) этого хоста. Т.е. в примере проблемный хост перезапускается, а у меня останавливается и ничего не происходит. Аналогичная ситуация наблюдается если в выпадающем меню Power Management выбрать опцию Restart — хост останавливается, а не перезапускается.

      В логах менеджера в том месте где должна быть команда перезапуска менеджер дает две команды с action = Status, а затем две команды action = Stop. Все команды выдаются с интервалом 13-14 секунд.

      Сталкивались ли Вы с таким поведением или я что-то делаю не так?

    2. jekader:

      очень похоже на вот этот баг с недостаточно длинным tomeout:
      https://bugzilla.redhat.com/show_bug.cgi?id=1093742

      Как вариант можно попробовать добавить в fencing options более крупное значение:

      power_wait=20

    3. Anton:

      Это действительно работает, для ipmilan. А вот для drac5 — нет.

    4. Anton:

      Для агента типа drac5
      Options пишем такие:
      cmd_prompt=admin1->, power_wait=20

      Выбираем «Power Management -> Restart»

      2014-12-22 12:11:00,807 INFO [org.ovirt.engine.core.vdsbroker.vdsbroker.FenceVdsVDSCommand] (ajp—127.0.0.1-8702-10) START, FenceVdsVDSCommand(HostName = vps1-test, HostId = 26884f77-9b42-4189-8fde-24c8c0a479c6, targetVdsId = 4993e935-289c-4772-b85f-8a583cd26139, action = Status, ip = 10.123.123.5, port = , type = drac5, user = User1, password = ******, options = ‘secure=true,cmd_prompt=admin1->, power_wait=20’, policy = ‘null’), log id: 16e75748

      2014-12-22 12:11:20,169 INFO [org.ovirt.engine.core.vdsbroker.vdsbroker.FenceVdsVDSCommand] (org.ovirt.thread.pool-8-thread-21) [30aee9f3] START, FenceVdsVDSCommand(HostName = vps1-test, HostId = 26884f77-9b42-4189-8fde-24c8c0a479c6, targetVdsId = 4993e935-289c-4772-b85f-8a583cd26139, action = Status, ip = 10.123.123.5, port = , type = drac5, user = User1, password = ******, options = ‘secure=true,cmd_prompt=admin1->, power_wait=20’, policy = ‘null’), log id: 1a74ed86

      2014-12-22 12:11:30,604 INFO [org.ovirt.engine.core.vdsbroker.vdsbroker.FenceVdsVDSCommand] (org.ovirt.thread.pool-8-thread-21) [3c075718] START, FenceVdsVDSCommand(HostName = vps1-test, HostId = 26884f77-9b42-4189-8fde-24c8c0a479c6, targetVdsId = 4993e935-289c-4772-b85f-8a583cd26139, action = Stop, ip = 10.123.123.5, port = , type = drac5, user = User1, password = ******, options = ‘secure=true,cmd_prompt=admin1->, power_wait=20’, policy = ‘null’), log id: 737c3e4a

      2014-12-22 12:12:00,186 INFO [org.ovirt.engine.core.vdsbroker.vdsbroker.FenceVdsVDSCommand] (org.ovirt.thread.pool-8-thread-21) [3c075718] START, FenceVdsVDSCommand(HostName = vps3-test, HostId = 33126b35-69bd-4a69-8831-5ebd69f8c39e, targetVdsId = 4993e935-289c-4772-b85f-8a583cd26139, action = Stop, ip = 10.123.123.5, port = , type = drac5, user = User1, password = ******, options = ‘secure=true,cmd_prompt=admin1->, power_wait=20’, policy = ‘null’), log id: 15191a33

      Сервер выключен и ничего не происходит.
      Снова выбираем «Power Management -> Restart»

      2014-12-22 12:19:40,327 INFO [org.ovirt.engine.core.vdsbroker.vdsbroker.FenceVdsVDSCommand] (org.ovirt.thread.pool-8-thread-15) [766d4e56] START, FenceVdsVDSCommand(HostName = vps3-test, HostId = 33126b35-69bd-4a69-8831-5ebd69f8c39e, targetVdsId = 4993e935-289c-4772-b85f-8a583cd26139, action = Status, ip = 10.123.123.5, port = , type = drac5, user = User1, password = ******, options = ‘secure=true,cmd_prompt=admin1->, power_wait=20’, policy = ‘null’), log id: 15ea0b9b

      2014-12-22 12:19:51,882 INFO [org.ovirt.engine.core.vdsbroker.vdsbroker.FenceVdsVDSCommand] (org.ovirt.thread.pool-8-thread-15) START, FenceVdsVDSCommand(HostName = vps3-test, HostId = 33126b35-69bd-4a69-8831-5ebd69f8c39e, targetVdsId = 4993e935-289c-4772-b85f-8a583cd26139, action = Start, ip = 10.123.123.5, port = , type = drac5, user = User1, password = ******, options = ‘secure=true,cmd_prompt=admin1->, power_wait=20’, policy = ‘null’), log id: 5454e478

      2014-12-22 12:20:21,963 INFO [org.ovirt.engine.core.vdsbroker.vdsbroker.FenceVdsVDSCommand] (org.ovirt.thread.pool-8-thread-15) START, FenceVdsVDSCommand(HostName = vps1-test, HostId = 26884f77-9b42-4189-8fde-24c8c0a479c6, targetVdsId = 4993e935-289c-4772-b85f-8a583cd26139, action = Start, ip = 10.123.123.5, port = , type = drac5, user = User1, password = ******, options = ‘secure=true,cmd_prompt=admin1->, power_wait=20’, policy = ‘null’), log id: 466020b3

      2014-12-22 12:22:40,741 INFO [org.ovirt.engine.core.vdsbroker.vdsbroker.FenceVdsVDSCommand] (DefaultQuartzScheduler_Worker-100) [49102af9] START, FenceVdsVDSCommand(HostName = vps3-test, HostId = 33126b35-69bd-4a69-8831-5ebd69f8c39e, targetVdsId = 4993e935-289c-4772-b85f-8a583cd26139, action = Status, ip = 10.123.123.5, port = , type = drac5, user = User1, password = ******, options = ‘secure=true,cmd_prompt=admin1->, power_wait=20’, policy = ‘null’), log id: 42935916

      Как на мой взгляд, имеет место быть кривая реализация последовательности выдаваемых запросов.

    5. Anton:

      Для агента типа ipmilan
      Options такие:
      lanplus=1, power_wait=20

      2014-12-22 12:28:29,348 INFO [org.ovirt.engine.core.vdsbroker.vdsbroker.FenceVdsVDSCommand] (org.ovirt.thread.pool-8-thread-3) [38862aa0] START, FenceVdsVDSCommand(HostName = vps1-test, HostId = 26884f77-9b42-4189-8fde-24c8c0a479c6, targetVdsId = 4993e935-289c-4772-b85f-8a583cd26139, action = Status, ip = 10.123.123.5, port = , type = ipmilan, user = User1, password = ******, options = ‘lanplus=1, power_wait=20’, policy = ‘null’), log id: 646a209f

      2014-12-22 12:28:29,893 INFO [org.ovirt.engine.core.vdsbroker.vdsbroker.FenceVdsVDSCommand] (org.ovirt.thread.pool-8-thread-3) [1628da02] START, FenceVdsVDSCommand(HostName = vps1-test, HostId = 26884f77-9b42-4189-8fde-24c8c0a479c6, targetVdsId = 4993e935-289c-4772-b85f-8a583cd26139, action = Stop, ip = 10.123.123.5, port = , type = ipmilan, user = User1, password = ******, options = ‘lanplus=1, power_wait=20’, policy = ‘null’), log id: 60035cbe

      2014-12-22 12:28:55,490 INFO [org.ovirt.engine.core.vdsbroker.vdsbroker.FenceVdsVDSCommand] (org.ovirt.thread.pool-8-thread-3) [1628da02] START, FenceVdsVDSCommand(HostName = vps1-test, HostId = 26884f77-9b42-4189-8fde-24c8c0a479c6, targetVdsId = 4993e935-289c-4772-b85f-8a583cd26139, action = Status, ip = 10.123.123.5, port = , type = ipmilan, user = User1, password = ******, options = ‘lanplus=1, power_wait=20’, policy = ‘null’), log id: 5e0b5dd4

      2014-12-22 12:28:56,354 INFO [org.ovirt.engine.core.vdsbroker.vdsbroker.FenceVdsVDSCommand] (org.ovirt.thread.pool-8-thread-3) START, FenceVdsVDSCommand(HostName = vps1-test, HostId = 26884f77-9b42-4189-8fde-24c8c0a479c6, targetVdsId = 4993e935-289c-4772-b85f-8a583cd26139, action = Start, ip = 10.123.123.5, port = , type = ipmilan, user = User1, password = ******, options = ‘lanplus=1, power_wait=20’, policy = ‘null’), log id: 6f98cd50

      2014-12-22 12:29:21,903 INFO [org.ovirt.engine.core.vdsbroker.vdsbroker.FenceVdsVDSCommand] (org.ovirt.thread.pool-8-thread-3) START, FenceVdsVDSCommand(HostName = vps1-test, HostId = 26884f77-9b42-4189-8fde-24c8c0a479c6, targetVdsId = 4993e935-289c-4772-b85f-8a583cd26139, action = Status, ip = 10.123.123.5, port = , type = ipmilan, user = User1, password = ******, options = ‘lanplus=1, power_wait=20’, policy = ‘null’), log id: 6141c0dc

      А в этом случае работает, и команды выдаются в логичной последовательности.

    6. jekader:

      Да, что-то там не так с порядком отдачи команд. Если есть IPMI то лучше всего им и пользоваться, и попутно открыть баг на тему агента drac5. Я знаю точно что iDRAC6 поддверживается только через ipmilan, а DRAC5 это уже что-то более старое уровня PE2950 восьмилетней давности. Может и от прошивки зависит — но если IPMI работает то я-б воспользовался им как самым простым решением вопроса.

    7. Anton:

      Собственно я уже ставил этот параметр для drac5, и ставил его =40, но это не помогло. Долго искал где же еще можно поменять этот параметр, но судя по коду, это значение прописано в одном месте в
      backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/config/ConfigValues.java

      А потом обнаружил, что моими железяками можно рулить через ipmilan реализацю fencing и вот там то этот параметр работает.

      Такие вот страдания )

    8. Anton:

      >> iDRAC6 поддверживается только через ipmilan,
      Хм. У меня железяка вообще-то с idrac7, но ее заставить работать через drac7 мне не удалось.
      Значит будем пользоваться ipmilan. Спасибо за ответы.

    9. jekader:

      DRAC6 и новее работает только через IPMI, по крайней мере для RHEL6 это так:
      https://access.redhat.com/articles/28603

      в oVirt используются абсолютно те-же fencing agents что и в RHEL.

    10. Edman Welch:

      jekader, салют!

      Запускаю на ноде /usr/bin/ilo.py, тестирую подключение и вот такая чепуха вылетает:
      libvirt: XML-RPC error : authentication failed: Failed to start SASL negotiation: -4 (SASL(-4): no mechanism available: No worthy mechs found)
      Traceback (most recent call last):
      File «/usr/bin/ilo.py», line 102, in
      response=’HOST_POWER=»‘ + print_vm_status(username) + ‘»‘
      File «/usr/bin/ilo.py», line 10, in print_vm_status
      conn = libvirt.open(‘qemu:///system’)
      File «/usr/lib64/python2.6/site-packages/libvirt.py», line 236, in open
      if ret is None:raise libvirtError(‘virConnectOpen() failed’)
      libvirt.libvirtError: authentication failed: Failed to start SASL negotiation: -4 (SASL(-4): no mechanism available: No worthy mechs found)
      [root@node2 fake_ilo]# /usr/bin/ilo.py
      libvirt: XML-RPC error : authentication failed: Failed to start SASL negotiation: -4 (SASL(-4): no mechanism available: No worthy mechs found)
      Traceback (most recent call last):
      File «/usr/bin/ilo.py», line 102, in
      response=’HOST_POWER=»‘ + print_vm_status(username) + ‘»‘
      File «/usr/bin/ilo.py», line 10, in print_vm_status
      conn = libvirt.open(‘qemu:///system’)
      File «/usr/lib64/python2.6/site-packages/libvirt.py», line 236, in open
      if ret is None:raise libvirtError(‘virConnectOpen() failed’)
      libvirt.libvirtError: authentication failed: Failed to start SASL negotiation: -4 (SASL(-4): no mechanism available: No worthy mechs found)

      Все сделал по мануалу, чё ему не нравится?

    11. jekader:

      Похоже что libvirt требует аутентификации, а мой скрипт это не умеет.

      http://wiki.libvirt.org/page/Tips#The_connection_fails_using_md5_digest_auth

      Решение — или отключить аутентификацию на стороне libvirt или допилить скриптец чтобы тот умел отправлять пользователя/пароль (и прислать pull request естественно).

    12. Al:

      Добрый день, Евгений.
      Еще раз спасибо за видео.

      Все прекрасно показано за исключением работы fake ilo.
      К сожалению у меня нет железных серверов с IPMI, чтобы проверить HA, поэтому ставил ваш замечательный fake ilo на CentOS 7 c libvirt, где созданы три ВМ —
      1. Engine
      2. Node1
      3. Node2

      После проверки командой с node1:
      fence_ilo -a 10.0.10.100 -u 1234 -l server -p server -o status

      Вываливается ошибка на хосте с libvirt:
      ssl.SSLError: [SSL: SSLV3_ALERT_BAD_CERTIFICATE] sslv3 alert bad certificate (_ssl.c:765)

      Как ее побороть, так и не нашел способа. Как не пытался…

      Помогите пожалуйста с этим вопросом.

      Заранее спасибо.

    13. Al:

      Если скопировать сертификаты на Node1 и ввести тест:
      openssl s_client -host 10.0.10.100 -port 1234 -cert server.crt -key server.key

      Коннект есть!

      Но как заставить fence_ilo использовать сертификаты, ни как пока не пойму.

    14. Al:

      Если запустить так, то все работает:
      # fence_ilo —ssl-insecure -z -a 10.0.10.100 -u 1234 -l ovirt-kvm2 -p ovirt-kvm2 -o status
      Status: ON

      # fence_ilo —ssl-insecure -z -a 10.0.10.100 -u 1234 -l ovirt-kvm2 -p ovirt-kvm2 -o reboot
      Success: Rebooted

    15. Al:

      Вопрос снят, в настройках фенсинга опция — ssl_insecure=1
      И все супер!!!

      Спасибо

    16. jekader:

      Видел комментарий на youtube. Странно что требуется ssl-insecure — отродясь не видел iLO/iDRAC/etc с «правильными» сертификатами. Да и в CentOS6 у меня на видео всё работало и без этой опции.

    17. Al:

      Так я не знаю как сертификаты прикрутить на нодах. И походу fence_ilo берет дефолтный сертификат, и с ним пытается авторизоваться на ilo.py.
      Разумеется последний начинает ругаться и писать что сертификат левый:
      ssl.SSLError: [SSL: SSLV3_ALERT_BAD_CERTIFICATE] sslv3 alert bad certificate (_ssl.c:765)

      Запарился с ним воевать. Думал уже руки крюки растут из одного места.
      Полез даже в документацию по Python’у, думал может версия Пайтона в CentOS 7 поменялась, и трабла в этом. Но чувствовал что затык именно в авторизации, вообщем мне повезло, что вопрос решился))))

      И все таки, хотелось бы увидеть видео по балансировке нагрузки aka VMware DRS.
      А то народ на форумах думает что oVirt — это подделка сделанная на коленке.
      Хотя на самом деле, там все есть, кроме Fault Tolerance.
      Если будете делать видео, добавьте еще Affinity Group и другие полезные вещи.

    18. jekader:

      Я кажется рассказал про Optoplanner в 10 части, в обзоре новых плюшек 3.5

    19. Al:

      Обзор есть. Но не понятно как оно работает, нету живых примеров на подобие HA.
      Это конечно придирки, но если время будет, сделайте пожалуйста.

    Leave a comment

    *