ఓపెన్విజెడ్ కంటైనర్ను పూర్తి KVM వర్చువలైజేషన్తో సర్వర్కు బదిలీ చేయాల్సిన ఎవరైనా తమ జీవితంలో ఒక్కసారైనా కొన్ని సమస్యలను ఎదుర్కొన్నారు:
- చాలా సమాచారం పాతది మరియు చాలా కాలం పాటు EOL చక్రాన్ని దాటిన OS లకు సంబంధించినది
- వేర్వేరు ఆపరేటింగ్ సిస్టమ్ల కోసం వేర్వేరు సమాచారం ఎల్లప్పుడూ అందించబడుతుంది మరియు మైగ్రేషన్ సమయంలో సాధ్యమయ్యే లోపాలు ఎప్పటికీ పరిగణించబడవు
- కొన్నిసార్లు మీరు మైగ్రేషన్ తర్వాత పని చేయకూడదనుకునే కాన్ఫిగరేషన్లతో వ్యవహరించాల్సి ఉంటుంది
మీరు 1 సర్వర్ని బదిలీ చేసినప్పుడు, మీరు ఎప్పుడైనా ఫ్లైలో ఏదైనా పరిష్కరించవచ్చు, కానీ మీరు మొత్తం క్లస్టర్ను బదిలీ చేసినప్పుడు?
ఈ ఆర్టికల్లో నేను ఓపెన్విజెడ్ కంటైనర్ను కెవిఎమ్కి కనిష్టంగా పనికిరాకుండా ఎలా మార్చాలో మరియు అన్ని సమస్యలకు శీఘ్ర పరిష్కారంతో ఎలా మార్చాలో చెప్పడానికి ప్రయత్నిస్తాను.
ఒక చిన్న విద్యా కార్యక్రమం: OpenVZ అంటే ఏమిటి మరియు KVM అంటే ఏమిటి?
మేము పరిభాషలోకి లోతుగా వెళ్లము, కానీ సాధారణ పరంగా ఇలా చెబుతాము:
OpenVZ — ఆపరేటింగ్ సిస్టమ్ స్థాయిలో వర్చువలైజేషన్, హోస్ట్ మెషీన్లో CPU సూచనలు మరియు వర్చువలైజేషన్ టెక్నాలజీల అవసరం లేనందున మీరు దానిని మైక్రోవేవ్లో కూడా అమలు చేయవచ్చు.
KVM - పూర్తి స్థాయి వర్చువలైజేషన్, CPU యొక్క మొత్తం శక్తిని ఉపయోగించి మరియు ఏదైనా, ఏ విధంగా అయినా, పొడవుగా మరియు అడ్డంగా కత్తిరించే సామర్థ్యాన్ని కలిగి ఉంటుంది.
ప్రజాదరణ పొందిన నమ్మకానికి విరుద్ధంగా, వాతావరణంలో హోస్టింగ్ ప్రొవైడర్లు OpenVZ ఓవర్సోల్డ్ అయింది, కానీ KVM కాదు. అదృష్టవశాత్తూ, KVM ఇప్పుడు దాని సోదరుడిలాగే ఓవర్సోల్డ్ అయింది.
మేము ఏమి తీసుకువెళతాము?
В качестве подопытных для переноса пришлось использовать весь лес операционных систем, которые доступны на OpenVZ: CentOS (6 и 7 версии), Ubuntu (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.
ముఖ్యం! Создавать VM нужно именно на той операционной системе, которая сейчас крутится на CTID. Например, если на CTID установлена Ubuntu 14, то и на VM нужно ставить Ubuntu 14. Минорные версии не важны и их несовпадение не столь критично, а вот мажорные — должны быть одинаковыми.
VMని సృష్టించిన తర్వాత, మేము CTID మరియు VMలో ప్యాకేజీలను అప్డేట్ చేస్తాము (OSని అప్డేట్ చేయడంలో తికమకపడకూడదు - మేము దానిని అప్డేట్ చేయము, మేము ప్యాకేజీలను మాత్రమే అప్డేట్ చేస్తాము మరియు అది వచ్చినట్లయితే, OS వెర్షన్ మెయిన్లో ఉంటుంది సంస్కరణ: Telugu).
కోసం CentOS этот процесс выглядит безобидно:
# yum clean all
# yum update -yИ не менее безобидно для Ubuntu, Debian:
# apt-get update
# apt-get upgrade2 అడుగు
ఇన్స్టాల్ చేయండి CTID, VZ_NODE и VM వినియోగ rsync:
CentOS:
# yum install rsync -yDebian, Ubuntu:
# 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 CTID5 అడుగు
OpenVZ నుండి బదిలీ చేసిన తర్వాత VMని ప్రారంభించడంలో మాకు సహాయపడే అనేక దశలను చేద్దాం.
తో సర్వర్లలో systemd సాధారణ కన్సోల్కి లాగిన్ చేయడంలో సహాయపడే ఆదేశాన్ని అమలు చేద్దాం, ఉదాహరణకు, VNC సర్వర్ స్క్రీన్ ద్వారా
mv /etc/systemd/system/getty.target.wants/getty@tty2.service /etc/systemd/system/getty.target.wants/getty@tty1.serviceసర్వర్లలో 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И последнее, пригодится для Ubuntu, Debian дистрибутивов. Эта ОС может упасть в вечный бут с ошибкой
చాలా వేగంగా లూప్ అవుతోంది. థ్రోట్లింగ్ ఎగ్జిక్యూషన్ కొద్దిగా
OS సంస్కరణను బట్టి అసహ్యకరమైనది, కానీ సులభంగా పరిష్కరించబడుతుంది.
ఆఫ్ Debian 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ఇది సహాయం చేయకపోతే, రెండవ ఎంపికను ప్రయత్నించండి.
తో సమస్యకు రెండవ పరిష్కారం థ్రోట్లింగ్ ఎగ్జిక్యూషన్ కొద్దిగా подходит практически для всех Ubuntu и Debian дистрибутивов.
మేము నిర్వహిస్తాము
bash -x /var/lib/dpkg/info/dbus.postinst configureమరియు కోసం Ubuntu 14, Debian 7 అదనంగా మేము నిర్వహిస్తాము:
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 и мешал загрузки многих модулей ядра.
6 అడుగు
మేము VMని రీబూట్ చేస్తాము, VNCలో లోడింగ్ ఎలా పురోగమిస్తున్నదో తనిఖీ చేయండి మరియు అన్ని సమస్యలు లేకుండా లోడ్ అవుతాయి. వలస తర్వాత కొన్ని నిర్దిష్ట సమస్యలు వచ్చే అవకాశం ఉన్నప్పటికీ, అవి ఈ కథనం యొక్క పరిధికి మించినవి మరియు అవి తలెత్తినప్పుడు సరిదిద్దబడతాయి.
ఈ సమాచారం ఉపయోగకరంగా ఉంటుందని నేను ఆశిస్తున్నాను! 🙂
మూలం: www.habr.com
