Allir sem hafa þurft að flytja OpenVZ gám yfir á netþjón með fullri KVM sýndarvæðingu að minnsta kosti einu sinni á ævinni hefur lent í nokkrum vandamálum:
- Flestar upplýsingarnar eru einfaldlega úreltar og áttu við um stýrikerfi sem höfðu lengi staðist EOL hringrásina
- Mismunandi upplýsingar eru alltaf gefnar fyrir mismunandi stýrikerfi og hugsanlegar villur við flutning eru aldrei teknar til greina
- Stundum þarftu að takast á við stillingar sem annað slagið vilja ekki virka eftir flutning
Þegar þú flytur 1 server geturðu alltaf lagað eitthvað á flugu, en þegar þú flytur heilan klasa?
Í þessari grein mun ég reyna að segja þér hvernig á að flytja OpenVZ ílát rétt yfir í KVM með lágmarks niður í miðbæ og skjót lausn á öllum vandamálum.
Lítið fræðsluforrit: hvað er OpenVZ og hvað er KVM?
Við munum ekki fara djúpt í hugtök, en munum segja almennt:
OpenVZ — sýndarvæðing á stýrikerfisstigi, þú getur jafnvel sett hana á örbylgjuofn, þar sem engin þörf er á örgjörvaleiðbeiningum og sýndarvæðingartækni á hýsingarvélinni.
KVM - fullgild sýndarvæðing, sem notar allan kraft örgjörvans og fær um að virkja hvað sem er, hvernig sem er, klippa það langsum og þversum.
Ólíkt því sem almennt er talið, í umhverfinu hýsingaraðilar OpenVZ er ofselt, en KVM ekki. Sem betur fer fyrir hið síðarnefnda er KVM nú ofselt alveg eins vel og bróðir sinn.
Hvað munum við bera yfir?
В качестве подопытных для переноса пришлось использовать весь лес операционных систем, которые доступны на OpenVZ: CentOS (6 и 7 версии), Ubuntu (14, 16 и 18 LTS), Debian 7.
Gert var ráð fyrir að flestir OpenVZ gámana væru nú þegar í gangi einhvers konar LAMPA og sumir voru jafnvel með mjög sérstakan hugbúnað. Oftast voru þetta stillingar með ISPmanager, VestaCP stjórnborði (og oftast ekki uppfært í mörg ár). Einnig þarf að taka tillit til flutningsbeiðna þeirra.
Flutningur fer fram með varðveislu IP tölur Fyrir flytjanlegan ílát gerum við ráð fyrir að IP-tala ílátsins sé varðveitt á sýndarvélinni og virki án vandræða.
Áður en þú flytur, skulum við ganga úr skugga um að við höfum allt við höndina:
- OpenVZ netþjónn, fullur rótaraðgangur að hýsingarvélinni, getu til að stöðva/tengja/ræsa/eyða gámum
- KVM þjónn, fullur rótaraðgangur að hýsingarvélinni, með öllu sem það gefur til kynna. Gert er ráð fyrir að allt sé þegar stillt og tilbúið til notkunar.
Byrjum að flytja
Áður en við byrjum flutninginn skulum við skilgreina hugtök sem hjálpa þér að forðast rugling:
KVM_NODE - KVM gestgjafi vél
VZ_NODE - OpenVZ hýsingarvél
CTID - OpenVZ gámur
VM - KVM sýndarþjónn
Að undirbúa flutning og búa til sýndarvélar.
Skref 1
Þar sem við þurfum að flytja ílátið eitthvert, munum við búa til VM með svipaða uppsetningu og KVM_NODE.
Mikilvægt! Создавать VM нужно именно на той операционной системе, которая сейчас крутится на CTID. Например, если на CTID установлена Ubuntu 14, то и на VM нужно ставить Ubuntu 14. Минорные версии не важны и их несовпадение не столь критично, а вот мажорные — должны быть одинаковыми.
Eftir að VM er búið til munum við uppfæra pakkana á CTID og á VM (ekki að rugla saman við uppfærslu stýrikerfisins - við uppfærum það ekki, við uppfærum aðeins pakkana og, ef það kemur, stýrikerfisútgáfan innan aðal útgáfa).
Fyrir CentOS этот процесс выглядит безобидно:
# yum clean all
# yum update -yИ не менее безобидно для Ubuntu, Debian:
# apt-get update
# apt-get upgradeSkref 2
Settu upp á CTID, VZ_NODE и VM gagnsemi rsync:
CentOS:
# yum install rsync -yDebian, Ubuntu:
# apt-get install rsync -yVið erum ekki að setja neitt annað upp hvorki þar né þar.
Skref 3
Við stoppum CTID á VZ_NODE teymið
vzctl stop CTIDAð setja myndina upp CTID:
vzctl mount CTIDFarðu í /vz/root/ möppunaCTID og framkvæma
mount --bind /dev dev && mount --bind /sys sys && mount --bind /proc proc && chroot .Undir rótinni skaltu búa til skrá /root/exclude.txt - hún mun innihalda lista yfir undantekningar sem munu ekki komast á nýja netþjóninn
/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-ens3Við tengjumst KVM_NODE og ræstu okkar VMþannig að það virki og sé aðgengilegt yfir netið.
Nú er allt tilbúið til flutnings. Farðu!
Skref 4
Enn á töfum, við framkvæmum
rsync --exclude-from="/root/exclude.txt" --numeric-ids -avpogtStlHz --progress -e "ssh -T -o Compression=no -x" / root@KVM_NODE:/rsync skipunin mun framkvæma flutninginn, við vonum að lyklarnir séu skýrir - flutningurinn fer fram með varðveislu tákntengla, aðgangsréttinda, eigenda og hópa og dulkóðun er óvirk til að auka hraða (þú gætir notað hraðari dulmál, en þetta er ekki svo mikilvægt fyrir þetta verkefni), auk þess sem þjöppun er óvirk.
Eftir að hafa lokið rsync skaltu hætta úr chroot (með því að ýta á ctrl+d) og keyra
umount dev && umount proc && umount sys && cd .. && vzctl umount CTIDSkref 5
Við skulum framkvæma nokkur skref sem munu hjálpa okkur að ræsa VM eftir flutning frá OpenVZ.
Á netþjónum með Systemd við skulum framkvæma skipun sem mun hjálpa okkur að skrá okkur inn á venjulega leikjatölvu, til dæmis í gegnum VNC netþjónsskjá
mv /etc/systemd/system/getty.target.wants/getty@tty2.service /etc/systemd/system/getty.target.wants/getty@tty1.serviceÁ netþjónum CentOS 6 и CentOS 7 Vertu viss um að setja upp ferskan kjarna:
yum install kernel-$(uname -r)Hægt er að hlaða þjóninum af honum, en eftir flutninginn gæti hann hætt að virka eða verið eytt.
Á server CentOS 7 þú þarft að setja smá lagfæringu fyrir PolkitD, annars mun þjónninn hrynja að eilífu:
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; }Á öllum netþjónum, ef mod_fcgid fyrir Apache var sett upp, munum við framkvæma smá lagfæringu með réttindum, annars munu síður sem nota mod_fcgid hrynja með villu 500:
chmod +s `which suexec` && apachectl restartИ последнее, пригодится для Ubuntu, Debian дистрибутивов. Эта ОС может упасть в вечный бут с ошибкой
lykkja of hratt. inngjöf framkvæmd smá
óþægilegt, en auðvelt að laga, fer eftir stýrikerfisútgáfunni.
Á Debian 9 lagfæringin lítur svona út:
við framkvæmum
dbus-uuidgenef við fáum villu
/usr/local/lib/libdbus-1.so.3: útgáfa `LIBDBUS_PRIVATE_1.10.8′ fannst ekki
athugaðu tilvist 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.16ef allt er í lagi þá gerum við það
cd /lib/x86_64-linux-gnu
rm -rf libdbus-1.so.3
ln -s libdbus-1.so.3.14.15 libdbus-1.so.3Ef það hjálpar ekki skaltu prófa seinni valkostinn.
Önnur lausnin á vandamálinu með inngjöf framkvæmd smá подходит практически для всех Ubuntu и Debian дистрибутивов.
Við framkvæmum
bash -x /var/lib/dpkg/info/dbus.postinst configureOg fyrir Ubuntu 14, Debian 7 Að auki framkvæmum við:
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 и мешал загрузки многих модулей ядра.
Skref 6
Við endurræsum VM, athugum í VNC hvernig hleðslan gengur og helst mun allt hlaðast án vandræða. Þó að það sé mögulegt að einhver sérstök vandamál komi upp eftir flutninginn eru þau utan gildissviðs þessarar greinar og verða leiðrétt þegar þau koma upp.
Ég vona að þessar upplýsingar séu gagnlegar! 🙂
Heimild: www.habr.com
