Како пренети ОпенВЗ 6 контејнер на КВМ сервер без главобоље

Свако ко је барем једном у животу морао да пренесе ОпенВЗ контејнер на сервер са пуном КВМ виртуелизацијом наишао је на неке проблеме:

  • Већина информација је једноставно застарела и била је релевантна за оперативне системе који су одавно прошли ЕОЛ циклус
  • За различите оперативне системе увек се дају различите информације, а могуће грешке током миграције се никада не разматрају
  • Понекад морате да се носите са конфигурацијама које с времена на време не желе да раде након миграције

Када пренесете 1 сервер, увек можете нешто поправити у ходу, али када пренесете цео кластер?

У овом чланку ћу покушати да вам кажем како да исправно мигрирате ОпенВЗ контејнер на КВМ са минималним застојима и брзим решењем за све проблеме.

Мали образовни програм: шта је ОпенВЗ, а шта КВМ?

Нећемо улазити дубоко у терминологију, већ ћемо рећи уопштено:

ОпенВЗ — виртуелизација на нивоу оперативног система, можете је чак применити и на микроталасној, пошто нема потребе за ЦПУ инструкцијама и технологијама виртуелизације на главној машини.

квм - пуна виртуелизација, која користи сву снагу ЦПУ-а и способна да виртуелизује било шта, на било који начин, пресецајући то по дужини и попречно.

Супротно популарном веровању да ће међу хостинг провајдерима ОпенВЗ постати препродат, али КВМ неће - на срећу потоњег, КВМ је сада препродат ништа горе од свог брата.

Шта ћемо пренети?

Као тестирани субјекти за пренос, морали смо да користимо читаву шуму оперативних система који су доступни на ОпенВЗ-у: ЦентОС (6 и 7 верзије), Убунту (14, 16 и 18 ЛТС), Дебиан 7.

Претпостављало се да већина ОпенВЗ контејнера већ користи неку врсту ЛАМП-а, а неки чак имају и врло специфичан софтвер. Најчешће су то биле конфигурације са ИСПманагер-ом, ВестаЦП контролном таблом (и најчешће нису ажуриране годинама). Њихови захтеви за трансфер такође се морају узети у обзир.

Миграција се врши уз очување ИП адресе пренетог контејнера; претпоставићемо да је ИП који је контејнер имао сачуван на ВМ-у и да ће радити без проблема.

Пре преноса, уверимо се да имамо све при руци:

  • ОпенВЗ сервер, потпуни роот приступ главној машини, могућност заустављања/монтаже/покретања/брисања контејнера
  • КВМ сервер, потпуни роот приступ главној машини, са свим оним што подразумева. Претпоставља се да је све већ конфигурисано и спремно за рад.

Почнимо са преносом

Пре него што започнемо пренос, хајде да дефинишемо термине који ће вам помоћи да избегнете забуну:

КВМ_НОДЕ - КВМ хост машина
ВЗ_НОДЕ - ОпенВЗ хост машина
ЦТИД - ОпенВЗ контејнер
VM - КВМ виртуелни сервер

Припрема за миграцију и креирање виртуелних машина.

Корак КСНУМКС

Пошто морамо негде да померимо контејнер, креираћемо VM са сличном конфигурацијом као КВМ_НОДЕ.
Важно! Морате да креирате ВМ на оперативном систему који тренутно ради на ЦТИД-у. На пример, ако је Убунту 14 инсталиран на ЦТИД, онда Убунту 14 мора бити инсталиран на ВМ. Мање верзије нису важне и њихова неслагања није толико критична, али главне верзије треба да буду исте.

Након креирања ВМ-а, ажурираћемо пакете на ЦТИД-у и на ВМ-у (не треба мешати са ажурирањем ОС-а - ми га не ажурирамо, само ажурирамо пакете и, ако стигне, верзију ОС-а у оквиру главног верзија).

За ЦентОС овај процес изгледа безопасно:

# yum clean all
# yum update -y

И ништа мање безопасно за Убунту и Дебиан:

# apt-get update
# apt-get upgrade

Корак КСНУМКС

Инсталирај на ЦТИД, ВЗ_НОДЕ и VM корисност рсинц:

ЦентОС:

# yum install rsync -y

Дебиан, Убунту:

# apt-get install rsync -y

Ништа друго не уграђујемо ни тамо ни тамо.

Корак КСНУМКС

Заустављамо се ЦТИД на ВЗ_НОДЕ тим

vzctl stop CTID

Монтирање слике ЦТИД:

vzctl mount CTID

Идите у фасциклу /вз/роот/ЦТИД и извршити

mount --bind /dev dev && mount --bind /sys sys && mount --bind /proc proc && chroot .

Под роот-ом креирајте датотеку /роот/екцлуде.ткт - она ​​ће садржати листу изузетака који неће доћи до новог сервера

/boot
/proc
/sys
/tmp
/dev
/var/lock
/etc/fstab
/etc/mtab
/etc/resolv.conf
/etc/conf.d/net
/etc/network/interfaces
/etc/networks
/etc/sysconfig/network*
/etc/sysconfig/hwconf
/etc/sysconfig/ip6tables-config
/etc/sysconfig/kernel
/etc/hostname
/etc/HOSTNAME
/etc/hosts
/etc/modprobe*
/etc/modules
/net
/lib/modules
/etc/rc.conf
/usr/share/nova-agent*
/usr/sbin/nova-agent*
/etc/init.d/nova-agent*
/etc/ips
/etc/ipaddrpool
/etc/ips.dnsmaster
/etc/resolv.conf
/etc/sysconfig/network-scripts/ifcfg-eth0
/etc/sysconfig/network-scripts/ifcfg-ens3

Povezujemo se sa КВМ_НОДЕ и покренути наше VMтако да ради и да је доступан преко мреже.

Сада је све спремно за трансфер. Иди!

Корак КСНУМКС

Још увек под чаролијом, наступамо

rsync --exclude-from="/root/exclude.txt" --numeric-ids -avpogtStlHz --progress -e "ssh -T -o Compression=no -x" / root@KVM_NODE:/

Команда рсинц ће извршити пренос, надамо се да су кључеви јасни – пренос се врши уз очување симболичких веза, права приступа, власника и група, а шифровање је онемогућено ради веће брзине (можете користити неки бржи шифрар, али ово није толико важно за овај задатак), као и компресија је онемогућена.

Након што завршите рсинц, изађите из цхроот-а (притиском на цтрл+д) и извршите

umount dev && umount proc && umount sys && cd .. && vzctl umount CTID

Корак КСНУМКС

Хајде да извршимо неколико корака који ће нам помоћи да покренемо ВМ након преноса са ОпенВЗ-а.
На серверима са Системд хајде да извршимо команду која ће нам помоћи да се пријавимо на обичну конзолу, на пример, преко екрана ВНЦ сервера

mv /etc/systemd/system/getty.target.wants/[email protected] /etc/systemd/system/getty.target.wants/[email protected]

На серверима КСНУМКС Уник и КСНУМКС Уник Обавезно инсталирајте ново језгро:

yum install kernel-$(uname -r)

Сервер се може учитати са њега, али након преноса може престати да ради или ће бити обрисан.

На серверу КСНУМКС Уник морате да примените малу исправку за ПолкитД, иначе ће се сервер заувек срушити:

getent group polkitd >/dev/null && echo -e "e[1;32mpolkitd group already existse[0m" || { groupadd -r polkitd && echo -e "e[1;33mAdded missing polkitd groupe[0m" || echo -e "e[1;31mAdding polkitd group FAILEDe[0m"; }

getent passwd polkitd >/dev/null 
&& echo -e "e[1;32mpolkitd user already existse[0m" || { useradd -r -g polkitd -d / -s /sbin/nologin -c "User for polkitd" polkitd && echo -e "e[1;33mAdded missing polkitd usere[0m" || echo -e "e[1;31mAdding polkitd user FAILEDe[0m"; }

rpm -Va polkit* && echo -e "e[1;32mpolkit* rpm verification passede[0m" || { echo -e "e[1;33mResetting polkit* rpm user/group ownership & permse[0m"; rpm --setugids polkit polkit-pkla-compat; rpm --setperms polkit polkit-pkla-compat; }

На свим серверима, ако је инсталиран мод_фцгид за Апацхе, извршићемо малу поправку са правима, иначе ће сајтови који користе мод_фцгид пасти са грешком 500:

chmod +s `which suexec` && apachectl restart

И последња ствар је корисна за Убунту и Дебиан дистрибуције. Овај ОС може да се сруши у вечно покретање са грешком

петља пребрзо. пригушивање извршења мало

непријатно, али се лако поправља, у зависности од верзије ОС-а.

На Дебиан КСНУМКС поправка изгледа овако:

спроводимо

dbus-uuidgen

ако добијемо грешку

/уср/лоцал/либ/либдбус-1.со.3: верзија `ЛИБДБУС_ПРИВАТЕ_1.10.8′ није пронађена

проверите присуство ЛИБДБУС-а

ls -la /lib/x86_64-linux-gnu | grep dbus
libdbus-1.so.3 -> libdbus-1.so.3.14.15 
libdbus-1.so.3.14.15 <-- нужен этот
libdbus-1.so.3.14.16

ако је све у реду, ми то радимо

cd /lib/x86_64-linux-gnu
rm -rf libdbus-1.so.3
ln -s libdbus-1.so.3.14.15  libdbus-1.so.3

Ако не помогне, пробајте другу опцију.

Друго решење проблема са мало пригушивање извршења Погодно за скоро све Убунту и Дебиан дистрибуције.

Изводимо

bash -x /var/lib/dpkg/info/dbus.postinst configure

И за убунту КСНУМКС, Дебиан КСНУМКС Поред тога вршимо:

adduser --system --home /nonexistent --no-create-home --disabled-password --group messagebus

rm -rf /etc/init.d/modules_dep.sh 

Шта смо урадили? Вратили смо сабирницу порука, која је недостајала за покретање Дебиан/Убунту-а, и уклонили модулес_деп, који је дошао из ОпенВЗ-а и ометао учитавање многих модула кернела.

Корак КСНУМКС

Поново покрећемо ВМ, проверавамо у ВНЦ-у како учитавање напредује и, идеално, све ће се учитати без проблема. Иако је могуће да ће се неки специфични проблеми појавити након миграције, они су ван оквира овог чланка и биће исправљени како се појаве.

Надам се да су ове информације корисне! 🙂

Извор: ввв.хабр.цом

Додај коментар