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



На жаль, розвиток 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, або установкою ось цього патча.

У 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. Ось більш докладне керівництво для тих, хто не розібрався.

П'ять основних проблем 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) Докладне керівництво по оновленню proxmox 3->4;
2) Опис проблеми зі швидкістю дисків в lxc: раз два три;
3) Підтримка proxmox 3.x закінчиться в квітні 2016;
4) Тред, чому lxc поганий;
5) Як смигрировать c lxc назад в openvz.

Сподіваюся, цей пост збереже комусь купу часу.

Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.