Jiddereen deen op d'mannst eemol an hirem Liewen en OpenVZ Container op e Server mat voller KVM Virtualiséierung transferéiert huet, huet e puer Probleemer begéint:
- Déi meescht vun der Informatioun ass einfach verännert a war relevant fir OSen déi laang den EOL Zyklus passéiert hunn
- Verschidde Informatioune ginn ëmmer fir verschidde Betribssystemer zur Verfügung gestallt, a méiglech Feeler während der Migratioun ginn ni berücksichtegt
- Heiansdo musst Dir mat Konfiguratiounen këmmeren, déi all Kéier no der Migratioun net wëllen schaffen
Wann Dir Transfert 1 Server, Dir kënnt ëmmer eppes op der fléien befestegt, mee wann Dir Transfert e ganze Stärekoup?
An dësem Artikel wäert ech probéieren Iech ze soen wéi Dir en OpenVZ Container richteg op KVM migréiere kënnt mat minimalem Downtime an enger séier Léisung fir all Probleemer.
E klenge Bildungsprogramm: wat ass OpenVZ a wat ass KVM?
Mir wäerten net déif an d'Terminologie goen, awer allgemeng soen:
OpenVZ - Virtualiséierung um Betribssystemniveau, Dir kënnt et souguer op enger Mikrowelle ofsetzen, well et keng CPU-Instruktiounen an Virtualiséierungstechnologien op der Hostmaschinn brauch.
KVM - vollwäerteg Virtualiséierung, déi all d'Kraaft vun der CPU benotzt a fäeg ass alles ze virtualiséieren, egal wéi, et Längt a Kräiz ze schneiden.
Am Géigesaz zu der allgemenger Meenung, an der Ëmwelt Hosting-Ubidder OpenVZ ass iwwerverkaaft, awer KVM net. Zum Gléck fir déi Lescht ass KVM elo genee sou gutt iwwerverkaaft wéi säi Brudder.
Wat wäerte mir iwwerdroen?
В качестве подопытных для переноса пришлось использовать весь лес операционных систем, которые доступны на OpenVZ: CentOS (6 и 7 версии), Ubuntu (14, 16 и 18 LTS), Debian 7.
Et gouf ugeholl datt déi meescht OpenVZ Container schonn eng Aart LAMP lafen, an e puer hu souguer ganz spezifesch Software. Meeschtens waren dës Konfiguratiounen mam ISPmanager, VestaCP Kontrollpanel (an meeschtens net fir Joer aktualiséiert). Hir Transfert Demanden mussen och Rechnung gedroe ginn.
Migratioun gëtt mat Erhaalung duerchgefouert IP Adressen Fir e portable Container gi mir dovun aus, datt d'IP-Adress vum Container op der VM gespäichert ass a ouni Problemer funktionéiert.
Ier mer iwwerdroen, loosst eis sécher sinn datt mir alles op der Hand hunn:
- OpenVZ Server, voll Root Zougang zu der Hostmaschinn, Fäegkeet fir Container ze stoppen / ze montéieren / ze starten / ze läschen
- KVM Server, voll Root Zougang zu der Hostmaschinn, mat allem wat et implizéiert. Et gëtt ugeholl datt alles scho konfiguréiert ass a prett ass fir ze goen.
Loosst eis ufänken ze transferéieren
Ier mer den Transfer ufänken, loosst eis Begrëffer definéieren déi Iech hëllefen Duercherneen ze vermeiden:
KVM_NODE - KVM Host Maschinn
VZ_NODE - OpenVZ Host Maschinn
CTID - OpenVZ Container
VM - KVM virtuelle Server
Virbereeden fir Migratioun a schafen virtuell Maschinnen.
Schrëtt 1
Well mir brauchen de Container iergendwou ze plënneren, mir schafen VM mat enger ähnlecher Configuratioun ze KVM_NODE.
Wichteg! Создавать VM нужно именно на той операционной системе, которая сейчас крутится на CTID. Например, если на CTID установлена Ubuntu 14, то и на VM нужно ставить Ubuntu 14. Минорные версии не важны и их несовпадение не столь критично, а вот мажорные — должны быть одинаковыми.
Nodeems mir de VM erstallt hunn, wäerte mir d'Packagen op der CTID an op der VM aktualiséieren (net ze verwiessele mam Update vum OS - mir aktualiséieren et net, mir aktualiséieren nëmmen d'Packagen an, wann et ukomm ass, d'OS Versioun am Main Versioun).
fir CentOS этот процесс выглядит безобидно:
# yum clean all
# yum update -yИ не менее безобидно для Ubuntu, Debian:
# apt-get update
# apt-get upgradeSchrëtt 2
Installéieren op CTID, VZ_NODE и VM Déngscht rsync:
CentOS:
# yum install rsync -yDebian, Ubuntu:
# apt-get install rsync -yMir installéieren näischt anescht weder do oder do.
Schrëtt 3
Mir maachen e Stopp CTID op VZ_NODE Equipe
vzctl stop CTIDMontéierung vum Bild CTID:
vzctl mount CTIDGitt an den /vz/root/ DossierCTID an ausféieren
mount --bind /dev dev && mount --bind /sys sys && mount --bind /proc proc && chroot .Ënnert der Root erstellt eng Datei /root/exclude.txt - et enthält eng Lëscht vun Ausnahmen déi net op den neie Server kommen
/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-ens3Connect an KVM_NODE a starten eis VMsou datt et funktionéiert an iwwer de Reseau zougänglech ass.
Elo ass alles prett fir Transfert. Gitt!
Schrëtt 4
Nach ënner dem Zauber, mir Leeschtung
rsync --exclude-from="/root/exclude.txt" --numeric-ids -avpogtStlHz --progress -e "ssh -T -o Compression=no -x" / root@KVM_NODE:/De Kommando rsync wäert den Transfer maachen, mir hoffen datt d'Schlësselen kloer sinn - den Transfer gëtt mat der Erhaalung vu Symlinks, Zougangsrechter, Besëtzer a Gruppen duerchgefouert, an d'Verschlësselung ass ausgeschalt fir méi Geschwindegkeet (Dir kënnt e méi séier Chiffer benotzen, awer dëst ass net sou wichteg fir dës Aufgab), sou wéi d'Kompressioun ass behënnert.
Nodeems Dir rsync ofgeschloss hutt, fuert aus Chroot (duerch Ctrl + D dréckt) an ausféiert
umount dev && umount proc && umount sys && cd .. && vzctl umount CTIDSchrëtt 5
Loosst eis e puer Schrëtt ausféieren, déi eis hëllefe fir de VM ze starten nodeems Dir vun OpenVZ transferéiert.
Op Serveren mat Systemd loosst eis e Kommando ausféieren deen eis hëlleft bei enger regulärer Konsole umellen, zum Beispill duerch e VNC Serverbildschierm
mv /etc/systemd/system/getty.target.wants/getty@tty2.service /etc/systemd/system/getty.target.wants/getty@tty1.serviceOp Serveren CentOS 6 и CentOS 7 Gitt sécher e frësche Kernel z'installéieren:
yum install kernel-$(uname -r)De Server kann dovun gelueden ginn, awer nom Transfert kann et ophalen ze schaffen oder geläscht ginn.
Op Server CentOS 7 Dir musst eng kleng Fix fir PolkitD uwenden, soss wäert de Server fir ëmmer crasht:
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; }Op all Server, wann mod_fcgid fir Apache installéiert gouf, wäerte mir e klenge Fix mat Rechter ausféieren, soss wäerte Siten déi mod_fcgid benotzen, mam Feeler 500 crashen:
chmod +s `which suexec` && apachectl restartИ последнее, пригодится для Ubuntu, Debian дистрибутивов. Эта ОС может упасть в вечный бут с ошибкой
ze séier schlofen. throttling Ausféierung e bëssen
désagréabel, awer liicht fixéiert, jee no der OS Versioun.
op Debian 9 de Fix gesäit esou aus:
mir ausféieren
dbus-uuidgenwa mir e Feeler kréien
/usr/local/lib/libdbus-1.so.3: Versioun `LIBDBUS_PRIVATE_1.10.8′ net fonnt
kontrolléieren d'Präsenz vun LIBDBUS
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.16wann alles an Uerdnung ass, mir maachen et
cd /lib/x86_64-linux-gnu
rm -rf libdbus-1.so.3
ln -s libdbus-1.so.3.14.15 libdbus-1.so.3Wann et net hëlleft, probéiert déi zweet Optioun.
Déi zweet Léisung fir de Problem mat throttling Ausféierung e bëssen подходит практически для всех Ubuntu и Debian дистрибутивов.
Mir droen aus
bash -x /var/lib/dpkg/info/dbus.postinst configureA fir Ubuntu 14, Debian 7 Zousätzlech maache mir:
adduser --system --home /nonexistent --no-create-home --disabled-password --group messagebus
rm -rf /etc/init.d/modules_dep.sh Что мы сделали? Восстановили messagebus, которого не хватало для запуска Debian/Ubuntu и удалили modules_dep, который пришел от OpenVZ и мешал загрузки многих модулей ядра.
Schrëtt 6
Mir starten de VM nei, kontrolléiert am VNC wéi d'Luede viru geet an am Idealfall alles ouni Probleemer lued. Och wann et méiglech ass datt e puer spezifesch Probleemer no der Migratioun erschéngen, sinn se iwwer den Ëmfang vun dësem Artikel a gi korrigéiert wéi se entstinn.
Ech hoffen dës Informatioun ass nëtzlech! 🙂
Source: will.com
