Показаны сообщения с ярлыком виртуализация. Показать все сообщения
Показаны сообщения с ярлыком виртуализация. Показать все сообщения

среда, 29 мая 2013 г.

Потеря кворума в Proxmox

Proxmox - достаточно гибкая система виртуализации. С его помощью можно построить как многонодовые кластеры с High Availability, так и запустить пару виртуалок на отдельном серваке. В моем случае используется 2 сервера с общим хранилищем бекапов на nfs.
Не буду вдаваться в теорию настройки (можно почитать в wiki), упомяну только, что для управления кластером необходим непрерывный доступ к общему хранилищу, даже если оно используется раз в несколько дней. Однако бывают ситуации, когда этот самый доступ неожиданно пропадает. Сетевое оборудование, например, заглючило, или nfs понадобилось перезагрузить.И вот тогда начинаются проблемы. Нет, с виртуалками все нормально - работают, доступны, настраиваются. А вот с бекапом, миграцией, созданием и удалением все не так радужно. Дело в том, что ноды кластера теряют кворум.
При входе в веб интерфейс Proxmox это заметно по состоянию нод:


Та, на которую залогинились, зеленая, вторая - красная.
При попытке выполнить задание получаем результат:


Упс... Что делать?
Пробуем дергать сервисы:
/etc/init.d/cman restart - не помогает
/etc/init.d/rgmanager restart - мимо
/etc/init.d/pve-manager restart - не то
/etc/init.d/pve-cluster restart - 8(
/etc/init.d/pve-daemon restart - все, демоны кончились.

Да что такое! Я ведь помню, что реанимировал кластер в прошлый раз именно таким образом. Собственно, я не помню последовательность перезапуска, поэтому и начал писать заметку на память.
Лезу в историю команд, выявлять закономерность. Ага, в прошлый раз были cman, rgmanager и pve-cluster, а сейчас pve-manager еще затесался. Делаю как раньше - кворум!


Судя по выводу в консоль при выполнении команд, к нашей проблеме имеют отношение только cman и pve-cluster, остальное можно не дергать. Так это или нет - проверю в следующий раз.

понедельник, 6 мая 2013 г.

Миграция между локальными хранилищами в Proxmox.

Обнаружил что я необычайно туп.
Около года занимаюсь администрированием класьера из 2 нод на базе Proxmox. Сначала система была организована с использованием drbd, однако производительность дисковой подсистемы оставляла желать лучшего. Нагруженные виртуальные машины (например сервер 1С, терминальный сервер или сервер баз данных) нельзя было разместить в таком хранилище, а оставшиеся несколько (ldap, DC, мониторинг) имели очень маленький объем, и в случае чего восстанавливались из бэкапа буквально за пару минут. После очередного split brain я заменил HDD в серверах на SAS и переконфигурировал кластер с использованием только локальных хранилищ. Честно говоря, проблем с его обслуживанием стало намного меньше (когда я словил первый split brain прошлым летом, мне даже пришлось пропустить корпоратив на Алтае - автобус с коллегами устал ждать пока я все починю 8( ). Единственным минусом для меня была невозможность миграции межу серверами. Для переноса виртуальной машины я сначала архивировал ее, потом восстанавливал на другой ноде, гасил на первой и включал на второй. Согласитесь, весьма времязатратное мероприятие. Если же все-таки провести миграцию, то виртуальная машина с конфигами переместится на другую ноду, но образ диска останется на первой:



 После этого можно с помощь scp скопировать фай образа, однако это же не комильфо...
Я даже писал на официальном форуме, но ответа не получил.
Но сегодня мои мучения подошли к концу! Когда я бороздил просторы Хабра. то натолкнулся на цикл статей по использованию кластера Proxmox: статья1, статья2. статья3. Потребности у нас с автором разные, соответственно настройки тоже. Однако некоторые рассуждения натолкнули меня на мысль поэкспериментировать.
Итак...
В настройках хранилища Proxmox есть одна любопытная опция "Общедоступно". По примеру доставшегося мне в наследство хранилища на drbd,я всегда ставил там галку. Но подумайте, что она означает? Эта галочка означает, что все сервера в кластере имеют прямой доступ к данному хранилищу, то есть могут туда свободно писать и читать. Ведь для локального хранилища это не так! Убираем галочку:


Миграция тут же проходит успешно:

К сожалению, между хранилищами одной ноды так мигрировать нельзя, но будем надеяться для этого появятся свои инструменты.
Или я опять не догоняю?