തലവേദന കൂടാതെ KVM സെർവറിലേക്ക് OpenVZ 6 കണ്ടെയ്നർ എങ്ങനെ കൈമാറാം

ജീവിതത്തിൽ ഒരിക്കലെങ്കിലും പൂർണ്ണ കെവിഎം വിർച്ച്വലൈസേഷനുള്ള സെർവറിലേക്ക് OpenVZ കണ്ടെയ്‌നർ ട്രാൻസ്ഫർ ചെയ്യേണ്ടി വരുന്ന ആർക്കും ചില പ്രശ്നങ്ങൾ നേരിടേണ്ടി വന്നിട്ടുണ്ട്:

  • മിക്ക വിവരങ്ങളും കാലഹരണപ്പെട്ടതും ദീർഘകാലം EOL സൈക്കിൾ കടന്നുപോയ OS-കൾക്ക് പ്രസക്തവുമാണ്
  • വ്യത്യസ്‌ത ഓപ്പറേറ്റിംഗ് സിസ്റ്റങ്ങൾക്കായി എല്ലായ്‌പ്പോഴും വ്യത്യസ്‌ത വിവരങ്ങൾ നൽകിയിരിക്കുന്നു, മൈഗ്രേഷൻ സമയത്ത് ഉണ്ടാകാവുന്ന പിശകുകൾ ഒരിക്കലും പരിഗണിക്കില്ല
  • ഇടയ്‌ക്കിടെ മൈഗ്രേഷനുശേഷം പ്രവർത്തിക്കാൻ ആഗ്രഹിക്കാത്ത കോൺഫിഗറേഷനുകൾ ചിലപ്പോൾ നിങ്ങൾ കൈകാര്യം ചെയ്യേണ്ടിവരും

നിങ്ങൾ 1 സെർവർ ട്രാൻസ്ഫർ ചെയ്യുമ്പോൾ, നിങ്ങൾക്ക് എപ്പോൾ വേണമെങ്കിലും എന്തെങ്കിലും പരിഹരിക്കാൻ കഴിയും, എന്നാൽ നിങ്ങൾ ഒരു മുഴുവൻ ക്ലസ്റ്ററും കൈമാറുമ്പോൾ?

ഈ ലേഖനത്തിൽ, കുറഞ്ഞ പ്രവർത്തനരഹിതമായ സമയവും എല്ലാ പ്രശ്നങ്ങൾക്കും പെട്ടെന്നുള്ള പരിഹാരവും ഉപയോഗിച്ച് ഒരു OpenVZ കണ്ടെയ്‌നർ KVM-ലേക്ക് എങ്ങനെ ശരിയായി മൈഗ്രേറ്റ് ചെയ്യാമെന്ന് നിങ്ങളോട് പറയാൻ ഞാൻ ശ്രമിക്കും.

ഒരു ചെറിയ വിദ്യാഭ്യാസ പരിപാടി: എന്താണ് OpenVZ, എന്താണ് KVM?

ഞങ്ങൾ പദാവലിയിലേക്ക് ആഴത്തിൽ പോകില്ല, പക്ഷേ പൊതുവായി പറയും:

OpenVZ - ഓപ്പറേറ്റിംഗ് സിസ്റ്റം തലത്തിലുള്ള വിർച്ച്വലൈസേഷൻ, നിങ്ങൾക്ക് ഇത് മൈക്രോവേവിൽ പോലും വിന്യസിക്കാൻ കഴിയും, കാരണം ഹോസ്റ്റ് മെഷീനിൽ സിപിയു നിർദ്ദേശങ്ങളും വിർച്ച്വലൈസേഷൻ സാങ്കേതികവിദ്യകളും ആവശ്യമില്ല.

കെവിഎം - പൂർണ്ണമായ വിർച്ച്വലൈസേഷൻ, സിപിയുവിന്റെ എല്ലാ ശക്തിയും ഉപയോഗിച്ച്, എന്തും, ഏത് വിധത്തിലും, അത് നീളത്തിലും കുറുകെയും മുറിക്കാൻ കഴിവുള്ളതാണ്.

ഹോസ്റ്റിംഗ് ദാതാക്കളിൽ OpenVZ ഓവർസെൽഡ് ആകും എന്ന ജനകീയ വിശ്വാസത്തിന് വിരുദ്ധമായി, KVM അങ്ങനെ ചെയ്യില്ല - ഭാഗ്യവശാൽ, KVM ഇപ്പോൾ അതിന്റെ സഹോദരനേക്കാൾ മോശമായ രീതിയിൽ വിറ്റഴിക്കപ്പെടുന്നു.

ഞങ്ങൾ എന്ത് കൊണ്ടുപോകും?

കൈമാറ്റത്തിനുള്ള ടെസ്റ്റ് സബ്ജക്ടുകൾ എന്ന നിലയിൽ, OpenVZ-ൽ ലഭ്യമായ ഓപ്പറേറ്റിംഗ് സിസ്റ്റങ്ങളുടെ മുഴുവൻ വനവും ഞങ്ങൾ ഉപയോഗിക്കേണ്ടതുണ്ട്: CentOS (6, 7 പതിപ്പുകൾ), ഉബുണ്ടു (14, 16, 18 LTS), Debian 7.

മിക്ക OpenVZ കണ്ടെയ്‌നറുകളും ഇതിനകം ഏതെങ്കിലും തരത്തിലുള്ള LAMP പ്രവർത്തിക്കുന്നുണ്ടെന്നും ചിലതിൽ ചില പ്രത്യേക സോഫ്റ്റ്‌വെയർ ഉണ്ടെന്നും അനുമാനിക്കപ്പെട്ടു. മിക്കപ്പോഴും, ഇവ ISPmanager, VestaCP കൺട്രോൾ പാനൽ എന്നിവയുമായുള്ള കോൺഫിഗറേഷനുകളായിരുന്നു (മിക്കപ്പോഴും, വർഷങ്ങളോളം അപ്ഡേറ്റ് ചെയ്തിട്ടില്ല). അവരുടെ ട്രാൻസ്ഫർ അഭ്യർത്ഥനകളും കണക്കിലെടുക്കണം.

കൈമാറ്റം ചെയ്ത കണ്ടെയ്‌നറിന്റെ ഐപി വിലാസം സംരക്ഷിക്കുന്നതിനിടയിലാണ് മൈഗ്രേഷൻ നടത്തുന്നത്; കണ്ടെയ്‌നറിലുണ്ടായിരുന്ന ഐപി വിഎമ്മിൽ സംരക്ഷിച്ചിട്ടുണ്ടെന്നും പ്രശ്‌നങ്ങളില്ലാതെ പ്രവർത്തിക്കുമെന്നും ഞങ്ങൾ അനുമാനിക്കും.

കൈമാറ്റം ചെയ്യുന്നതിനുമുമ്പ്, എല്ലാം ഞങ്ങളുടെ കൈയിലുണ്ടെന്ന് ഉറപ്പാക്കാം:

  • OpenVZ സെർവർ, ഹോസ്റ്റ് മെഷീനിലേക്കുള്ള പൂർണ്ണ റൂട്ട് ആക്‌സസ്, കണ്ടെയ്‌നറുകൾ നിർത്താനും/മൗണ്ട് ചെയ്യാനും/ആരംഭിക്കാനും/ഇല്ലാതാക്കാനുമുള്ള കഴിവ്
  • കെവിഎം സെർവർ, ഹോസ്റ്റ് മെഷീനിലേക്കുള്ള പൂർണ്ണ റൂട്ട് ആക്‌സസ്, അത് സൂചിപ്പിക്കുന്നതെല്ലാം. എല്ലാം ഇതിനകം ക്രമീകരിച്ചിട്ടുണ്ടെന്നും പോകാൻ തയ്യാറാണെന്നും അനുമാനിക്കപ്പെടുന്നു.

ട്രാൻസ്ഫർ ചെയ്യാൻ തുടങ്ങാം

ഞങ്ങൾ കൈമാറ്റം ആരംഭിക്കുന്നതിന് മുമ്പ്, ആശയക്കുഴപ്പം ഒഴിവാക്കാൻ നിങ്ങളെ സഹായിക്കുന്ന നിബന്ധനകൾ നിർവചിക്കാം:

KVM_NODE - കെവിഎം ഹോസ്റ്റ് മെഷീൻ
VZ_NODE - OpenVZ ഹോസ്റ്റ് മെഷീൻ
സി.ടി.ഐ.ഡി - OpenVZ കണ്ടെയ്നർ
VM - കെവിഎം വെർച്വൽ സെർവർ

മൈഗ്രേഷനായി തയ്യാറെടുക്കുകയും വെർച്വൽ മെഷീനുകൾ സൃഷ്ടിക്കുകയും ചെയ്യുന്നു.

ഘട്ടം ക്സനുമ്ക്സ

കണ്ടെയ്നർ എവിടെയെങ്കിലും നീക്കേണ്ടതിനാൽ, ഞങ്ങൾ സൃഷ്ടിക്കും VM സമാനമായ കോൺഫിഗറേഷൻ ഉള്ളത് KVM_NODE.
പ്രധാനപ്പെട്ടത്! നിലവിൽ CTID-ൽ പ്രവർത്തിക്കുന്ന ഓപ്പറേറ്റിംഗ് സിസ്റ്റത്തിൽ നിങ്ങൾ ഒരു VM സൃഷ്ടിക്കേണ്ടതുണ്ട്. ഉദാഹരണത്തിന്, CTID-യിൽ Ubuntu 14 ഇൻസ്റ്റാൾ ചെയ്തിട്ടുണ്ടെങ്കിൽ, VM-ൽ Ubuntu 14 ഇൻസ്റ്റാൾ ചെയ്തിരിക്കണം, ചെറിയ പതിപ്പുകൾ പ്രധാനമല്ല, അവയുടെ പൊരുത്തക്കേട് അത്ര നിർണായകമല്ല, പക്ഷേ പ്രധാന പതിപ്പുകൾ സമാനമായിരിക്കണം.

VM സൃഷ്‌ടിച്ചതിന് ശേഷം, ഞങ്ങൾ CTID-യിലും VM-ലും പാക്കേജുകൾ അപ്‌ഡേറ്റ് ചെയ്യും (OS അപ്‌ഡേറ്റ് ചെയ്യുന്നതുമായി തെറ്റിദ്ധരിക്കേണ്ടതില്ല - ഞങ്ങൾ അത് അപ്‌ഡേറ്റ് ചെയ്യുന്നില്ല, പാക്കേജുകൾ മാത്രമേ ഞങ്ങൾ അപ്‌ഡേറ്റ് ചെയ്യുന്നുള്ളൂ, അത് വന്നാൽ, പ്രധാന OS പതിപ്പ് പതിപ്പ്).

CentOS-ന് ഈ പ്രക്രിയ നിരുപദ്രവകരമാണെന്ന് തോന്നുന്നു:

# yum clean all
# yum update -y

ഉബുണ്ടുവിനും ഡെബിയനും ദോഷകരമല്ല:

# apt-get update
# apt-get upgrade

ഘട്ടം ക്സനുമ്ക്സ

ഇൻസ്റ്റാൾ ചെയ്യുക സി.ടി.ഐ.ഡി, VZ_NODE и VM യൂട്ടിലിറ്റി rsync:

CentOS:

# yum install rsync -y

ഡെബിയൻ, ഉബുണ്ടു:

# apt-get install rsync -y

ഞങ്ങൾ അവിടെയോ അവിടെയോ മറ്റൊന്നും ഇൻസ്റ്റാൾ ചെയ്യുന്നില്ല.

ഘട്ടം ക്സനുമ്ക്സ

ഞങ്ങൾ നിർത്തുന്നു സി.ടി.ഐ.ഡി ഓൺ 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അങ്ങനെ അത് പ്രവർത്തിക്കുകയും നെറ്റ്‌വർക്കിലൂടെ ആക്‌സസ് ചെയ്യപ്പെടുകയും ചെയ്യും.

ഇപ്പോൾ എല്ലാം കൈമാറ്റത്തിന് തയ്യാറാണ്. പോകൂ!

ഘട്ടം ക്സനുമ്ക്സ

ഇപ്പോഴും മന്ത്രത്തിന് കീഴിലാണ്, ഞങ്ങൾ പ്രകടനം നടത്തുന്നു

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

ഘട്ടം ക്സനുമ്ക്സ

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

പിന്നെ ഉബുണ്ടു 14, ഡെബിയന് 7 കൂടാതെ, ഞങ്ങൾ നിർവഹിക്കുന്നു:

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

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

നമ്മൾ എന്താണ് ചെയ്തത്? ഞങ്ങൾ ഡെബിയൻ/ഉബുണ്ടു പ്രവർത്തിപ്പിക്കാൻ കാണാതായ മെസേജ്ബസ് പുനഃസ്ഥാപിച്ചു, കൂടാതെ OpenVZ-ൽ നിന്ന് വന്നതും നിരവധി കേർണൽ മൊഡ്യൂളുകളുടെ ലോഡിംഗിൽ ഇടപെടുന്നതുമായ modules_dep നീക്കംചെയ്തു.

ഘട്ടം ക്സനുമ്ക്സ

ഞങ്ങൾ VM റീബൂട്ട് ചെയ്യുന്നു, ലോഡിംഗ് എങ്ങനെ പുരോഗമിക്കുന്നു എന്ന് VNC-യിൽ പരിശോധിക്കുക, കൂടാതെ എല്ലാം പ്രശ്നങ്ങളില്ലാതെ ലോഡ് ചെയ്യും. കുടിയേറ്റത്തിനു ശേഷം ചില പ്രത്യേക പ്രശ്നങ്ങൾ പ്രത്യക്ഷപ്പെടാൻ സാധ്യതയുണ്ടെങ്കിലും, അവ ഈ ലേഖനത്തിന്റെ പരിധിക്കപ്പുറമാണ്, അവ ഉണ്ടാകുമ്പോൾ അവ ശരിയാക്കും.

ഈ വിവരം ഉപയോഗപ്രദമാണെന്ന് ഞാൻ പ്രതീക്ഷിക്കുന്നു! 🙂

അവലംബം: www.habr.com

ഒരു അഭിപ്രായം ചേർക്കുക