Rumah  >  Artikel  >  Operasi dan penyelenggaraan  >  Bagaimana untuk mencapai ketersediaan tinggi Nginx

Bagaimana untuk mencapai ketersediaan tinggi Nginx

PHPz
PHPzke hadapan
2023-05-25 23:31:041209semak imbas

Penyediaan:

192.168.16.128

192.168.16.129

Dua mesin maya. Pasang Nginx

Pasang Nginx

Kemas kini fail sumber yum:

rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

Pasang Nginx:

yum -y pasang nginx

Perintah operasi:

systemctl mulakan nginx; #Mulakan Nginx

systemctl hentikan nginx; #Hentikan Nginx

Apakah ketersediaan tinggi?

Ketersediaan tinggi HA (High Availability) adalah salah satu faktor yang perlu dipertimbangkan dalam reka bentuk seni bina sistem teragih Ia biasanya merujuk kepada mengurangkan masa apabila sistem tidak dapat menyediakan perkhidmatan melalui reka bentuk. Jika sistem sentiasa boleh menyediakan perkhidmatan, maka ketersediaan adalah 100%, tetapi terdapat keadaan yang tidak dijangka. Jadi kami hanya boleh cuba mengurangkan kegagalan perkhidmatan sebanyak mungkin.

Masalah selesai?

Dalam persekitaran pengeluaran, Nginx sering digunakan sebagai proksi terbalik untuk menyediakan perkhidmatan luaran Walau bagaimanapun, Nginx pasti akan menghadapi kegagalan suatu hari nanti, seperti masa henti pelayan. Apabila Nginx turun, semua antara muka yang disediakan secara luaran akan menjadi tidak boleh diakses.

Walaupun kami tidak dapat menjamin bahawa pelayan tersedia 100%, kami mesti mencari jalan untuk mengelakkan tragedi ini Hari ini kami menggunakan keepalived untuk melaksanakan Nginx

Ketersediaan tinggi.

Penyelesaian sandaran panas dwi-mesin

Penyelesaian ini ialah penyelesaian ketersediaan tinggi yang paling biasa di kalangan perusahaan domestik dwi-pelayan sandaran panas sebenarnya bermakna bahawa satu pelayan menyediakan perkhidmatan dan yang lain berada dalam keadaan sedia untuk perkhidmatan tertentu Apabila satu pelayan tidak tersedia, yang lain akan mengambil tempat dia.

Apa itu keepalived?

Perisian Keepalived pada asalnya direka untuk perisian pengimbangan beban LVS untuk mengurus dan memantau status setiap nod perkhidmatan dalam sistem kluster LVS Kemudian, ia menambah VRRP (Virtual Router Redundancy Protocol) untuk mencapai ketersediaan tinggi. Oleh itu, selain mengurus perisian LVS, Keepalived juga boleh digunakan sebagai perisian penyelesaian ketersediaan tinggi untuk perkhidmatan lain (seperti Nginx, Haproxy, MySQL, dll.)

Mekanisme Failover

Pemindahan failover antara perkhidmatan ketersediaan tinggi Keepalived dilaksanakan melalui VRRP.

Apabila perkhidmatan Keepalived berfungsi seperti biasa, nod induk akan menghantar mesej degupan jantung (multicast) secara berterusan ke nod sandaran untuk memberitahu nod sandaran bahawa ia masih hidup Apabila nod induk gagal, ia tidak boleh menghantar mesej degupan jantung dan nod sandaran akan tidak dapat menghantar mesej degupan jantung Oleh itu, nod tidak lagi dapat mengesan degupan jantung daripada nod Induk utama, jadi ia memanggil program pengambilalihannya sendiri untuk mengambil alih sumber IP dan perkhidmatan nod Induk utama. Apabila nod induk pulih, nod sandaran akan mengeluarkan sumber dan perkhidmatan IP yang diambil alih apabila nod induk gagal, dan kembali kepada peranan sandaran asalnya.

Proses pelaksanaan

Pasang keepalived

Anda boleh memasangnya terus menggunakan kaedah yum, yang akan memasang kebergantungan secara automatik:

yum -y pasang keepalived

Ubah suai fail konfigurasi hos (192.168.16.128) yang disimpan

Pemasangan menggunakan yum akan menghasilkan fail konfigurasi di bawah /etc/keepalived:

vi keepalived.conf

keepalived.conf:

Skrip #Pengesanan

vrrp_script chk_http_port {

Skrip "/usr/local/src/check_nginx_pid.sh" skrip pelaksanaan #Heartbeat untuk mengesan sama ada nginx dimulakan

selang 2                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 kepada berat 2 }

#vrrp Bahagian definisi contoh

vrrp_instance VI_1 {

nyatakan MASTER # Nyatakan peranan keepalived, MASTER adalah yang utama, BACKUP adalah sandaran

antara muka ens33 # Kad antara muka rangkaian semasa untuk komunikasi vrrp (kad rangkaian centos semasa) Gunakan ifconfig untuk menyemak kad rangkaian khusus anda

Virtual_router_id 66 # Nombor laluan maya, tuan dan hamba hendaklah sentiasa

Keutamaan 100 # Keutamaan, lebih besar nilai, lebih tinggi keutamaan untuk memproses permintaan

advert_int 1             # Selang semakan, lalai ialah 1s (saat kitaran berbilang siaran vrrp)

#Akses dibenarkan

pengesahan {

auth_type LULUS #Tetapkan jenis pengesahan dan kata laluan MASTER dan BACKUP mesti menggunakan kata laluan yang sama untuk komunikasi biasa

auth_pass 1111

}

track_script {

          chk_http_port             #(skrip pengesanan panggilan)

}

virtual_ipaddress {

192.168.16.130 192.168.16.130 # Tentukan ip maya (VIP), anda boleh menetapkan lebih daripada satu, satu setiap baris

}

}

VIP boleh dikonfigurasikan dalam virtual_ipaddress, dan perkhidmatan boleh diakses dalam talian melalui VIP.

Antara muka perlu ditetapkan mengikut kad rangkaian pelayan Kaedah tontonan biasa ialah ip addr

Akses kebenaran konfigurasi pengesahan ke mesin sandaran juga memerlukan konfigurasi yang sama

Ubah suai mesin sandaran (192.168.16.129) fail konfigurasi yang disimpan

keepalived.conf:

Skrip #Pengesanan

vrrp_script chk_http_port {

Skrip "/usr/local/src/check_nginx_pid.sh" skrip pelaksanaan #Heartbeat untuk mengesan sama ada nginx dimulakan

selang 2 selang 2 #(Selang untuk mengesan pelaksanaan skrip)

berat 2 }

#vrrp Bahagian definisi contoh

vrrp_instance VI_1 {

Nyatakan Sandaran # Nyatakan peranan Keepalived, tuan adalah terutamanya, sandaran adalah persediaan

Antara Muka ENS33 # Kad antara muka rangkaian yang sedang melakukan komunikasi VRRP (kad rangkaian CENTOS semasa) menggunakan iFconfig untuk melihat kad rangkaian khusus anda

virtual_router_id 66 # Nombor laluan maya, tuan dan hamba hendaklah sentiasa

keutamaan 99                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Advert_int 1 # Semak selang, lalai ialah 1S (nombor kitaran penghantaran VRRP saat)

#Akses dibenarkan

pengesahan {

auth_type LULUS #Tetapkan jenis pengesahan dan kata laluan MASTER dan BACKUP mesti menggunakan kata laluan yang sama untuk komunikasi biasa

auth_pass 1111

}

track_script {

        chk_http_port                                                                                                                                                                                                                                                                                                                                        }

virtual_ipaddress {

192.168.16.130 192.168.16.130 # Tentukan ip maya (VIP), anda boleh menetapkan lebih daripada satu, satu setiap baris

}

}

Skrip pengesanan:

#!/bin/bash

#Kesan sama ada nginx dimulakan

A=`ps -C nginx --no-header |wc -l`  

jika [ $A -eq 0 ];maka #Jika nginx tidak dimulakan, mulakan nginx systemctl mulakan nginx #Mulakan semula nginx

Jika [ `ps -C nginx --no-header |wc -l` -eq 0 ];maka #nginx gagal dimulakan semula, hentikan perkhidmatan keepalived dan lakukan pemindahan VIP

                      pembunuhan terus hidup                                                                                                                                                               fi

fi

Keizinan skrip: chmod 775 check_nginx_pid.sh

Nota: Skrip mesti dibenarkan, jika tidak, ia tidak akan mempunyai kebenaran untuk mengakses Di sini kami mempunyai dua pelayan untuk dilaksanakan, VIP (virtual_ipaddress:192.168.16.130 Dalam persekitaran pengeluaran, kami mengakses perkhidmatan secara langsung melalui VIP.

Simulasikan kegagalan nginx:

Ubah suai halaman html Nginx yang diakses oleh kedua-dua pelayan secara lalai sebagai perbezaan.

Akses pertama 192.168.16.130 dan aksesnya melalui VIP Halaman memaparkan 192.168.16.128 yang menunjukkan bahawa ia adalah perkhidmatan yang disediakan oleh pelayan utama.

Pada masa ini, pelayan utama 192.168.16.128 melaksanakan arahan:

systemctl hentikan nginx; #Hentikan nginx

Lawati vip (192.168.16.130) sekali lagi dan ketahui bahawa halaman masih memaparkan: 192.168.16.128 Ini ialah mula semula automatik dalam skrip.

Sekarang tutup terus pelayan 192.168.16.128, lawati vip di sini (192.168.16.130) dan kini mendapati halaman tersebut memaparkan 192.168.16.129 Pada masa ini, keepalived akan gagal secara automatik dan penyelesaian ketersediaan tinggi untuk pengeluaran peringkat perusahaan persekitaran telah diwujudkan.

Atas ialah kandungan terperinci Bagaimana untuk mencapai ketersediaan tinggi Nginx. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam