හිසරදයක් නොමැතිව OpenVZ 6 කන්ටේනරය KVM සේවාදායකයට මාරු කරන්නේ කෙසේද

තම ජීවිතයේ එක් වරක්වත් OpenVZ බහාලුමක් සම්පූර්ණ KVM අථත්‍යකරණයක් සහිත සේවාදායකයකට මාරු කිරීමට අවශ්‍ය වූ ඕනෑම අයෙකුට යම් ගැටළු වලට මුහුණ දීමට සිදු වී ඇත:

  • බොහෝ තොරතුරු හුදෙක් යල් පැන ගිය ඒවා වන අතර දිගු කාලයක් EOL චක්‍රය පසුකර ඇති OS සඳහා අදාළ වේ
  • විවිධ මෙහෙයුම් පද්ධති සඳහා සෑම විටම විවිධ තොරතුරු සපයනු ලබන අතර, සංක්‍රමණයේදී සිදුවිය හැකි දෝෂ කිසිවිටෙක නොසැලකේ
  • සමහර විට ඔබට සංක්‍රමණයෙන් පසු වැඩ කිරීමට අවශ්‍ය නොවන වින්‍යාසයන් සමඟ කටයුතු කිරීමට සිදු වේ

ඔබ 1 සේවාදායකයක් මාරු කරන විට, ඔබට සෑම විටම පියාසර කරන විට යමක් නිවැරදි කළ හැකිය, නමුත් ඔබ සම්පූර්ණ පොකුරක් මාරු කරන විට?

මෙම ලිපියෙන් මම ඔබට කියන්නට උත්සාහ කරන්නේ OpenVZ බහාලුමක් අවම අක්‍රීය කාලයක් සහ සියලු ගැටලු සඳහා ඉක්මන් විසඳුමක් සමඟ KVM වෙත නිවැරදිව සංක්‍රමණය කරන්නේ කෙසේද යන්නයි.

කුඩා අධ්යාපනික වැඩසටහනක්: 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 සත්කාරක යන්ත්රය
සී.ටී.අයි.ඩී - OpenVZ බහාලුම්
VM - KVM අතථ්‍ය සේවාදායකය

සංක්‍රමණය සඳහා සූදානම් වීම සහ අතථ්‍ය යන්ත්‍ර නිර්මාණය කිරීම.

පියවරක් 1

අපට කන්ටේනරය කොහේ හරි ගෙන යා යුතු බැවින්, අපි නිර්මාණය කරන්නෙමු VM සමාන වින්‍යාසයක් සමඟ KVM_NODE.
වැදගත්! ඔබ දැනට CTID මත ක්‍රියාත්මක වන මෙහෙයුම් පද්ධතියේ VM එකක් සෑදිය යුතුය. උදාහරණයක් ලෙස, Ubuntu 14 CTID මත ස්ථාපනය කර ඇත්නම්, Ubuntu 14 VM මත ස්ථාපනය කළ යුතුය.සුළු අනුවාද වැදගත් නොවන අතර ඒවායේ විෂමතාවය එතරම් තීරණාත්මක නොවේ, නමුත් ප්‍රධාන අනුවාද සමාන විය යුතුය.

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 -y

ඩේබියන්, උබුන්ටු:

# 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/[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

අවසාන දෙය උබුන්ටු සහ ඩේබියන් බෙදාහැරීම් සඳහා ප්‍රයෝජනවත් වේ. මෙම මෙහෙයුම් පද්ධතිය දෝෂයක් සමඟ සදාකාලික ඇරඹුමකට කඩා වැටිය හැක

ඉතා වේගයෙන් ලූප කිරීම. throttling execution ටිකක්

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

එය උදව් නොකළේ නම්, දෙවන විකල්පය උත්සාහ කරන්න.

සමඟ ඇති ගැටලුවට දෙවන විසඳුම throttling execution ටිකක් සියලුම Ubuntu සහ Debian බෙදාහැරීම් සඳහා සුදුසු වේ.

අපි ඉටු කරනවා

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

සහ සඳහා උබුන්ටු 14, ඩේබියන් 7 අතිරේකව අපි ඉටු කරන්නේ:

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

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

අපි මොනවද කරලා තියෙන්නේ? අපි Debian/Ubuntu ධාවනය කිරීමට අතුරුදහන් වූ messagebus ප්‍රතිසාධනය කළ අතර, OpenVZ වෙතින් පැමිණ බොහෝ කර්නල් මොඩියුල පැටවීමට බාධා කළ modules_dep ඉවත් කළෙමු.

පියවරක් 6

අපි VM නැවත පණගන්වන්නෙමු, පැටවීම ප්‍රගතිය වන්නේ කෙසේදැයි VNC පරීක්ෂා කර, ඉතා මැනවින්, ගැටළු නොමැතිව සියල්ල පූරණය වේ. සංක්‍රමණයෙන් පසු යම් යම් නිශ්චිත ගැටළු මතුවිය හැකි වුවද, ඒවා මෙම ලිපියේ විෂය පථයට ඔබ්බෙන් වන අතර ඒවා පැන නගින විට නිවැරදි කරනු ලැබේ.

මෙම තොරතුරු ප්රයෝජනවත් වනු ඇතැයි මම බලාපොරොත්තු වෙමි! 🙂

මූලාශ්රය: www.habr.com

අදහස් එක් කරන්න