తలనొప్పి లేకుండా OpenVZ 6 కంటైనర్‌ను KVM సర్వర్‌కి ఎలా బదిలీ చేయాలి

ఓపెన్‌విజెడ్ కంటైనర్‌ను పూర్తి KVM వర్చువలైజేషన్‌తో సర్వర్‌కు బదిలీ చేయాల్సిన ఎవరైనా తమ జీవితంలో ఒక్కసారైనా కొన్ని సమస్యలను ఎదుర్కొన్నారు:

  • చాలా సమాచారం పాతది మరియు చాలా కాలం పాటు EOL చక్రాన్ని దాటిన OS లకు సంబంధించినది
  • వేర్వేరు ఆపరేటింగ్ సిస్టమ్‌ల కోసం వేర్వేరు సమాచారం ఎల్లప్పుడూ అందించబడుతుంది మరియు మైగ్రేషన్ సమయంలో సాధ్యమయ్యే లోపాలు ఎప్పటికీ పరిగణించబడవు
  • కొన్నిసార్లు మీరు మైగ్రేషన్ తర్వాత పని చేయకూడదనుకునే కాన్ఫిగరేషన్‌లతో వ్యవహరించాల్సి ఉంటుంది

మీరు 1 సర్వర్‌ని బదిలీ చేసినప్పుడు, మీరు ఎప్పుడైనా ఫ్లైలో ఏదైనా పరిష్కరించవచ్చు, కానీ మీరు మొత్తం క్లస్టర్‌ను బదిలీ చేసినప్పుడు?

ఈ ఆర్టికల్‌లో నేను ఓపెన్‌విజెడ్ కంటైనర్‌ను కెవిఎమ్‌కి కనిష్టంగా పనికిరాకుండా ఎలా మార్చాలో మరియు అన్ని సమస్యలకు శీఘ్ర పరిష్కారంతో ఎలా మార్చాలో చెప్పడానికి ప్రయత్నిస్తాను.

ఒక చిన్న విద్యా కార్యక్రమం: OpenVZ అంటే ఏమిటి మరియు KVM అంటే ఏమిటి?

మేము పరిభాషలోకి లోతుగా వెళ్లము, కానీ సాధారణ పరంగా ఇలా చెబుతాము:

OpenVZ — ఆపరేటింగ్ సిస్టమ్ స్థాయిలో వర్చువలైజేషన్, హోస్ట్ మెషీన్‌లో CPU సూచనలు మరియు వర్చువలైజేషన్ టెక్నాలజీల అవసరం లేనందున మీరు దానిని మైక్రోవేవ్‌లో కూడా అమలు చేయవచ్చు.

KVM - పూర్తి స్థాయి వర్చువలైజేషన్, CPU యొక్క మొత్తం శక్తిని ఉపయోగించి మరియు ఏదైనా, ఏ విధంగా అయినా, పొడవుగా మరియు అడ్డంగా కత్తిరించే సామర్థ్యాన్ని కలిగి ఉంటుంది.

హోస్టింగ్ ప్రొవైడర్లలో OpenVZ ఎక్కువగా విక్రయించబడుతుందనే ప్రజాదరణ పొందిన నమ్మకానికి విరుద్ధంగా, KVM కాదు - అదృష్టవశాత్తూ, KVM ఇప్పుడు దాని సోదరుడి కంటే అధ్వాన్నంగా అమ్ముడవుతోంది.

మేము ఏమి తీసుకువెళతాము?

బదిలీ కోసం టెస్ట్ సబ్జెక్ట్‌లుగా, మేము OpenVZలో అందుబాటులో ఉన్న ఆపరేటింగ్ సిస్టమ్‌ల మొత్తం ఫారెస్ట్‌ను ఉపయోగించాల్సి వచ్చింది: CentOS (6 మరియు 7 వెర్షన్‌లు), ఉబుంటు (14, 16 మరియు 18 LTS), Debian 7.

చాలా వరకు OpenVZ కంటైనర్‌లు ఇప్పటికే ఒక రకమైన LAMPని నడుపుతున్నాయని మరియు కొన్ని నిర్దిష్ట సాఫ్ట్‌వేర్‌లను కలిగి ఉన్నాయని భావించబడింది. చాలా తరచుగా, ఇవి ISPmanager, VestaCP నియంత్రణ ప్యానెల్‌తో కాన్ఫిగరేషన్‌లు (మరియు చాలా తరచుగా, సంవత్సరాలుగా నవీకరించబడవు). వారి బదిలీ అభ్యర్థనలను కూడా పరిగణనలోకి తీసుకోవాలి.

బదిలీ చేయబడిన కంటైనర్ యొక్క IP చిరునామాను సంరక్షించేటప్పుడు మైగ్రేషన్ జరుగుతుంది; కంటైనర్ కలిగి ఉన్న IP VMలో సేవ్ చేయబడిందని మరియు సమస్యలు లేకుండా పని చేస్తుందని మేము ఊహిస్తాము.

బదిలీ చేయడానికి ముందు, మన దగ్గర ప్రతిదీ ఉందని నిర్ధారించుకోండి:

  • OpenVZ సర్వర్, హోస్ట్ మెషీన్‌కు పూర్తి రూట్ యాక్సెస్, కంటైనర్‌లను ఆపడం/మౌంట్ చేయడం/ప్రారంభించడం/తొలగించడం సామర్థ్యం
  • KVM సర్వర్, హోస్ట్ మెషీన్‌కు పూర్తి రూట్ యాక్సెస్, అది సూచించే అన్నిటితో. ప్రతిదీ ఇప్పటికే కాన్ఫిగర్ చేయబడిందని మరియు వెళ్ళడానికి సిద్ధంగా ఉందని భావించబడుతుంది.

బదిలీ చేయడం ప్రారంభిద్దాం

మేము బదిలీని ప్రారంభించే ముందు, గందరగోళాన్ని నివారించడంలో మీకు సహాయపడే నిబంధనలను నిర్వచిద్దాం:

KVM_NODE - KVM హోస్ట్ మెషిన్
VZ_NODE - OpenVZ హోస్ట్ మెషిన్
CTID - OpenVZ కంటైనర్
VM - KVM వర్చువల్ సర్వర్

మైగ్రేషన్ కోసం సిద్ధమౌతోంది మరియు వర్చువల్ మిషన్లను సృష్టిస్తోంది.

1 అడుగు

మేము కంటైనర్‌ను ఎక్కడికో తరలించాల్సిన అవసరం ఉన్నందున, మేము సృష్టిస్తాము VM సారూప్య కాన్ఫిగరేషన్‌తో KVM_NODE.
ముఖ్యం! మీరు ప్రస్తుతం CTIDలో అమలవుతున్న ఆపరేటింగ్ సిస్టమ్‌లో VMని సృష్టించాలి. ఉదాహరణకు, Ubuntu 14 CTIDలో ఇన్‌స్టాల్ చేయబడి ఉంటే, Ubuntu 14 తప్పనిసరిగా VMలో ఇన్‌స్టాల్ చేయబడాలి. చిన్న సంస్కరణలు ముఖ్యమైనవి కావు మరియు వాటి వ్యత్యాసం అంత క్లిష్టమైనది కాదు, కానీ ప్రధాన సంస్కరణలు ఒకే విధంగా ఉండాలి.

VMని సృష్టించిన తర్వాత, మేము CTID మరియు VMలో ప్యాకేజీలను అప్‌డేట్ చేస్తాము (OSని అప్‌డేట్ చేయడంలో తికమకపడకూడదు - మేము దానిని అప్‌డేట్ చేయము, మేము ప్యాకేజీలను మాత్రమే అప్‌డేట్ చేస్తాము మరియు అది వచ్చినట్లయితే, OS వెర్షన్ మెయిన్‌లో ఉంటుంది సంస్కరణ: Telugu).

CentOS కోసం ఈ ప్రక్రియ ప్రమాదకరం కాదు:

# yum clean all
# yum update -y

మరియు ఉబుంటు మరియు డెబియన్‌లకు తక్కువ ప్రమాదకరం కాదు:

# apt-get update
# apt-get upgrade

2 అడుగు

ఇన్‌స్టాల్ చేయండి CTID, VZ_NODE и VM వినియోగ rsync:

centos:

# yum install rsync -y

డెబియన్, ఉబుంటు:

# apt-get install rsync -y

మేము అక్కడ లేదా అక్కడ వేరే ఏదైనా ఇన్‌స్టాల్ చేయడం లేదు.

3 అడుగు

మేము ఒక స్టాప్ చేస్తాము CTID VZ_NODE జట్టు

vzctl stop CTID

చిత్రాన్ని మౌంట్ చేస్తోంది CTID:

vzctl mount CTID

/vz/root/ ఫోల్డర్‌కి వెళ్లండిCTID మరియు అమలు చేయండి

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

రూట్ కింద, /root/exclude.txt ఫైల్‌ను సృష్టించండి - ఇది కొత్త సర్వర్‌కు చేరుకోని మినహాయింపుల జాబితాను కలిగి ఉంటుంది.

/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

మేము కనెక్ట్ చేస్తాము KVM_NODE మరియు మా ప్రారంభించండి VMతద్వారా ఇది పని చేస్తుంది మరియు నెట్‌వర్క్‌లో అందుబాటులో ఉంటుంది.

ఇప్పుడు బదిలీకి అంతా సిద్ధమైంది. వెళ్ళండి!

4 అడుగు

ఇప్పటికీ స్పెల్ కింద, మేము ప్రదర్శన

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

rsync కమాండ్ బదిలీని నిర్వహిస్తుంది, కీలు స్పష్టంగా ఉన్నాయని మేము ఆశిస్తున్నాము - సిమ్‌లింక్‌లు, యాక్సెస్ హక్కులు, యజమానులు మరియు సమూహాల సంరక్షణతో బదిలీ జరుగుతుంది మరియు ఎక్కువ వేగం కోసం ఎన్‌క్రిప్షన్ నిలిపివేయబడుతుంది (మీరు కొన్ని వేగవంతమైన సాంకేతికలిపిని ఉపయోగించవచ్చు, కానీ ఈ పనికి ఇది అంత ముఖ్యమైనది కాదు) , అలాగే కుదింపు నిలిపివేయబడింది.

rsync పూర్తి చేసిన తర్వాత, chroot నుండి నిష్క్రమించండి (ctrl+d నొక్కడం ద్వారా) మరియు అమలు చేయండి

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

5 అడుగు

OpenVZ నుండి బదిలీ చేసిన తర్వాత VMని ప్రారంభించడంలో మాకు సహాయపడే అనేక దశలను చేద్దాం.
తో సర్వర్‌లలో systemd సాధారణ కన్సోల్‌కి లాగిన్ చేయడంలో సహాయపడే ఆదేశాన్ని అమలు చేద్దాం, ఉదాహరణకు, VNC సర్వర్ స్క్రీన్ ద్వారా

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

సర్వర్లలో CentOS 6 и CentOS 7 తాజా కెర్నల్‌ను ఇన్‌స్టాల్ చేయాలని నిర్ధారించుకోండి:

yum install kernel-$(uname -r)

సర్వర్ దాని నుండి లోడ్ చేయబడవచ్చు, కానీ బదిలీ తర్వాత అది పనిచేయడం ఆగిపోవచ్చు లేదా తొలగించబడుతుంది.

సర్వర్‌లో CentOS 7 మీరు PolkitD కోసం చిన్న పరిష్కారాన్ని వర్తింపజేయాలి, లేకుంటే సర్వర్ ఎప్పటికీ క్రాష్ అవుతుంది:

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

అన్ని సర్వర్‌లలో, Apache కోసం mod_fcgid ఇన్‌స్టాల్ చేయబడితే, మేము హక్కులతో చిన్న పరిష్కారాన్ని చేస్తాము, లేకుంటే mod_fcgidని ఉపయోగించే సైట్‌లు 500 లోపంతో క్రాష్ అవుతాయి:

chmod +s `which suexec` && apachectl restart

మరియు చివరి విషయం ఉబుంటు మరియు డెబియన్ పంపిణీలకు ఉపయోగపడుతుంది. ఈ OS లోపంతో ఎటర్నల్ బూట్‌లో క్రాష్ కావచ్చు

చాలా వేగంగా లూప్ అవుతోంది. థ్రోట్లింగ్ ఎగ్జిక్యూషన్ కొద్దిగా

OS సంస్కరణను బట్టి అసహ్యకరమైనది, కానీ సులభంగా పరిష్కరించబడుతుంది.

ఆఫ్ డెబియన్ 9 పరిష్కారం ఇలా కనిపిస్తుంది:

మేము నిర్వహిస్తాము

dbus-uuidgen

మనకు లోపం వస్తే

/usr/local/lib/libdbus-1.so.3: వెర్షన్ `LIBDBUS_PRIVATE_1.10.8′ కనుగొనబడలేదు

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

ప్రతిదీ క్రమంలో ఉంటే, మేము చేస్తాము

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

ఇది సహాయం చేయకపోతే, రెండవ ఎంపికను ప్రయత్నించండి.

తో సమస్యకు రెండవ పరిష్కారం థ్రోట్లింగ్ ఎగ్జిక్యూషన్ కొద్దిగా దాదాపు అన్ని ఉబుంటు మరియు డెబియన్ పంపిణీలకు అనుకూలం.

మేము నిర్వహిస్తాము

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

మరియు కోసం ఉబుంటు 9, డెబియన్ 7 అదనంగా మేము నిర్వహిస్తాము:

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

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

మనం ఏం చేశాం? మేము డెబియన్/ఉబుంటును అమలు చేయడానికి తప్పిపోయిన మెసేజ్‌బస్‌ని పునరుద్ధరించాము మరియు OpenVZ నుండి వచ్చిన modules_depని తీసివేసాము మరియు అనేక కెర్నల్ మాడ్యూల్స్ లోడ్ చేయడంలో జోక్యం చేసుకున్నాము.

6 అడుగు

మేము VMని రీబూట్ చేస్తాము, VNCలో లోడింగ్ ఎలా పురోగమిస్తున్నదో తనిఖీ చేయండి మరియు అన్ని సమస్యలు లేకుండా లోడ్ అవుతాయి. వలస తర్వాత కొన్ని నిర్దిష్ట సమస్యలు వచ్చే అవకాశం ఉన్నప్పటికీ, అవి ఈ కథనం యొక్క పరిధికి మించినవి మరియు అవి తలెత్తినప్పుడు సరిదిద్దబడతాయి.

ఈ సమాచారం ఉపయోగకరంగా ఉంటుందని నేను ఆశిస్తున్నాను! 🙂

మూలం: www.habr.com

ఒక వ్యాఖ్యను జోడించండి