Cara mengkonfigurasi dan mengekalkan ketersediaan/kluster yang tinggi di Linux

Cara mengkonfigurasi dan mengekalkan ketersediaan/kluster yang tinggi di Linux

Ketersediaan tinggi (Ha) hanya merujuk kepada kualiti sistem untuk beroperasi secara berterusan tanpa kegagalan untuk jangka masa yang panjang. Penyelesaian HA boleh dilaksanakan menggunakan perkakasan dan/atau perisian, dan salah satu penyelesaian umum untuk melaksanakan HA adalah clustering.

Dalam pengkomputeran, kelompok terdiri daripada dua atau lebih komputer (biasanya dikenali sebagai nod atau ahli) yang bekerjasama untuk melaksanakan tugas. Dalam persediaan sedemikian, hanya satu nod menyediakan perkhidmatan dengan nod sekunder mengambil alih jika gagal.

Kelompok jatuh ke dalam empat jenis utama:

  • Penyimpanan: Menyediakan imej sistem fail yang konsisten di seluruh pelayan dalam kelompok, yang membolehkan pelayan membaca dan menulis secara serentak ke satu sistem fail bersama.
  • Ketersediaan tinggi: menghapuskan satu titik kegagalan dan dengan gagal melebihi perkhidmatan dari satu nod kluster ke yang lain sekiranya nod menjadi tidak beroperasi.
  • Mengimbangi beban: Penghantaran Permintaan Perkhidmatan Rangkaian ke beberapa kelompok kelompok untuk mengimbangi beban permintaan di antara nod kluster.
  • Prestasi tinggi: menjalankan pemprosesan selari atau serentak, dengan itu membantu meningkatkan prestasi aplikasi.

Satu lagi penyelesaian yang digunakan secara meluas untuk menyediakan Ha adalah replikasi (khususnya replikasi data). Replikasi adalah proses yang mana satu atau lebih pangkalan data (menengah) dapat diselaraskan dengan pangkalan data utama (atau tuan) tunggal.

Untuk menyediakan kelompok, kita memerlukan sekurang -kurangnya dua pelayan. Untuk tujuan panduan ini, kami akan menggunakan dua pelayan Linux:

  • Node1: 192.168.10.10
  • Node2: 192.168.10.11

Dalam artikel ini, kami akan menunjukkan asas -asas bagaimana untuk menggunakan, mengkonfigurasi dan mengekalkan ketersediaan/kluster yang tinggi di Ubuntu 16.04/18.04 dan Centos 7. Kami akan menunjukkan cara menambah perkhidmatan http nginx ke cluster.

Mengkonfigurasi tetapan DNS tempatan pada setiap pelayan

Agar kedua pelayan berkomunikasi antara satu sama lain, kita perlu mengkonfigurasi tetapan DNS tempatan yang sesuai di /etc/hos fail pada kedua -dua pelayan.

Buka dan edit fail menggunakan editor baris komando kegemaran anda.

$ sudo vim /etc /hosts 

Tambahkan entri berikut dengan alamat IP sebenar pelayan anda.

192.168.10.10 Node1.Contoh.com 192.168.10.11 node2.Contoh.com 

Simpan perubahan dan tutup fail.

Memasang pelayan web nginx

Sekarang pasang pelayan web nginx menggunakan arahan berikut.

$ sudo apt install nginx [on Ubuntu] $ sudo yum Pasang Epel-Release & Sudo Yum Install Nginx [On Centos 7] 

Sebaik sahaja pemasangan selesai, mulakan perkhidmatan nginx buat masa ini dan membolehkannya menjadi auto-start pada masa boot, kemudian periksa sama ada ia selesai dan berjalan menggunakan perintah systemctl.
Di Ubuntu, perkhidmatan ini harus dimulakan secara automatik sebaik sahaja selepas konfigurasi pra-pakej selesai, anda boleh membolehkannya.

$ sudo systemctl enable nginx $ sudo systemctl start nginx $ sudo systemctl status nginx 

Selepas memulakan perkhidmatan Nginx, kami perlu membuat halaman web tersuai untuk mengenal pasti dan menguji operasi pada kedua -dua pelayan. Kami akan mengubah suai kandungan halaman indeks nginx lalai seperti yang ditunjukkan.

$ echo "Ini adalah halaman lalai untuk node1.Contoh.com "| sudo tee/usr/share/nginx/html/index.html #vps1 $ echo "Ini adalah halaman lalai untuk node2.Contoh.com "| sudo tee/usr/share/nginx/html/index.HTML #VPS2 

Memasang dan Mengkonfigurasi Corosync dan Pacemaker

Seterusnya, kita mesti memasang Pacemaker, Corosync, dan PCS pada setiap nod seperti berikut.

$ sudo apt memasang corosync pacemaker pcs #ubuntu $ sudo yum pemasangan corosync pacemaker pcs #centos 

Setelah pemasangan selesai, pastikannya PCS Daemon berjalan di kedua -dua pelayan.

$ sudo systemctl enable pcsd $ sudo systemctl start pcsd $ sudo systemctl status pcsd 

Membuat kelompok

Semasa pemasangan, pengguna sistem yang dipanggil "Hacluster" dicipta. Oleh itu, kita perlu menyediakan pengesahan yang diperlukan untuk PCS. Mari mulakan dengan membuat kata laluan baru untuk "Hacluster" pengguna, kita perlu menggunakan kata laluan yang sama pada semua pelayan:

$ sudo passwd hacluster 
Buat Kata Laluan Pengguna Kluster

Seterusnya, di salah satu pelayan (Node1), jalankan arahan berikut untuk menubuhkan pengesahan yang diperlukan untuk PCS.

$ sudo pcs cluster auth node1.Contoh.com node2.Contoh.com -u hacluster -p password_here --force 
Pengesahan persediaan untuk PC

Sekarang buat kelompok dan isi dengan beberapa nod (nama kluster tidak dapat melebihi 15 aksara, dalam contoh ini, kami telah menggunakan Explecluster) pada pelayan node1.

$ sudo pcs cluster Persediaan -Nama ExampleCluster Node1.Contoh.com node2.Contoh.com 
Buat kluster pada node1

Sekarang aktifkan kelompok di boot dan mulakan perkhidmatan.

$ sudo pcs cluster enable -semua $ sudo pcs cluster start -semua 
Dayakan dan mulakan kelompok

Sekarang periksa sama ada perkhidmatan kluster berjalan dan berjalan menggunakan arahan berikut.

$ sudo status pcs atau $ sudo crm_mon -1 
Semak status kluster

Dari output perintah di atas, anda dapat melihat bahawa ada amaran mengenai tidak Stonith peranti lagi Stonith masih didayakan dalam kumpulan. Di samping itu, tiada sumber/perkhidmatan kluster telah dikonfigurasikan.

Mengkonfigurasi pilihan kluster

Pilihan pertama adalah melumpuhkan Stonith (atau Tembak nod lain di kepala), pelaksanaan pagar pada Pacemaker.

Komponen ini membantu melindungi data anda daripada rosak oleh akses serentak. Untuk tujuan panduan ini, kami akan melumpuhkannya kerana kami belum mengkonfigurasi sebarang peranti.

Untuk mematikan Stonith, Jalankan arahan berikut:

$ sudo pcs property Set stonith-enabled = false 

Seterusnya, juga mengabaikan Kuorum dasar dengan menjalankan arahan berikut:

$ sudo pcs property Set no-quorum-policy = abaikan 

Setelah menetapkan pilihan di atas, jalankan arahan berikut untuk melihat senarai harta benda dan pastikan pilihan di atas, Stonith dan juga Dasar Kuorum dilumpuhkan.

Senarai Harta PCS $ sudo 
Lihat sifat kluster

Menambah Perkhidmatan Sumber/Kluster

Dalam bahagian ini, kita akan melihat cara menambah sumber kelompok. Kami akan mengkonfigurasi IP terapung yang merupakan alamat IP yang boleh dipindahkan dari satu pelayan ke satu lagi dalam rangkaian atau pusat data yang sama. Singkatnya, IP terapung adalah istilah biasa teknikal, yang digunakan untuk IPS yang tidak terikat dengan ketat ke satu antara muka.

Dalam kes ini, ia akan digunakan untuk menyokong failover dalam kelompok tinggi. Perlu diingat bahawa IP terapung bukan hanya untuk situasi failover, mereka mempunyai beberapa kes penggunaan lain. Kita perlu mengkonfigurasi kluster sedemikian rupa sehingga hanya ahli aktif kluster "memiliki" atau bertindak balas terhadap IP terapung pada bila -bila masa.

Kami akan menambah dua sumber kelompok: sumber alamat IP terapung yang dipanggil "Floating_ip"Dan sumber untuk pelayan web nginx yang dipanggil"http_server".

Mula pertama dengan menambahkan floating_ip seperti berikut. Dalam contoh ini, alamat IP terapung kami adalah 192.168.10.20.

$ sudo pcs sumber buat floating_ip ocf: heartbeat: ipaddr2 ip = 192.168.10.20 CIDR_NETMASK = 24 OP Monitor Interval = 60s 

Di mana:

  • Floating_ip: Adakah nama perkhidmatan.
  • "OCF: Heartbeat: iPaddr2": memberitahu Pacemaker skrip mana yang hendak digunakan, iPaddr2 dalam kes ini, yang mana ruang nama itu ada (perentak jantung) dan standardnya yang sesuai dengan OCF.
  • "selang monitor op = 60s": Mengarahkan alat pacu jantung untuk memeriksa kesihatan perkhidmatan ini setiap satu minit dengan memanggil tindakan monitor ejen.

Kemudian tambahkan sumber kedua, bernama http_server. Di sini, ejen sumber perkhidmatan adalah OCF: denyutan jantung: nginx.

$ sudo pcs sumber buat http_server ocf: heartbeat: nginx configfile = "/etc/nginx/nginx.Conf "Op Monitor Timeout =" 20s "Interval =" 60s " 

Sebaik sahaja anda telah menambah perkhidmatan kluster, mengeluarkan arahan berikut untuk memeriksa status sumber.

$ sudo sumber status PCS 
Semak sumber kluster

Melihat output arahan, kedua -dua sumber tambahan: "Floating_ip" dan "HTTP_SERVER" telah disenaraikan. Perkhidmatan Floating_IP dimatikan kerana nod utama beroperasi.

Sekiranya anda mempunyai firewall diaktifkan pada sistem anda, anda perlu membenarkan semua lalu lintas Nginx dan semua perkhidmatan ketersediaan yang tinggi melalui firewall untuk komunikasi yang betul antara nod:

-------------- CentOS 7 -------------- $ SUDO Firewall-Cmd --PerManent --Add-Service = http $ sudo firewall-cmd --permanent --add-service = high-availability $ sudo Firewall-Cmd-Reload -------------- Ubuntu -------------- $ sudo ufw membenarkan http $ sudo ufw membenarkan kebolehpasaran tinggi $ sudo ufw Tambah nilai 

Menguji ketersediaan/clustering tinggi

Langkah terakhir dan penting adalah untuk menguji bahawa persediaan ketersediaan tinggi kami berfungsi. Buka penyemak imbas web dan navigasi ke alamat 192.168.10.20 anda harus melihat halaman nginx lalai dari node2.Contoh.com Seperti yang ditunjukkan dalam tangkapan skrin.

Kelompok ujian sebelum kegagalan

Untuk mensimulasikan kegagalan, jalankan arahan berikut untuk menghentikan kluster di node2.Contoh.com.

$ sudo pcs cluster berhenti http_server 

Kemudian muat semula halaman di 192.168.10.20, Anda kini harus mengakses laman web nginx lalai dari node1.Contoh.com.

Kluster ujian selepas kegagalan

Sebagai alternatif, anda boleh mensimulasikan ralat dengan memberitahu perkhidmatan untuk berhenti secara langsung, tanpa menghentikan kluster pada mana -mana nod, menggunakan arahan berikut pada salah satu nod:

 $ sudo crm_resource-resource http_server --force-stop 

Kemudian anda perlu berlari crm_mon Dalam mod interaktif (lalai), dalam selang monitor 2 minit, anda sepatutnya dapat melihat notis kluster bahawa http_server gagal dan gerakkannya ke nod lain.

Untuk perkhidmatan kluster anda berjalan dengan cekap, anda mungkin perlu menetapkan beberapa kekangan. Anda dapat melihat PCS halaman lelaki (lelaki pcs) untuk senarai semua arahan penggunaan.

Untuk maklumat lanjut mengenai Corosync dan Pacemaker, lihat: https: // clusterlabs.org/

Ringkasan

Dalam panduan ini, kami telah menunjukkan asas -asas bagaimana untuk menggunakan, mengkonfigurasi dan mengekalkan ketersediaan/clustering/replikasi yang tinggi di Ubuntu 16.04/18.04 dan Centos 7. Kami menunjukkan cara menambah perkhidmatan http nginx ke kelompok. Sekiranya anda mempunyai sebarang pemikiran untuk berkongsi atau soalan, gunakan borang maklum balas di bawah.