Meriv çawa konteynera OpenVZ 6 bêyî serêş vediguhezîne servera KVM

Her kesê ku hewce bû ku bi kêmanî carekê di jiyana xwe de konteynir OpenVZ veguhezîne serverek bi virtualbûna KVM-ya tevahî, bi hin pirsgirêkan re rû bi rû maye:

  • Piraniya agahdarî bi tenê kevnar in û ji bo OS-ên ku demek dirêj çerxa EOL-ê derbas kiribûn re têkildar bûn
  • Ji bo pergalên xebitandinê yên cihê her gav agahdariya cihêreng têne peyda kirin, û xeletiyên gengaz ên di dema koçberiyê de qet nayên hesibandin
  • Carinan hûn neçar in ku bi veavakirinên ku her carê û dûv re naxwazin piştî koçberiyê bixebitin re mijûl bibin

Gava ku hûn serverek 1 veguhezînin, hûn dikarin her gav tiştek di firînê de rast bikin, lê gava ku hûn komek tevahî vediguhezînin?

Di vê gotarê de ez ê hewl bidim ku ji we re vebêjim ka meriv çawa bi rêkûpêk konteynir OpenVZ-ê li KVM-ê bi hindiktirîn demdirêj û çareseriyek bilez ji hemî pirsgirêkan re veguhezîne.

Bernameyek perwerdehiya piçûk: OpenVZ çi ye û KVM çi ye?

Em ê di nav termînolojiyê de kûr neçin, lê bi gelemperî dibêjin:

OpenVZ - virtualîzekirin di asta pergala xebitandinê de, hûn dikarin wê li ser mîkropêl jî bi cih bikin, ji ber ku li ser makîneya mêvandar hewcedariya rêwerzên CPU û teknolojiyên virtualîzasyonê tune.

KVM - Virtualîzasyona bêkêmasî, ku hemî hêza CPU-yê bikar tîne û dikare her tiştî, bi her awayî virtualîze bike, bi dirêjahî û xaçê bibire.

Berevajî baweriya populer ku di nav pêşkêşkerên mêvandariyê de OpenVZ dê zêde were firotin, lê KVM dê nebe - bextewar ji bo ya paşîn, KVM naha ji birayê xwe ne xirabtir tê firotin.

Em ê çi hilgirin?

Wekî mijarên ceribandinê ji bo veguheztinê, me neçar ma ku tevahiya daristana pergalên xebitandinê yên ku li OpenVZ-ê hene bikar bînin: CentOS (6 û 7 guhertoyên), Ubuntu (14, 16 û 18 LTS), Debian 7.

Tê texmîn kirin ku piraniya konteynerên OpenVZ berê cûreyek LAMP-ê dimeşandin, û hinan jî xwediyê nermalava pir taybetî bûn. Bi gelemperî, ev mîhengên bi ISPmanager, panela kontrolê ya VestaCP re bûn (û pir caran, bi salan nehatine nûve kirin). Divê daxwazên wan ên veguhestinê jî li ber çavan bên girtin.

Koçberî dema ku navnîşana IP-ya konteynerê veguheztî diparêze tê kirin; em ê texmîn bikin ku IP-ya ku konteynir hebû li ser VM-ê hatî tomar kirin û dê bê pirsgirêk bixebite.

Berî veguheztinê, em pê ewle bin ku her tişt li ber destê me ye:

  • Pêşkêşkara OpenVZ, gihandina root ya bêkêmasî ya makîneya mêvandar, şiyana rawestandin / çîçek / destpêkirin / jêbirina konteyneran
  • Pêşkêşkara KVM, gihandina root ya bêkêmasî ya makîneya mêvandar, digel her tiştê ku tê destnîşan kirin. Tê texmîn kirin ku her tişt jixwe ve hatî mîheng kirin û amade ye ku biçe.

Werin em dest bi veguheztinê bikin

Berî ku em dest bi veguheztinê bikin, werin em şertên ku dê ji we re bibin alîkar ku hûn ji tevliheviyê dûr bixin diyar bikin:

KVM_NODE - KVM makîneya mêvandar
VZ_NODE - Makîneya mêvandar OpenVZ
CTID - Konteynir OpenVZ
VM - KVM server virtual

Amadekirina ji bo koçberiyê û afirandina makîneyên virtual.

gav 1

Ji ber ku em hewce ne ku konteynerê li cîhek bigerin, em ê biafirînin VM bi veavakirina similar to KVM_NODE.
Girîng! Pêdivî ye ku hûn li ser pergala xebitandinê ya ku niha li ser CTID-ê dixebite VM-yek biafirînin. Mînakî, heke Ubuntu 14 li ser CTID-ê were saz kirin, wê hingê divê Ubuntu 14 li ser VM-ê were saz kirin. Guhertoyên piçûk ne girîng in û cûdabûna wan ne ew qas krîtîk e, lê guhertoyên sereke divê heman bin.

Piştî afirandina VM-ê, em ê pakêtên li ser CTID û li ser VM-yê nûve bikin (ku bi nûvekirina OS-ê re neyê tevlihev kirin - em wê nûve nakin, em tenê pakêtan nûve dikin û, ger hat, guhertoya OS-ê di hundurê sereke de awa).

Ji bo CentOS ev pêvajo bê zirar xuya dike:

# yum clean all
# yum update -y

Û ji bo Ubuntu û Debian ne kêmtir zirarê ye:

# apt-get update
# apt-get upgrade

gav 2

Saz bikin CTID, VZ_NODE и VM bikêrhatî rsync:

CentOS:

# yum install rsync -y

Debian, Ubuntu:

# apt-get install rsync -y

Em ne li wir û ne jî li wir tiştek din saz nakin.

gav 3

Em rawestin CTID li ser VZ_NODE kom

vzctl stop CTID

Mountkirina wêneyê CTID:

vzctl mount CTID

Biçe peldanka /vz/root/CTID û îdam bikin

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

Di bin kokê de, pelek /root/exclude.txt biafirîne - ew ê navnîşek îstîsnayan hebe ku dê negihîje servera nû

/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

Em pê ve girêdidin KVM_NODE û me bidin destpêkirin VMda ku ew kar dike û li ser torê tê gihîştin.

Niha her tişt ji bo veguhestinê amade ye. Ajotin!

gav 4

Hîn di bin efsûnê de, em pêk tînin

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

Fermana rsync dê veguheztinê pêk bîne, em hêvî dikin ku bişkok zelal in - veguheztin bi parastina sîmlînkan, mafên gihîştinê, xwedan û koman pêk tê, û şîfrekirin ji bo leza mezintir tê asteng kirin (hûn dikarin şîfreyek zûtir bikar bînin, lê ev ji bo vî karî ew qas ne girîng e) , û her weha kompresyon jî neçalak e.

Piştî qedandina rsyncê, ji chroot derkeve (bi tikandina ctrl+d) û bicîh bike

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

gav 5

Ka em çend gavên ku dê ji me re bibin alîkar ku VM-ê piştî veguheztina ji OpenVZ-ê bidin destpêkirin.
Li ser pêşkêşkerên bi Systemd werin em fermanek bicîh bînin ku dê ji me re bibe alîkar ku têkevin konsolek birêkûpêk, mînakî, bi ekranek serverek VNC

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

Li ser pêşkêşkeran CentOS 6 и CentOS 7 Bawer bikin ku kernelek nû saz bikin:

yum install kernel-$(uname -r)

Pêşkêşkar dikare jê were barkirin, lê piştî veguheztinê dibe ku kar raweste an jî were jêbirin.

Li ser serverê CentOS 7 hûn hewce ne ku ji bo PolkitD sererastkirinek piçûk bicîh bikin, wekî din server dê her û her têk bibe:

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

Li ser hemî pêşkêşkeran, heke mod_fcgid ji bo Apache hate saz kirin, em ê rastkirinek piçûk bi mafan pêk bînin, wekî din malperên ku mod_fcgid bikar tînin dê bi xeletiya 500 têk bibin:

chmod +s `which suexec` && apachectl restart

Û ya paşîn ji bo belavkirinên Ubuntu û Debian bikêr e. Dibe ku ev OS bi xeletiyek di bootek bêdawî de têk bibe

pir bi lez diherike. îdamkirina throttling hinekî

ne xweş e, lê bi hêsanî tê rast kirin, li gorî guhertoya OS-ê ve girêdayî ye.

li ser Debian 9 rastkirin wiha xuya dike:

em pêk tînin

dbus-uuidgen

ger em xeletiyekê bibînin

/usr/local/lib/libdbus-1.so.3: guhertoya `LIBDBUS_PRIVATE_1.10.8′ nehat dîtin

hebûna LIBDBUS-ê kontrol bikin

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

ger her tişt bi rêk û pêk be, em wê bikin

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

Ger ew ne alîkar be, vebijarka duyemîn biceribîne.

Çareseriya duyemîn a pirsgirêkê bi înfaza throttling hinekî Hema hema ji bo hemî belavkirinên Ubuntu û Debian maqûl e.

Em pêk tînin

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

For ji bo Ubuntu 14, Debian 7 Wekî din em dikin:

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

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

Me çi kiriye? Me messagebus, ku ji bo xebitandina Debian/Ubuntu wenda bû, sererast kir, û modules_dep, ku ji OpenVZ-ê dihat û barkirina gelek modulên kernelê asteng dikir, rakirin.

gav 6

Em VM-ê ji nû ve saz dikin, di VNC-ê de kontrol dikin ka barkirin çawa pêş dikeve û, bi îdeal, her tişt dê bê pirsgirêk bar bike. Her çend dibe ku piştî koçberiyê hin pirsgirêkên taybetî derkevin holê jî, ew li derveyî çarçoweya vê gotarê ne û her ku derketin dê werin sererast kirin.

Ez hêvî dikim ku ev agahdarî kêrhatî ye! 🙂

Source: www.habr.com

Add a comment