Ikviens, kuram vismaz vienu reizi dzÄ«vÄ ir bijis nepiecieÅ”ams pÄrsÅ«tÄ«t OpenVZ konteineru uz serveri ar pilnu KVM virtualizÄciju, ir saskÄrusies ar dažÄm problÄmÄm:
- LielÄkÄ daļa informÄcijas ir vienkÄrÅ”i novecojusi un attiecas uz operÄtÄjsistÄmÄm, kuras jau sen bija izturÄjuÅ”as EOL ciklu
- Par dažÄdÄm operÄtÄjsistÄmÄm vienmÄr tiek sniegta atŔķirÄ«ga informÄcija, un iespÄjamÄs kļūdas migrÄcijas laikÄ nekad netiek Åemtas vÄrÄ
- DažkÄrt nÄkas saskarties ar konfigurÄcijÄm, kuras ik pa brÄ«dim pÄc migrÄcijas nevÄlas darboties
PÄrsÅ«tot 1 serveri, jÅ«s vienmÄr varat kaut ko labot lidojuma laikÄ, bet, pÄrsÅ«tot visu klasteru?
Å ajÄ rakstÄ es mÄÄ£inÄÅ”u jums pastÄstÄ«t, kÄ pareizi migrÄt OpenVZ konteineru uz KVM ar minimÄlu dÄ«kstÄvi un Ätru visu problÄmu risinÄjumu.
Neliela izglītības programma: kas ir OpenVZ un kas ir KVM?
MÄs neiedziļinÄsimies terminoloÄ£ijÄ, bet teiksim vispÄrÄ«gi:
OpenVZ ā virtualizÄcija operÄtÄjsistÄmas lÄ«menÄ«, to var izvietot pat mikroviļÅu krÄsnÄ«, jo resursdatorÄ nav nepiecieÅ”amas CPU instrukcijas un virtualizÄcijas tehnoloÄ£ijas.
KVM - pilnvÄrtÄ«ga virtualizÄcija, izmantojot visu CPU jaudu un spÄj virtualizÄt jebko, jebkurÄ veidÄ, griežot to gareniski un ŔķÄrsÄm.
PretÄji izplatÄ«tajam uzskatam, ka starp hostinga pakalpojumu sniedzÄjiem OpenVZ kļūs pÄrpÄrdots, bet KVM nÄ ā pÄdÄjam par laimi, KVM tagad ir pÄrpÄrdots ne sliktÄk kÄ tÄ brÄlis.
Ko mÄs pÄrvedÄ«sim?
KÄ pÄrsÅ«tÄ«Å”anas testa subjekti mums bija jÄizmanto viss OpenVZ pieejamo operÄtÄjsistÄmu mežs: CentOS (6 un 7 versijas), Ubuntu (14, 16 un 18 LTS), Debian 7.
Tika pieÅemts, ka lielÄkajÄ daÄ¼Ä OpenVZ konteineru jau darbojas kÄda veida LAMP, un dažiem pat bija ļoti specifiska programmatÅ«ra. VisbiežÄk tÄs bija konfigurÄcijas ar ISPmanager, VestaCP vadÄ«bas paneli (un visbiežÄk tÄs nav atjauninÄtas gadiem ilgi). JÄÅem vÄrÄ arÄ« viÅu pÄrcelÅ”anas pieprasÄ«jumi.
MigrÄcija tiek veikta, saglabÄjot pÄrsÅ«tÄ«tÄ konteinera IP adresi; mÄs pieÅemsim, ka konteinera IP adrese ir saglabÄta virtuÄlajÄ maŔīnÄ un darbosies bez problÄmÄm.
Pirms pÄrsÅ«tÄ«Å”anas pÄrliecinÄsimies, ka mums viss ir pa rokai:
- OpenVZ serveris, pilna root piekļuve resursdatoram, iespÄja apturÄt/uzmontÄt/sÄkt/dzÄst konteinerus
- KVM serveris, pilna root piekļuve resursdatoram ar visu, ko tas nozÄ«mÄ. Tiek pieÅemts, ka viss jau ir konfigurÄts un gatavs darbam.
SÄksim pÄrsÅ«tÄ«Å”anu
Pirms sÄkam pÄrsÅ«tÄ«Å”anu, definÄsim terminus, kas palÄ«dzÄs izvairÄ«ties no neskaidrÄ«bÄm:
KVM_NODE - KVM resursdatora maŔīna
VZ_NODE - OpenVZ resursdatora maŔīna
CTID - OpenVZ konteiners
VM - KVM virtuÄlais serveris
SagatavoÅ”anÄs migrÄcijai un virtuÄlo maŔīnu izveide.
Solis 1
TÄ kÄ konteiners kaut kur jÄpÄrvieto, mÄs izveidosim VM ar lÄ«dzÄ«gu konfigurÄciju KVM_NODE.
SvarÄ«gi! Jums ir jÄizveido virtuÄlÄ maŔīna operÄtÄjsistÄmÄ, kas paÅ”laik darbojas ar CTID. PiemÄram, ja CTID ir instalÄts Ubuntu 14, tad VM ir jÄinstalÄ Ubuntu 14. MazÄkÄs versijas nav svarÄ«gas un to neatbilstÄ«ba nav tik kritiska, bet galvenajÄm versijÄm jÄbÅ«t vienÄdÄm.
PÄc virtuÄlÄs maŔīnas izveidoÅ”anas mÄs atjauninÄsim pakotnes CTID un virtuÄlajÄ maŔīnÄ (nejaukt ar OS atjauninÄÅ”anu - mÄs to neatjauninÄm, mÄs atjauninÄm tikai pakotnes un, ja tÄ pienÄk, OS versiju galvenajÄ sistÄmÄ. versija).
CentOS Å”is process izskatÄs nekaitÄ«gs:
# yum clean all
# yum update -y
Un ne mazÄk nekaitÄ«gs Ubuntu un Debian:
# apt-get update
# apt-get upgrade
Solis 2
InstalÄjiet uz CTID, VZ_NODE Šø VM lietderÄ«ba rsync:
CentOS:
# yum install rsync -y
Debian, Ubuntu:
# apt-get install rsync -y
MÄs neko citu neinstalÄjam ne tur, ne tur.
Solis 3
MÄs apstÄjamies CTID par VZ_NODE komanda
vzctl stop CTID
AttÄla uzstÄdÄ«Å”ana CTID:
vzctl mount CTID
Dodieties uz mapi /vz/root/CTID un izpildīt
mount --bind /dev dev && mount --bind /sys sys && mount --bind /proc proc && chroot .
Zem saknes izveidojiet failu /root/exclude.txt ā tajÄ bÅ«s saraksts ar izÅÄmumiem, kuri nenokļūs jaunajÄ serverÄ«.
/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
Pievienot KVM_NODE un palaidiet mÅ«su VMlai tas darbotos un bÅ«tu pieejams tÄ«klÄ.
Tagad viss ir gatavs pÄrsÅ«tÄ«Å”anai. Aiziet!
Solis 4
JoprojÄm burvÄ«bÄ mÄs uzstÄjamies
rsync --exclude-from="/root/exclude.txt" --numeric-ids -avpogtStlHz --progress -e "ssh -T -o Compression=no -x" / root@KVM_NODE:/
Komanda rsync veiks pÄrsÅ«tÄ«Å”anu, ceram, ka atslÄgas ir skaidras - pÄrsÅ«tÄ«Å”ana tiek veikta, saglabÄjot simboliskÄs saites, piekļuves tiesÄ«bas, Ä«paÅ”niekus un grupas, un Å”ifrÄÅ”ana ir atspÄjota, lai nodroÅ”inÄtu lielÄku Ätrumu (varÄtu izmantot kÄdu ÄtrÄku Å”ifru, bet Å”im uzdevumam tas nav tik svarÄ«gi), kÄ arÄ« ir atspÄjota saspieÅ”ana.
PÄc rsync pabeigÅ”anas izejiet no chroot (nospiežot ctrl+d) un izpildiet
umount dev && umount proc && umount sys && cd .. && vzctl umount CTID
Solis 5
Veiksim vairÄkas darbÄ«bas, kas mums palÄ«dzÄs palaist virtuÄlo maŔīnu pÄc pÄrsÅ«tÄ«Å”anas no OpenVZ.
Uz serveriem ar Systemd izpildÄ«sim komandu, kas palÄ«dzÄs mums pieteikties parastajÄ konsolÄ, piemÄram, caur VNC servera ekrÄnu
mv /etc/systemd/system/getty.target.wants/[email protected] /etc/systemd/system/getty.target.wants/[email protected]
Uz serveriem 6 CentOS Šø 7 CentOS Noteikti instalÄjiet jaunu kodolu:
yum install kernel-$(uname -r)
No tÄ serveri var ielÄdÄt, taÄu pÄc pÄrsÅ«tÄ«Å”anas tas var pÄrstÄt darboties vai tikt izdzÄsts.
Uz servera 7 CentOS jums ir jÄpiemÄro neliels PolkitD labojums, pretÄjÄ gadÄ«jumÄ serveris uz visiem laikiem avarÄs:
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; }
Visos serveros, ja mod_fcgid for Apache tika instalÄts, mÄs veiksim nelielu labojumu ar tiesÄ«bÄm, pretÄjÄ gadÄ«jumÄ vietnes, kas izmanto mod_fcgid, avarÄs ar kļūdu 500:
chmod +s `which suexec` && apachectl restart
Un pÄdÄjÄ lieta ir noderÄ«ga Ubuntu un Debian izplatÄ«Å”anÄm. Å Ä« OS var ietriekties mūžīgÄ sÄknÄÅ”anas laikÄ ar kļūdu
cilpa pÄrÄk Ätri. nedaudz ierobežojot izpildi
nepatÄ«kams, bet viegli labojams, atkarÄ«bÄ no OS versijas.
uz Debian 9 labojums izskatÄs Å”Ädi:
mÄs veicam
dbus-uuidgen
ja mÄs saÅemam kļūdu
/usr/local/lib/libdbus-1.so.3: versija `LIBDBUS_PRIVATE_1.10.8ā² nav atrasta
pÄrbaudiet LIBDBUS klÄtbÅ«tni
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
ja viss ir kÄrtÄ«bÄ, mÄs to darÄm
cd /lib/x86_64-linux-gnu
rm -rf libdbus-1.so.3
ln -s libdbus-1.so.3.14.15 libdbus-1.so.3
Ja tas nepalÄ«dz, izmÄÄ£iniet otro iespÄju.
Otrs problÄmas risinÄjums ar nedaudz ierobežojot izpildi PiemÄrots gandrÄ«z visiem Ubuntu un Debian izplatÄ«jumiem.
MÄs veicam
bash -x /var/lib/dpkg/info/dbus.postinst configure
Un par ubuntu 14, Debian 7 Papildus veicam:
adduser --system --home /nonexistent --no-create-home --disabled-password --group messagebus
rm -rf /etc/init.d/modules_dep.sh
Ko mÄs esam izdarÄ«juÅ”i? MÄs atjaunojÄm ziÅojumu kopni, kuras trÅ«ka, lai palaistu Debian/Ubuntu, un noÅÄmÄm modules_dep, kas nÄca no OpenVZ un traucÄja daudzu kodola moduļu ielÄdi.
Solis 6
MÄs pÄrstartÄjam VM, pÄrbaudÄm VNC, kÄ notiek ielÄde, un ideÄlÄ gadÄ«jumÄ viss tiks ielÄdÄts bez problÄmÄm. Lai gan ir iespÄjams, ka pÄc migrÄcijas parÄdÄ«sies dažas Ä«paÅ”as problÄmas, tÄs neietilpst Ŕī raksta darbÄ«bas jomÄ un tiks labotas, tiklÄ«dz tÄs radÄ«sies.
Es ceru, ka Ŕī informÄcija ir noderÄ«ga! š
Avots: www.habr.com