තම ජීවිතයේ එක් වරක්වත් OpenVZ බහාලුමක් සම්පූර්ණ KVM අථත්යකරණයක් සහිත සේවාදායකයකට මාරු කිරීමට අවශ්ය වූ ඕනෑම අයෙකුට යම් ගැටළු වලට මුහුණ දීමට සිදු වී ඇත:
- බොහෝ තොරතුරු හුදෙක් යල් පැන ගිය ඒවා වන අතර දිගු කාලයක් EOL චක්රය පසුකර ඇති OS සඳහා අදාළ වේ
- විවිධ මෙහෙයුම් පද්ධති සඳහා සෑම විටම විවිධ තොරතුරු සපයනු ලබන අතර, සංක්රමණයේදී සිදුවිය හැකි දෝෂ කිසිවිටෙක නොසැලකේ
- සමහර විට ඔබට සංක්රමණයෙන් පසු වැඩ කිරීමට අවශ්ය නොවන වින්යාසයන් සමඟ කටයුතු කිරීමට සිදු වේ
ඔබ 1 සේවාදායකයක් මාරු කරන විට, ඔබට සෑම විටම පියාසර කරන විට යමක් නිවැරදි කළ හැකිය, නමුත් ඔබ සම්පූර්ණ පොකුරක් මාරු කරන විට?
මෙම ලිපියෙන් මම ඔබට කියන්නට උත්සාහ කරන්නේ OpenVZ බහාලුමක් අවම අක්රීය කාලයක් සහ සියලු ගැටලු සඳහා ඉක්මන් විසඳුමක් සමඟ KVM වෙත නිවැරදිව සංක්රමණය කරන්නේ කෙසේද යන්නයි.
කුඩා අධ්යාපනික වැඩසටහනක්: 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 සත්කාරක යන්ත්රය
සී.ටී.අයි.ඩී - OpenVZ බහාලුම්
VM - KVM අතථ්ය සේවාදායකය
සංක්රමණය සඳහා සූදානම් වීම සහ අතථ්ය යන්ත්ර නිර්මාණය කිරීම.
පියවරක් 1
අපට කන්ටේනරය කොහේ හරි ගෙන යා යුතු බැවින්, අපි නිර්මාණය කරන්නෙමු VM සමාන වින්යාසයක් සමඟ KVM_NODE.
වැදගත්! Создавать VM нужно именно на той операционной системе, которая сейчас крутится на CTID. Например, если на CTID установлена Ubuntu 14, то и на VM нужно ставить Ubuntu 14. Минорные версии не важны и их несовпадение не столь критично, а вот мажорные — должны быть одинаковыми.
VM නිර්මාණය කිරීමෙන් පසු, අපි CTID සහ VM හි පැකේජ යාවත්කාලීන කරන්නෙමු (OS යාවත්කාලීන කිරීම සමඟ පටලවා නොගත යුතුය - අපි එය යාවත්කාලීන නොකරමු, අපි එය යාවත්කාලීන කරන්නේ පැකේජ පමණක් වන අතර, එය පැමිණියහොත්, ප්රධාන තුළ OS අනුවාදය යාවත්කාලීන කරන්නෙමු. පිටපත).
සඳහා CentOS этот процесс выглядит безобидно:
# yum clean all
# yum update -yИ не менее безобидно для Ubuntu, Debian:
# apt-get update
# apt-get upgradeපියවරක් 2
ස්ථාපනය කරන්න සී.ටී.අයි.ඩී, VZ_NODE и VM උපයෝගීතාව rsync:
CentOS:
# yum install rsync -yDebian, Ubuntu:
# apt-get install rsync -yඅපි එහි හෝ එහි වෙනත් කිසිවක් ස්ථාපනය නොකරමු.
පියවරක් 3
අපි නතර කරනවා සී.ටී.අයි.ඩී මත VZ_NODE කණ්ඩායම
vzctl stop CTIDරූපය සවි කිරීම සී.ටී.අයි.ඩී:
vzctl mount CTID/vz/root/ ෆෝල්ඩරය වෙත යන්නසී.ටී.අයි.ඩී සහ ක්රියාත්මක කරන්න
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/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 дистрибутивов. Эта ОС может упасть в вечный бут с ошибкой
ඉතා වේගයෙන් ලූප කිරීම. throttling execution ටිකක්
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එය උදව් නොකළේ නම්, දෙවන විකල්පය උත්සාහ කරන්න.
සමඟ ඇති ගැටලුවට දෙවන විසඳුම throttling execution ටිකක් подходит практически для всех 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
