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!