ခေါင်းမကိုက်ဘဲ OpenVZ 6 ကွန်တိန်နာကို KVM ဆာဗာသို့ မည်သို့လွှဲပြောင်းမည်နည်း။

OpenVZ ကွန်တိန်နာကို အပြည့်အ၀ KVM virtualization ဖြင့် ဆာဗာသို့ ရွှေ့ရန် လိုအပ်ဖူးသူတိုင်းသည် ပြဿနာအချို့ကို ကြုံတွေ့ရပါသည်-

  • အချက်အလက်အများစုသည် ရိုးရိုးရှင်းရှင်း ခေတ်နောက်ကျနေပြီး EOL စက်ဝန်းကို ကျော်လွန်သွားသော OS များအတွက် သက်ဆိုင်ပါသည်။
  • မတူညီသော OS သည် မတူညီသော အချက်အလက်များကို အမြဲပေးဆောင်ပြီး ဖြစ်နိုင်ချေရှိသော ရွှေ့ပြောင်းခြင်းဆိုင်ရာ အမှားအယွင်းများကို ဘယ်တော့မှ ထည့်သွင်းစဉ်းစားမည်မဟုတ်ပါ။
  • တစ်ခါတစ်ရံတွင် သင်သည် ရွှေ့ပြောင်းပြီးနောက် အလုပ်မလုပ်လိုသော ဖွဲ့စည်းမှုပုံစံများနှင့် ကိုင်တွယ်ဖြေရှင်းရတတ်သည်။

ဆာဗာ 1 ခုကို သင်ပြောင်းရွှေ့သည့်အခါ၊ သင်သည် တစ်ခုခုကို အမြဲတမ်း အဆင်သင့်ပြင်နိုင်သည်၊ သို့သော် အစုအဝေးတစ်ခုလုံးကို ပြောင်းရွှေ့သည့်အခါကော။

ဤဆောင်းပါးတွင် OpenVZ ကွန်တိန်နာကို KVM တွင် အချိန်အနည်းငယ်မျှနှင့် ပြဿနာအားလုံးကို အမြန်ဖြေရှင်းနည်းဖြင့် မည်ကဲ့သို့ မှန်ကန်စွာရွှေ့ပြောင်းရမည်ကို ဤဆောင်းပါးတွင် ကျွန်ုပ်ပြောပြပါမည်။

အမြန် primer- OpenVZ ကဘာလဲ၊ KVM ဆိုတာဘာလဲ။

ဝေါဟာရဗေဒကို မလေ့လာဘဲ ယေဘူယျအားဖြင့် ပြောရရင်-

OpenVZ - လည်ပတ်မှုစနစ်အဆင့်တွင် virtualization ကို မိုက်ခရိုဝေ့မီးဖိုတွင်ပင် အသုံးချနိုင်ပြီး၊ အိမ်ရှင်စက်တွင် CPU ညွှန်ကြားချက်များနှင့် virtualization နည်းပညာများမလိုအပ်သောကြောင့်၊

KVM - CPU ၏ ပါဝါအပြည့်ကို အသုံးပြု၍ အပြည့်အ၀ virtualization၊ ၎င်းကို အရှည်လိုက်နှင့် ဖြတ်တောက်ကာ မည်သည့်အရာကိုမဆို အတုယူနိုင်စွမ်းရှိသည်။

လူအများယုံကြည်ထားတဲ့အတိုင်း ပတ်ဝန်းကျင်မှာ ဟို့စ်တင် ဝန်ဆောင်မှုပေးသူများ OpenVZ က oversold ဖြစ်နေပေမယ့် KVM ကတော့ မဟုတ်ပါဘူး။ ကံကောင်းထောက်မစွာပဲ၊ KVM ဟာ သူ့ရဲ့အစ်ကိုလိုပဲ oversold ဖြစ်နေပါပြီ။

ငါတို့ ဘာကို လွှဲပေးမှာလဲ ။

В качестве подопытных для переноса пришлось использовать весь лес операционных систем, которые доступны на OpenVZ: CentOS (6 и 7 версии), Ubuntu (14, 16 и 18 LTS), Debian 7.

OpenVZ ကွန်တိန်နာအများစုတွင် LAMP အမျိုးအစားအချို့ရှိပြီး အချို့မှာ အလွန်တိကျသောဆော့ဖ်ဝဲလ်အချို့ရှိနေပြီဟု ယူဆရသည်။ အများစုမှာ၊ ၎င်းတို့သည် ISPmanager ထိန်းချုပ်မှု panel၊ VestaCP (နှင့် အများအားဖြင့် နှစ်ပေါင်းများစွာ မွမ်းမံမွမ်းမံခြင်း) ဖြင့် ဖွဲ့စည်းမှုများဖြစ်သည်။ လွှဲပြောင်းမှုအတွက် ၎င်းတို့၏ တောင်းဆိုမှုများကို ထည့်သွင်းစဉ်းစားရန် လိုအပ်ပါသည်။

ရွှေ့ပြောင်းခြင်းကို ထိန်းသိမ်းစောင့်ရှောက်ခြင်းဖြင့် ဆောင်ရွက်သည် IP လိပ်စာများ သယ်ဆောင်ရလွယ်ကူသော container အတွက်၊ container ၏ IP address ကို VM တွင် သိမ်းဆည်းထားပြီး ပြဿနာမရှိဘဲ အလုပ်လုပ်မည်ဟု ကျွန်ုပ်တို့ ယူဆပါမည်။

မလွှဲပြောင်းမီ၊ ကျွန်ုပ်တို့တွင် အရာအားလုံးရှိနေကြောင်း သေချာစေကြပါစို့။

  • OpenVZ ဆာဗာ၊ လက်ခံသူစက်သို့ အပြည့်အဝ အမြစ်ဝင်ရောက်ခွင့်၊ ကွန်တိန်နာများကို ရပ်တန့်ရန်/တပ်ဆင်ခြင်း/စတင်ခြင်း/ဖယ်ရှားနိုင်မှု
  • KVM ဆာဗာ၊ အလုံးစုံသော host machine သို့ အမြစ်ဝင်ရောက်ခွင့်၊ အားလုံးပြင်ဆင်ပြီးပြီး အလုပ်လုပ်ရန် အသင့်ဖြစ်နေပြီဟု ယူဆပါသည်။

လွှဲပြောင်းမှုစတင်ကြပါစို့

လွှဲပြောင်းခြင်းမစတင်မီ၊ ရှုပ်ထွေးမှုများကို ရှောင်ရှားနိုင်စေမည့် စည်းကမ်းချက်များကို သတ်မှတ်ကြပါစို့။

KVM_NODE - KVM တန်ဆာပလာစက်
VZ_NODE - OpenVZ host စက်
CTID - OpenVZ ကွန်တိန်နာ
VM - KVM virtual ဆာဗာ

ရွှေ့ပြောင်းခြင်းနှင့် virtual machines ဖန်တီးခြင်းအတွက် ပြင်ဆင်ခြင်း။

ခြေလှမ်း 1

ကွန်တိန်နာကို တစ်နေရာရာသို့ ရွှေ့ရန် လိုအပ်သောကြောင့် ကျွန်ုပ်တို့ ဖန်တီးပါမည်။ VM အလားတူ configuration နှင့် on 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

ကျနော်တို့ install လုပ်ပါ။ CTID, VZ_NODE и VM utility rsync:

CentOS:

# yum install rsync -y

Debian, 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 .

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 command သည် လွှဲပြောင်းခြင်းကို လုပ်ဆောင်လိမ့်မည်၊ သော့များသည် ရှင်းရှင်းလင်းလင်းရှိမည်ဟု ကျွန်ုပ်တို့ မျှော်လင့်ပါသည် - လွှဲပြောင်းမှုသည် symlinks များ၊ ရယူပိုင်ခွင့်များ၊ ပိုင်ရှင်များနှင့် အဖွဲ့များကို ထိန်းသိမ်းထားခြင်းဖြင့် လုပ်ဆောင်ပြီး ပိုမိုမြန်ဆန်စေရန် ကုဒ်ဝှက်ခြင်းကို ပိတ်ထားသည် (၎င်းသည် ပိုမိုမြန်ဆန်သော cipher အချို့ကို အသုံးပြုရန် ဖြစ်နိုင်သည်၊ သို့သော် ၎င်းသည် ဤလုပ်ငန်း၏ဘောင်အတွင်းတွင် အရေးမကြီးပါ) နှင့် compression ကို ပိတ်ထားသည်။

rsync ပြီးပါက chroot မှ ထွက်ပါ (ctrl+d) ကိုနှိပ်ပြီး execute လုပ်ပါ။

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

ခြေလှမ်း 5

OpenVZ မှပြောင်းရွှေ့ပြီးနောက် VM ကိုဖွင့်ရန် ကူညီပေးမည့်လုပ်ဆောင်ချက်များစွာကို လုပ်ဆောင်ကြပါစို့။
ဆာဗာများနှင့်အတူ Systemd VNC ဆာဗာစခရင်မှတဆင့် ကျွန်ုပ်တို့ကို ပုံမှန် console သို့ log in ကူညီပေးမည့် command တစ်ခုကို run ကြပါစို့

mv /etc/systemd/system/getty.target.wants/getty@tty2.service /etc/systemd/system/getty.target.wants/getty@tty1.service

ဆာဗာများပေါ်တွင် CentOS 6 и CentOS 7 အသစ်သော kernel ကိုထည့်သွင်းရန်သေချာစေပါ။

yum install kernel-$(uname -r)

ဆာဗာကို ၎င်းမှဒေါင်းလုဒ်လုပ်နိုင်သော်လည်း လွှဲပြောင်းပြီးနောက် ၎င်းသည် အလုပ်မလုပ်တော့ဘဲ သို့မဟုတ် ဖျက်ပစ်နိုင်သည်။

ဆာဗာပေါ်တွင် CentOS 7 PolkitD အတွက် သေးငယ်သော ပြင်ဆင်မှုတစ်ခုကို သင်အသုံးပြုရန် လိုအပ်သည်၊ သို့မဟုတ်ပါက ဆာဗာသည် ထာဝရ boot ကျသွားလိမ့်မည်-

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 ကို အသုံးပြုထားသော ဆိုက်များသည် error 500 ဖြင့် ပျက်စီးသွားလိမ့်မည်-

chmod +s `which suexec` && apachectl restart

И последнее, пригодится для Ubuntu, Debian дистрибутивов. Эта ОС может упасть в вечный бут с ошибкой

looping အရမ်းမြန်တယ်။ throttling ကွပ်မျက်မှုအနည်းငယ်

OS ဗားရှင်းပေါ် မူတည်၍ အဆင်မပြေသော်လည်း အလွယ်တကူ ပြင်ဆင်နိုင်သည်။

အပေါ် Debian 9 ပြုပြင်ပုံသည် ဤကဲ့သို့ဖြစ်သည်-

ငါတို့လုပ်နေတာ။

dbus-uuidgen

အမှားတစ်ခုရရင်

/usr/local/lib/libdbus-1.so.3: ဗားရှင်း `LIDBUS_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 ကွပ်မျက်မှုအနည်းငယ် подходит практически для всех 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 မည်ကဲ့သို့ loading ဖြစ်နေသည်ကို စစ်ဆေးပါ၊ အကောင်းဆုံးအားဖြင့် - အရာအားလုံးသည် ပြဿနာမရှိဘဲ တက်လာပါလိမ့်မည်။ ရွှေ့ပြောင်းခြင်းပြီးနောက်တွင် အချို့သောပြဿနာများ ပေါ်လာနိုင်သော်လည်း၊ ၎င်းတို့သည် ဤဆောင်းပါး၏ နယ်ပယ်ကျော်လွန်ပြီး ပေါ်လာသည့်အတိုင်း ဖြေရှင်းသွားမည်ဖြစ်သည်။

ဤအချက်အလက်သည် အသုံးဝင်မည်ဟု မျှော်လင့်ပါသည်။ 🙂

source: www.habr.com

DDoS ကာကွယ်ရေး၊ VPS VDS ဆာဗာများပါသည့် ဆိုက်များအတွက် ယုံကြည်စိတ်ချရသော hosting ကို ဝယ်ယူပါ။ 🔥 DDoS ကာကွယ်မှု၊ VPS VDS ဆာဗာများပါရှိသော ယုံကြည်စိတ်ချရသော ဝဘ်ဆိုက် hosting ကို ဝယ်ယူပါ | ProHoster