Beralih dari mesin virtual ke wadah LXC: alasan, keunggulan, dan instruksi yang siap digunakan

Apa yang akan kita bicarakan:

- Mengapa kami memutuskan untuk beralih ke wadah LXC?
- Bagaimana cara membuat wadah dan menjalankan host berbasis Bitrix di atasnya?

Untuk siapa ini akan bermanfaat:

Untuk semua orang yang ingin mencoba solusi baru, sambil menggunakan lebih sedikit sumber daya.

Manfaat LXC Dibandingkan Mesin Virtual


Kami beralih ke wadah ketika kami mengalami kekurangan sumber daya server, kesulitan membedakan hak akses untuk proyek yang berbeda, dan konflik perangkat lunak dalam satu mesin virtual. Berikut adalah beberapa manfaat utama LXC dibandingkan mesin virtual:

  1. Lebih sedikit kehilangan kinerja CPU, operasi disk, dan RAM. Hampir semua yang tersedia di wadah berfungsi dengan kecepatan server.
  2. Tidak perlu mengalokasikan RAM untuk kernel OS, memori video, buffer disk, dll.
  3. Mulai cepat. Bahkan, hanya aplikasi yang diluncurkan yang diperlukan agar wadah berfungsi.
  4. Ini mendukung peluncuran aplikasi individual dalam wadah, bukan sistem lengkap. Lebih mudah bahwa akses dapat diberikan hanya dengan menambahkan pengguna (daripada chroot), karena kami hanya memiliki satu proyek dalam wadah (ada beberapa di mesin virtual).
  5. Kemampuan untuk mengelola sumber daya dari setiap wadah.
  6. Pindahkan kontainer antar server dengan cepat dan mudah.

Kami menggunakan rsync. Cukup buat wadah dengan nama yang sama di server baru dan salin:

rsync -alvz :/var/lib/lxd/container/test/ /var/lib/lxd/container/test/ 

Kita perlu menguraikan paragraf kelima dan berbicara tentang manajemen sumber daya. Kita harus menyediakan wadah dengan jumlah sumber daya yang cukup untuk pekerjaan, dan pada saat yang sama memastikan bahwa wadah tidak akan mengkonsumsi sumber daya yang tidak perlu, sehingga mengganggu pekerjaan seluruh sistem.

Anda dapat melihat statistik konsumsi sumber daya dengan perintah: lxc info test

 Remote: unix:// : x86_64 : 2018/12/04 14:27 UTC Status: Running Type: persistent : default Pid: 28317 IPs: eth0: inet 172.27.2.204 vethF91F2U Resources: : 56 CPU usage:   ( ): 20583 Memory usage: Memory (current): 1.03GB Memory (peak): 3.11GB Network usage: eth0:  : 17.45GB  : 9.93GB 

Menurut statistik ini, Anda dapat melacak berapa banyak sumber daya yang dikonsumsi sebuah wadah dan, jika perlu, membatasi konsumsinya menggunakan perintah khusus:

  • lxc config atur batas tes.memory 2048M # atur batas memori.
  • lxc config atur batas tes.cpu 1,2,3,8 # ikat wadah ke inti CPU.
  • lxc config atur cpu.allowance 10% # batas konsumsi CPU.
  • config lxc set ukuran root tes 50GB # membatasi jumlah ruang disk yang digunakan oleh kontainer (hanya bekerja dengan ZFS atau btrfs).
  • konfigurasi lxc dapatkan batas pengujian.memory - lihat nilai batas yang ditetapkan

Hasilnya, wadah memungkinkan Anda mengambil lusinan wadah di desktop yang sangat standar, sambil mempertahankan kinerja yang memadai.

Kami mengkonfigurasi server dan mentransfer host standar dengan Bitrix dari mesin virtual ke wadah


1. Pengaturan server

1.1 Instal versi terbaru dari server Ubuntu 18.04 di server. Sudah memiliki LXD. LXD adalah tambahan untuk LXC, sebuah hypervisor yang menyederhanakan interaksi dengan sistem containerisasi.
1.2 apt install bridge-utils # install bridge-utils
1,3 lxd init # menginisialisasi lxd
1.4 lxc edit profil default # edit file profil:

 devices: eth0: name: eth0 nictype: bridged parent: br0 type: nic root: path: / pool: default type: disk name: default 

1,5 lxc launch ubuntu: 04/18 test # buat sebuah wadah bernama test. Dia akan mengunduh gambar, membuat dan meluncurkannya. Ini menyelesaikan konfigurasi dan pembuatan wadah, kemudian lanjutkan untuk mengkonfigurasi wadah dan mentransfer host ke dalamnya.

2. Host kontainer konfigurasi dan migrasi situs

2.1 lxc exec test / bin / bash # Pergi ke wadah yang dibuat.
2.2 add-apt-repository ppa: ondrej / php # Add a repository.
2.3 pembaruan tepat # Perbarui repositori.
2,4 apt install
php7.1 {fpm, bcmath, bz2, cli, umum, curl, dev, enchant, fpm, gd, gmp, imap, intl, json,
ldap, mbstring, mcrypt, mysql, odbc, opcache, phpdbg, pspell, readline, recode, sabun,
rapi, xml, xmlrpc, xsl, zip} # Instal php dan semua modul yang diperlukan untuk bitrix.
2,5 apt install nginx # Instal nginx.
2,6 vim /etc/netplan/50-cloud-init.yaml # Jadikan ip statis:

 network: version: 2 ethernets: eth0: addresses: [172.27.2.108/16] gateway4: 172.27.0.1 nameservers: addresses: [172.27.1.1] dhcp4: false 

2.7 Salin konfigurasi php dan nginx dari mesin virtual kami, periksa apakah semuanya dimulai dan berfungsi.
2.8 Kami mentransfer seluruh situs dari mesin virtual kami. Sebagai contoh:

rsync -alvz Virtual lama: / var / www / / var / www /

3. Membuat wadah terpisah untuk basis data

3.1 Ulangi langkah 1 .5, 2.1 dan 2.6 , beri nama wadah misalnya test-db.
3,2 apt install mysql-server # instal database
3,3 apt install pv # Instal PV untuk melihat kemajuan ketika kami mengunggah database.

4. Menyiapkan server database baru

Untuk memulai, kami mengumpulkan informasi dari server lama:

4.1 Kami membutuhkan pengguna dan lulus dari database yang diinginkan.
4.2 mysql -u test -p'test '-e "tampilkan buat database testDB;" # Cari tahu bagaimana database dibuat (apa yang perlu kita sorot):

 mysql: [Warning] Using a password on the command line interface can be insecure. +----------+--------------------------------------------------------------------------+ | Database | Create Database | +----------+--------------------------------------------------------------------------+ | demoshop | <b>CREATE DATABASE `demoshop` /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci */ |</b> +----------+--------------------------------------------------------------------------+ 

4.3 mysqldump -ER --single-transaction --quick testDB | gzip> testDB.sql.gz # Jalankan perintah ini di server tempat database kami berada. Dia akan membuang dan mengompresnya ke arsip.

Kami akan pergi ke database baru kami dan melakukan tindakan berikut:

4.4 rsync -alvz DB lama: / root / testDB.sql.gz / root / # transfer arsip dengan dump ke kontainer kami.
4.5 mysql # Ayo pergi ke database kami
4.5.1 BUAT PENGGUNA 'pengguna' @ '%' DIIDENTIFIKASI OLEH 'pass'; # buat pengguna dan kata sandi yang sama.
4.5.2 Dari paragraf 4.2, kita memasukkan perintah: CREATE DATABASE `DBName` / *! 40100 SET KARAKTER DEFAULT utf8 COLLATE utf8_unicode_ci * / ;
4.5.3 PEMBERI SEMUA HAK ISTIMEWA PADA nama DB. * UNTUK 'pengguna' @ '%' DIIDENTIFIKASI oleh 'lulus'; # Kami akan memberikan hak ke database kami.
4.6 Kami keluar dari database dan menjalankan konsol wadah: pv testDB.sql.gz | zcat | mysql testDB # Isi dump ke database kami

5. Verifikasi

5.1 Ubah parameter menghubungkan ke database, tunjukkan IP baru dari database kami.
5.2 Setelah itu, situs harus terbuka melalui IP atau DNS, tergantung pada konfigurasi Anda.

Kesimpulan


Dengan demikian, wadah LXC membantu kami mengurangi konsumsi sumber daya server uji dan menyesuaikan lebih banyak host pada satu server, sambil mempertahankan kemampuan mengelola sumber daya yang dikonsumsi masing-masing host dengan nyaman. Sekarang Anda memiliki instruksi siap pakai yang menunjukkan betapa mudahnya mengimplementasikannya.

Source: https://habr.com/ru/post/id458658/


All Articles