Penyediaan:
192.168.16.128
192.168.16.129
Dua mesin maya. Pasang Nginx
Pasang Nginx
Kemas kini fail sumber yum:
rpm-ivhhttp://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
wget-O/etc/yum.repos.d/CentOS-Base.repohttp://mirrors.aliyun.com/repo/Centos-7.repo
Pasang Nginx:
yum-yinstallnginx
Perintah operasi:
systemctlstartnginx;#Mulakan Nginx
systemctlstopnginx;#Hentikan Nginx
Apakah ketersediaan tinggi?
Ketersediaan tinggi HA (HighAvailability) adalah salah satu faktor yang mesti 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 cara 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 fungsi VRRP (Virtual Router Redundancy Protocol) yang boleh 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 utama akan terus menghantar mesej degupan jantung (berbilang hantar) ke nod sandaran untuk memberitahu nod Sandaran sandaran bahawa ia masih hidup Apabila nod Induk utama gagal, ia tidak boleh menghantar mesej degupan jantung dan nod sandaran tidak akan 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 dan perkhidmatan IP 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 yum Kaedah ini akan memasang kebergantungan secara automatik:
yum-yinstallkeepalived
Ubah suai fail konfigurasi hos (192.168.16.128) yang disimpan
Pemasangan menggunakan yum akan menghasilkan fail konfigurasi di bawah /etc/keepalived:
vikeepalived.conf
keeplived.conf:
Skrip #Pengesanan
vrrp_scriptchk_http_port{
script"/usr/local/src/check_nginx_pid.sh"#Skrip pelaksanaan Heartbeat untuk mengesan sama ada nginx dimulakan
interval2# (selang untuk mengesan pelaksanaan skrip, unit ialah saat)
berat2# berat
}
#vrrpInstance bahagian definisi
vrrp_instanceVI_1{
stateMASTER#Nyatakan peranan keepalived, MASTER adalah yang utama, BACKUP adalah sandaran
interfaceens33#Kad antara muka rangkaian semasa untuk komunikasi vrrp (kad rangkaian centos semasa), gunakan ifconfig untuk menyemak kad rangkaian khusus anda
virtual_router_id66#Nombor laluan maya, tuan dan hamba hendaklah sentiasa
keutamaan100#Keutamaan, lebih besar nilai, lebih tinggi keutamaan untuk mendapatkan dan memproses permintaan
advert_int1# Semak selang, lalai ialah 1s (saat kitaran berbilang hantaran vrrp)
#Akses dibenarkan
Pengesahan{
auth_typePASS#Tetapkan jenis pengesahan dan kata laluan MASTER dan BACKUP mesti menggunakan kata laluan yang sama untuk komunikasi biasa
auth_pass1111
}
track_script{
chk_http_port# (skrip pengesanan panggilan)
}
virtual_ipaddress{
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 ipaddr
Akses kebenaran konfigurasi pengesahan kepada mesin sandaran juga memerlukan konfigurasi yang sama
Ubah suai mesin sandaran (192.168.16.129) fail konfigurasi yang disimpan
keeplived.conf:
Skrip #Pengesanan
vrrp_scriptchk_http_port{
script"/usr/local/src/check_nginx_pid.sh"#Skrip pelaksanaan Heartbeat untuk mengesan sama ada nginx dimulakan
interval2# (selang pelaksanaan skrip pengesanan)
berat2# berat
}
#vrrpInstance bahagian definisi
vrrp_instanceVI_1{
stateBACKUP#Nyatakan peranan keepalived, MASTER adalah yang utama, BACKUP adalah sandaran
interfaceens33#Kad antara muka rangkaian semasa untuk komunikasi vrrp (kad rangkaian centos semasa), gunakan ifconfig untuk menyemak kad rangkaian khusus anda
virtual_router_id66#Nombor laluan maya, tuan dan hamba hendaklah sentiasa
priority99#Keutamaan, lebih besar nilai, lebih tinggi keutamaan untuk mendapatkan dan memproses permintaan
advert_int1# Semak selang, lalai ialah 1s (saat kitaran berbilang hantaran vrrp)
#Akses dibenarkan
Pengesahan{
auth_typePASS#Tetapkan jenis pengesahan dan kata laluan MASTER dan BACKUP mesti menggunakan kata laluan yang sama untuk komunikasi biasa
auth_pass1111
}
track_script{
chk_http_port# (skrip pengesanan panggilan)
}
virtual_ipaddress{
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-Cnginx--no-header|wc-l`
if[$A-eq0];then#Jika nginx tidak dimulakan, mulakan nginx
systemctlstartnginx#restart nginx
jika[`ps-Cnginx--no-header|wc-l`-eq0];maka#nginx gagal dimulakan semula, hentikan perkhidmatan keepalived dan lakukan pemindahan VIP
killallkeepalived
fi
fi
Keizinan skrip: chmod775check_nginx_pid.sh
Nota: Skrip mesti dibenarkan, jika tidak, ia tidak akan mempunyai kebenaran untuk mengakses Di sini kami mempunyai dua pelayan yang melaksanakan, VIP (virtual_ipaddress:192.168.16.130), kami mengakses perkhidmatan secara terus melalui VIP dalam persekitaran pengeluaran.
Simulasikan kegagalan nginx:
Ubah suai halaman html Nginx yang diakses oleh kedua-dua pelayan secara lalai sebagai perbezaan.
Pertama, akses 192.168.16.130 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:
systemctlstopnginx;#stop nginx
Lawati VIP (192.168.16.130) sekali lagi dan ketahui bahawa halaman masih memaparkan: 192.168.16.128 Ini ialah permulaan 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 menunjukkan 192.168.16.129 Pada masa ini, keepalived akan gagal secara automatik dan penyelesaian ketersediaan tinggi untuk pengeluaran peringkat perusahaan persekitaran telah diwujudkan.
Terdapat banyak fungsi dalam keepalived, seperti peringatan e-mel, dsb., tetapi ia tidak tersedia. Anda boleh pergi ke laman web rasmi untuk membaca dokumentasi.
Atas ialah kandungan terperinci Kaedah ketersediaan tinggi Nginx. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!