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

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

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

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

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

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

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

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

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

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

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

Читава шума оперативних система доступних на OpenVZ-у морала је бити коришћена као тест субјекти за трансфер: CentOS (6. и 7. верзија), Ubuntu (14, 16 и 18 LTS), Debian 7.

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

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

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

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

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

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

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

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

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

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

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

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

# yum clean all
# yum update -y

И ништа мање безопасно за Ubuntu, Debian:

# apt-get update
# apt-get upgrade

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

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

CentOS:

# yum install rsync -y

Debian, Ubuntu:

# 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/getty@tty2.service /etc/systemd/system/getty.target.wants/getty@tty1.service

На серверима CentOS 6 и CentOS 7 Обавезно инсталирајте ново језгро:

yum install kernel-$(uname -r)

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

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

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

И на крају, биће корисно за Ubuntu, Debian дистрибуције. Овај ОС може да се сруши и доведе до трајног покретања са грешком.

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

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

На Debian 9 поправка изгледа овако:

спроводимо

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

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

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

Изводимо

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

И за Ubuntu 14, Debian 7 Поред тога вршимо:

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

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

Шта смо урадили? Вратили смо магистралу порука, која је недостајала при покретању. Debian/Ubuntu и уклонио modules_dep, који је дошао из OpenVZ-а и спречавао учитавање многих модула језгра.

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

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

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

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

Купите поуздан хостинг за сајтове са ДДоС заштитом, ВПС ВДС сервере 🔥 Купите поуздан веб хостинг са DDoS заштитом, VPS VDS сервере | ProHoster