- PVSM.RU - https://www.pvsm.ru -

Проблемы после миграции с openvz на lxc в Proxmox 4.x

Проблемы после миграции с openvz на lxc в Proxmox 4.x - 1

К сожалению, развитие openvz зашло в определенный тупик, платный вариант virtuozo сильно ушел по кодовой базе в бок и в какой-то момент оказалось, что openvz работает только на старом ядре версии 2.6.32, а работы по слиянию openvz и virtuozo7 идут, сказать честно, не быстро.

Собственно это подтолкнуло команду proxmox в версии 4.0 отказаться от openvz в пользу lxc и ядра версии 4.2.6. К сожалению, команда proxmox совершенно не уделила внимания тестированию lxc в proxmox, всем, кто хочет хочет мигрировать с openvz, я настоятельно рекомендую воздержаться.

Ниже я расскажу о всех трудностях и проблемах после миграции на lxc.

Я пробовал несколько раз уже lxc, сказать честно, он был полон детских проблем, и это каждый раз меня отталкивало от использования его в продакшене, а хоумпаги я могу похостить и на openvz без детских проблем lxc, даже тот же докер намного дальше ушел в стабильности и предсказуемости.

Из глобальных проблем openvz мне вспоминается только проблема в centos 7 где не подымалась сеть, и надо было дефолтроут прописать ручками в rc.local, или установкой вот этого патча [1].

В lxc оказалось все намного хуже, я переходил на него с openvz, когда вышла версия proxmox 4.1, я честно думал все будет работать в lxc ожидаемо и стабильно, как в винде после первого сервис пака. Плюсом было конвертнуть бекап openvz в lxc двумя командами, но к сожалению переезд в итоге откликнулся мучительной болью и кучей потеряного времени, лучше бы я ещё годик посидел на openvz.

lzop -d vzdump-openvz-126-2016_01_27-11_08_32.tar.lzo
pct restore 126 vzdump-openvz-126-2016_01_27-11_08_32.tar --rootfs local:0

Опцию убирающую дисковую квоту --rootfs local:0 используйте если у вас хранилище не на lvm или zfs. Вот более подробное руководство [2] для тех, кто не разобрался.

Пять основных проблем lxc которые я встретил:

  • В centos 6 пхп не коннектиться к сокету mysql, надо везде прописывать вместо localhost айпи 127.0.0.1, долго рыл эту проблему но решения не нашел, сперва думал это связано с тем, что я конвертил из openvz, но на свежей инсталяции lxc centos 6 наблюдается такая же проблема. Пробовал ставить percona 5.6 проблема сохраняется.
  • Чудовищно медленная работа lxc в image base, то есть если файлы храняйтся в виде образа диска на хостовой машине то производительности дисковой подсистемы падает в разы, от 3 до 20 раз. Я не тестил lxc на lvm и zfs. На lvm до сих пор нет thin provision, но обещают в следующих версиях. У меня довольно много всего развернуто в image base в kvm и там есть определенный оверхед на записать на диск, но он измеряется в процента, даже наверно не в десятках процентов, но такого подвоха чтобы запись в mysql стала в 20 раз медленее от lxc в proxmox я не ожидал. Вылечил в итоге хранением файлов гостей напрямую в файловой системе хоста как в openvz. При этом не работают дисковые квоты, но так как места навалом и стоит мониторинг места то забил на квоты, хотя для ссд систем дисковые квоты более актуальны. При создании и востановление указывайте опцию --rootfs local:0, из вебинтерфейса к сожалению этого сделать нельзя.
  • Не работающие бекапы lxc, бекап proxmox просто зависал на suspend vm даже в версии proxmox 4.1, этот баг пофиксили буквально 2 марта.
  • Оно реально медленнее openvz.
  • Два контейнера у меня намертво зависли и их не получилось убить никакими способами, сервер мягко ребутнуть тоже из за них не получилось в итоге пришлось сделать ресет кнопкой на сервере.

Проблемы миграции:

  • Не удалось запустить нормально дебиан 6 после конвертации в lxc, точно не помню в чем была проблема, но в связи с тем что дебиан 6 сильно легаси, перенес все приложения в свежий debian 8 руками.
  • Выше уже упомянал что php не коннектиться к mysql по socket.
  • В centos 6 не подымается сеть из за переименования сетевых интерфейсов с venet на eth0, надо зайти в контейнер с хоста через pct enter ID и выполнить команды
    sed -i -e 's/venet0/eth0/g' /etc/sysconfig/network
    rm -rf /etc/sysconfig/network-scripts/ifcfg-venet0:0
    rm -rf /etc/sysconfig/network-scripts/ifcfg-venet0
    reboot
  • Нельзя зайти в контейнер redhat based по ssh из за отсутствия tty, как то криво отрабатывает udev после конвертации, полечил вот так
    pct enter ID
    sed -i -e 's/start_udev/false/g' /etc/rc.d/rc.sysinit
    reboot

FYI:

1) Подробное руководство [3] по обновлению proxmox 3->4;
2) Описание проблемы со скоростью дисков в lxc: раз [4], два [5], три [6];
3) Поддержка proxmox 3.x закончится в апреле 2016;
4) Тред [7], почему lxc плохой;
5) Как смигрировать [8] c lxc обратно в openvz.

Надеюсь, этот пост сохранит кому-нибудь кучу времени.

Автор: opium

Источник [9]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/virtualizatsiya/114472

Ссылки в тексте:

[1] вот этого патча: https://forum.proxmox.com/threads/fix-for-centos-7-container-networking.22770/

[2] более подробное руководство: https://pve.proxmox.com/wiki/Convert_OpenVZ_to_LXC

[3] руководство: https://pve.proxmox.com/wiki/Upgrade_from_3.x_to_4.0

[4] раз: https://forum.proxmox.com/threads/performance-issue-with-proxmox-4-high-io-delay.26012/

[5] два: https://forum.proxmox.com/threads/proxmox-4-lxc-chroot-instead-of-raw-images.22881/#post-115032

[6] три: https://forum.proxmox.com/threads/high-wait-io-after-and-load-average-upgrade-to-proxmox-4.25128/

[7] Тред: https://forum.proxmox.com/threads/moving-to-lxc-is-a-mistake.25603/

[8] Как смигрировать: https://forum.proxmox.com/threads/can-lxc-backup-be-restored-to-openvz.25262/#post-128805

[9] Источник: https://habrahabr.ru/post/278877/