Jinsi ya kuhamisha kontena ya OpenVZ 6 kwa seva ya KVM bila maumivu ya kichwa

Mtu yeyote ambaye amehitaji kuhamisha kontena ya OpenVZ kwa seva iliyo na uboreshaji kamili wa KVM angalau mara moja maishani mwake amekumbana na shida kadhaa:

  • Taarifa nyingi zimepitwa na wakati na zilikuwa muhimu kwa OS ambazo zilikuwa zimepitisha mzunguko wa EOL kwa muda mrefu
  • Taarifa tofauti hutolewa kila mara kwa mifumo tofauti ya uendeshaji, na makosa yanayowezekana wakati wa uhamiaji hayazingatiwi kamwe
  • Wakati mwingine unapaswa kushughulika na usanidi ambao mara kwa mara hautaki kufanya kazi baada ya uhamiaji

Unapohamisha seva 1, unaweza kurekebisha kitu kwa kuruka kila wakati, lakini unapohamisha kikundi kizima?

Katika makala hii nitajaribu kukuambia jinsi ya kuhamia kwa usahihi chombo cha OpenVZ kwa KVM na muda mdogo wa kupungua na suluhisho la haraka kwa matatizo yote.

Programu ndogo ya elimu: OpenVZ ni nini na KVM ni nini?

Hatutaingia ndani zaidi katika istilahi, lakini tutasema kwa jumla:

OpenVZ - virtualization katika kiwango cha mfumo wa uendeshaji, unaweza hata kuipeleka kwenye microwave, kwani hakuna haja ya maelekezo ya CPU na teknolojia za virtualization kwenye mashine ya mwenyeji.

KVM - Uboreshaji kamili, kwa kutumia nguvu zote za CPU na uwezo wa kufanya kitu chochote, kwa njia yoyote, kuikata kwa urefu na kuvuka.

Kinyume na imani maarufu kwamba kati ya watoa huduma wa kukaribisha OpenVZ itauzwa sana, lakini KVM haitafanya - kwa bahati nzuri kwa mwisho, KVM sasa inauzwa zaidi kuliko kaka yake.

Tutabeba nini?

Kama masomo ya majaribio ya uhamishaji, ilitubidi kutumia msitu mzima wa mifumo ya uendeshaji ambayo inapatikana kwenye OpenVZ: CentOS (matoleo 6 na 7), Ubuntu (14, 16 na 18 LTS), Debian 7.

Ilifikiriwa kuwa vyombo vingi vya OpenVZ vilikuwa tayari vinaendesha aina fulani ya LAMP, na baadhi hata walikuwa na programu maalum sana. Mara nyingi, haya yalikuwa usanidi na ISPmanager, jopo la kudhibiti VestaCP (na mara nyingi, haijasasishwa kwa miaka). Maombi yao ya uhamisho lazima pia izingatiwe.

Uhamiaji unafanywa huku tukihifadhi anwani ya IP ya kontena iliyohamishwa; tutachukulia kwamba IP ambayo kontena ilikuwa nayo imehifadhiwa kwenye VM na itafanya kazi bila matatizo.

Kabla ya kuhamisha, hebu tuhakikishe kuwa tuna kila kitu mkononi:

  • Seva ya OpenVZ, ufikiaji kamili wa mizizi kwa mashine mwenyeji, uwezo wa kusimamisha/kuweka/kuanzisha/kufuta vyombo
  • Seva ya KVM, ufikiaji kamili wa mzizi kwa mashine mwenyeji, pamoja na yote ambayo inamaanisha. Inachukuliwa kuwa kila kitu tayari kimeundwa na tayari kwenda.

Wacha tuanze kuhamisha

Kabla hatujaanza uhamishaji, hebu tufafanue maneno yatakayokusaidia kuepuka kuchanganyikiwa:

KVM_NODE - Mashine ya mwenyeji wa KVM
VZ_NODE - Mashine ya mwenyeji wa OpenVZ
CTID - Chombo cha OpenVZ
VM - Seva halisi ya KVM

Kujiandaa kwa uhamiaji na kuunda mashine za mtandaoni.

Hatua ya 1

Kwa kuwa tunahitaji kuhamisha chombo mahali fulani, tutaunda VM na usanidi sawa na KVM_NODE.
Muhimu! Unahitaji kuunda VM kwenye mfumo wa uendeshaji ambao unatumika kwa sasa kwenye CTID. Kwa mfano, ikiwa Ubuntu 14 imewekwa kwenye CTID, basi Ubuntu 14 lazima imewekwa kwenye VM. Matoleo madogo sio muhimu na kutofautiana kwao sio muhimu sana, lakini matoleo makubwa yanapaswa kuwa sawa.

Baada ya kuunda VM, tutasasisha vifurushi kwenye CTID na kwenye VM (bila kuchanganyikiwa na kusasisha OS - hatuisasishi, tunasasisha vifurushi tu na, ikiwa inakuja, toleo la OS ndani ya kuu. toleo).

Kwa CentOS mchakato huu unaonekana kuwa hauna madhara:

# yum clean all
# yum update -y

Na sio hatari kidogo kwa Ubuntu na Debian:

# apt-get update
# apt-get upgrade

Hatua ya 2

Sakinisha CTID, VZ_NODE ΠΈ VM matumizi rsync:

CentOS:

# yum install rsync -y

Debian, Ubuntu:

# apt-get install rsync -y

Hatusakinishi kitu kingine chochote huko au huko.

Hatua ya 3

Tunasimama CTID juu ya VZ_NODE timu

vzctl stop CTID

Kuweka picha CTID:

vzctl mount CTID

Nenda kwa /vz/root/ foldaCTID na kutekeleza

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

Chini ya mzizi, unda faili /root/exclude.txt - itakuwa na orodha ya tofauti ambazo hazitafikia seva mpya.

/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

Tunaunganisha kwa KVM_NODE na kuzindua yetu VMili ifanye kazi na ipatikane kupitia mtandao.

Sasa kila kitu kiko tayari kwa uhamisho. Nenda!

Hatua ya 4

Bado chini ya uchawi, tunafanya

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

Amri ya rsync itafanya uhamishaji, tunatumai kuwa funguo ziko wazi - uhamishaji unafanywa na uhifadhi wa ulinganifu, haki za ufikiaji, wamiliki na vikundi, na usimbuaji umezimwa kwa kasi kubwa (unaweza kutumia cipher haraka, lakini hii sio muhimu sana kwa kazi hii) , vile vile compression imezimwa.

Baada ya kukamilisha rsync, toka kutoka kwa chroot (kwa kubonyeza ctrl+d) na utekeleze

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

Hatua ya 5

Wacha tufanye hatua kadhaa ambazo zitatusaidia kuzindua VM baada ya kuhamisha kutoka OpenVZ.
Kwenye seva zilizo na Systemd wacha tutekeleze amri ambayo itatusaidia kuingia kwenye koni ya kawaida, kwa mfano, kupitia skrini ya seva ya VNC.

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

Kwenye seva CentOS 6 ΠΈ CentOS 7 Hakikisha kusakinisha kernel mpya:

yum install kernel-$(uname -r)

Seva inaweza kupakiwa kutoka kwayo, lakini baada ya uhamisho inaweza kuacha kufanya kazi au kufutwa.

Kwenye seva CentOS 7 unahitaji kuomba marekebisho madogo kwa PolkitD, vinginevyo seva itaanguka milele:

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; }

Kwenye seva zote, ikiwa mod_fcgid ya Apache ilisakinishwa, tutafanya urekebishaji mdogo na haki, vinginevyo tovuti zinazotumia mod_fcgid zitaanguka na hitilafu 500:

chmod +s `which suexec` && apachectl restart

Na jambo la mwisho ni muhimu kwa usambazaji wa Ubuntu na Debian. Mfumo huu wa uendeshaji unaweza kuanguka kwenye buti ya milele na hitilafu

kitanzi haraka sana. utekelezaji wa throttling kidogo

haifurahishi, lakini imewekwa kwa urahisi, kulingana na toleo la OS.

Cha Debian 9 kurekebisha inaonekana kama hii:

tunatekeleza

dbus-uuidgen

tukipata kosa

/usr/local/lib/libdbus-1.so.3: toleo `LIBDBUS_PRIVATE_1.10.8β€² halijapatikana

angalia uwepo wa 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.16

ikiwa kila kitu kiko sawa, tunafanya

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

Ikiwa haisaidii, jaribu chaguo la pili.

Suluhisho la pili la shida na utekelezaji wa throttling kidogo Inafaa kwa karibu usambazaji wote wa Ubuntu na Debian.

Tunafanya

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

Na kwa Ubuntu 14, Debian 7 Kwa kuongeza, tunafanya:

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

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

Tumefanya nini? Tulirejesha basi ya ujumbe, ambayo ilikosekana kuendesha Debian/Ubuntu, na tukaondoa modules_dep, ambayo ilitoka kwa OpenVZ na kuingilia upakiaji wa moduli nyingi za kernel.

Hatua ya 6

Tunaanzisha tena VM, angalia VNC jinsi upakiaji unavyoendelea na, kwa kweli, kila kitu kitapakia bila shida. Ingawa inawezekana kwamba baadhi ya matatizo maalum yatatokea baada ya uhamiaji, ni zaidi ya upeo wa makala hii na yatarekebishwa yanapotokea.

Natumaini habari hii ni muhimu! πŸ™‚

Chanzo: mapenzi.com

Kuongeza maoni