Bagaimana untuk memindahkan bekas OpenVZ 6 ke pelayan KVM tanpa sakit kepala

Sesiapa sahaja yang perlu memindahkan bekas OpenVZ ke pelayan dengan maya KVM penuh sekurang-kurangnya sekali dalam hidup mereka telah menghadapi beberapa masalah:

  • Kebanyakan maklumat itu sudah lapuk dan relevan untuk OS yang telah lama melepasi kitaran EOL
  • Maklumat yang berbeza sentiasa disediakan untuk sistem pengendalian yang berbeza, dan kemungkinan ralat semasa penghijrahan tidak pernah dipertimbangkan
  • Kadang-kadang anda perlu berurusan dengan konfigurasi yang sekali-sekala tidak mahu berfungsi selepas penghijrahan

Apabila anda memindahkan 1 pelayan, anda sentiasa boleh membetulkan sesuatu dengan cepat, tetapi apabila anda memindahkan keseluruhan kluster?

Dalam artikel ini saya akan cuba memberitahu anda cara memindahkan bekas OpenVZ ke KVM dengan betul dengan masa henti yang minimum dan penyelesaian pantas kepada semua masalah.

Program pendidikan kecil: apakah OpenVZ dan apakah KVM?

Kami tidak akan mendalami istilah, tetapi akan mengatakan secara umum:

OpenVZ — virtualisasi pada peringkat sistem pengendalian, anda juga boleh menggunakan ia pada gelombang mikro, kerana tidak ada keperluan untuk arahan CPU dan teknologi virtualisasi pada mesin hos.

KVM - virtualisasi sepenuhnya, menggunakan semua kuasa CPU dan mampu memayakan apa sahaja, dalam apa cara sekalipun, memotongnya secara memanjang dan bersilang.

Bertentangan dengan kepercayaan umum, dalam persekitaran penyedia hosting OpenVZ terlebih jual, tetapi KVM tidak. Nasib baik untuk yang kedua, KVM kini terlebih jual sama seperti saudaranya.

Apa yang akan kami bawa?

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

Diandaikan bahawa kebanyakan bekas OpenVZ telah menjalankan beberapa jenis LAMP, dan ada juga yang mempunyai beberapa perisian yang sangat khusus. Selalunya, ini adalah konfigurasi dengan ISPmanager, panel kawalan VestaCP (dan selalunya, tidak dikemas kini selama bertahun-tahun). Permintaan pemindahan mereka juga mesti diambil kira.

Migrasi dijalankan dengan pemeliharaan alamat IP Untuk bekas mudah alih, kami akan menganggap bahawa alamat IP bekas dikekalkan pada VM dan akan berfungsi tanpa masalah.

Sebelum memindahkan, mari pastikan bahawa kami mempunyai segala-galanya di tangan:

  • Pelayan OpenVZ, akses root penuh ke mesin hos, keupayaan untuk menghentikan/melekap/memulakan/memadam bekas
  • Pelayan KVM, akses root penuh ke mesin hos, dengan semua yang tersirat. Diandaikan bahawa semuanya telah dikonfigurasikan dan sedia untuk digunakan.

Mari mulakan pemindahan

Sebelum kami memulakan pemindahan, mari tentukan istilah yang akan membantu anda mengelakkan kekeliruan:

KVM_NODE - Mesin hos KVM
VZ_NODE - Mesin hos OpenVZ
CTID - Bekas OpenVZ
VM - pelayan maya KVM

Bersedia untuk penghijrahan dan mencipta mesin maya.

Langkah 1

Memandangkan kita perlu mengalihkan bekas itu ke suatu tempat, kita akan buat VM dengan konfigurasi yang serupa dengan KVM_NODE.
Penting! Создавать VM нужно именно на той операционной системе, которая сейчас крутится на CTID. Например, если на CTID установлена Ubuntu 14, то и на VM нужно ставить Ubuntu 14. Минорные версии не важны и их несовпадение не столь критично, а вот мажорные — должны быть одинаковыми.

Selepas mencipta VM, kami akan mengemas kini pakej pada CTID dan pada VM (jangan dikelirukan dengan mengemas kini OS - kami tidak mengemas kininya, kami hanya mengemas kini pakej dan, jika ia tiba, versi OS dalam bahagian utama versi).

Untuk CentOS этот процесс выглядит безобидно:

# yum clean all
# yum update -y

И не менее безобидно для Ubuntu, Debian:

# apt-get update
# apt-get upgrade

Langkah 2

Pasang pada CTID, VZ_NODE и VM utiliti rsync:

CentOS:

# yum install rsync -y

Debian, Ubuntu:

# apt-get install rsync -y

Kami tidak memasang apa-apa lagi sama ada di sana atau di sana.

Langkah 3

Kami berhenti CTID pada VZ_NODE pasukan

vzctl stop CTID

Memasang imej CTID:

vzctl mount CTID

Pergi ke folder /vz/root/CTID dan laksanakan

mount --bind /dev dev && mount --bind /sys sys && mount --bind /proc proc && chroot .

Di bawah akar, buat fail /root/exclude.txt - ia akan mengandungi senarai pengecualian yang tidak akan sampai ke pelayan baharu

/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

Sambung ke KVM_NODE dan melancarkan kami VMsupaya ia berfungsi dan boleh diakses melalui rangkaian.

Sekarang semuanya sedia untuk dipindahkan. Pergi!

Langkah 4

Masih di bawah mantra, kami membuat persembahan

rsync --exclude-from="/root/exclude.txt" --numeric-ids -avpogtStlHz --progress -e "ssh -T -o Compression=no -x" / root@KVM_NODE:/

Perintah rsync akan melakukan pemindahan, kami berharap kekuncinya jelas - pemindahan dijalankan dengan pemeliharaan pautan sym, hak akses, pemilik dan kumpulan, dan penyulitan dilumpuhkan untuk kelajuan yang lebih tinggi (anda boleh menggunakan sifir yang lebih cepat, tetapi ini tidak begitu penting untuk tugas ini), serta pemampatan dilumpuhkan.

Selepas menyelesaikan rsync, keluar dari chroot (dengan menekan ctrl+d) dan laksanakan

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

Langkah 5

Mari lakukan beberapa langkah yang akan membantu kami melancarkan VM selepas memindahkan daripada OpenVZ.
Pada pelayan dengan Systemd mari kita laksanakan arahan yang akan membantu kita log masuk ke konsol biasa, contohnya, melalui skrin pelayan VNC

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

Pada pelayan CentOS 6 и CentOS 7 Pastikan anda memasang kernel baru:

yum install kernel-$(uname -r)

Pelayan boleh dimuatkan daripadanya, tetapi selepas pemindahan ia mungkin berhenti berfungsi atau dipadamkan.

Pada pelayan CentOS 7 anda perlu menggunakan pembetulan kecil untuk PolkitD, jika tidak pelayan akan ranap selama-lamanya:

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; }

Pada semua pelayan, jika mod_fcgid untuk Apache telah dipasang, kami akan melakukan pembetulan kecil dengan hak, jika tidak, tapak yang menggunakan mod_fcgid akan ranap dengan ralat 500:

chmod +s `which suexec` && apachectl restart

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

gelung terlalu cepat. perlaksanaan pendikit sedikit

tidak menyenangkan, tetapi mudah diperbaiki, bergantung pada versi OS.

Pada Debian 9 pembetulan kelihatan seperti ini:

kita laksanakan

dbus-uuidgen

jika kita mendapat ralat

/usr/local/lib/libdbus-1.so.3: versi `LIBDBUS_PRIVATE_1.10.8′ tidak ditemui

semak kehadiran 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

jika semuanya teratur, kita lakukannya

cd /lib/x86_64-linux-gnu
rm -rf libdbus-1.so.3
ln -s libdbus-1.so.3.14.15  libdbus-1.so.3

Jika ia tidak membantu, cuba pilihan kedua.

Penyelesaian kedua untuk masalah dengan perlaksanaan pendikit sedikit подходит практически для всех Ubuntu и Debian дистрибутивов.

Kami laksanakan

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

Dan untuk Ubuntu 14, Debian 7 Selain itu kami melaksanakan:

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 и мешал загрузки многих модулей ядра.

Langkah 6

Kami but semula VM, semak dalam VNC bagaimana pemuatan sedang berjalan dan, idealnya, semuanya akan dimuatkan tanpa masalah. Walaupun ada kemungkinan bahawa beberapa masalah khusus akan muncul selepas penghijrahan, ia berada di luar skop artikel ini dan akan diperbetulkan apabila ia timbul.

Saya harap maklumat ini berguna! 🙂

Sumber: www.habr.com

Beli pengehosan yang boleh dipercayai untuk tapak dengan perlindungan DDoS, pelayan VPS VDS 🔥 Beli pengehosan laman web yang boleh dipercayai dengan perlindungan DDoS, pelayan VPS VDS | ProHoster