Rumah >Operasi dan penyelenggaraan >Nginx >Bagaimana untuk mencapai ketersediaan tinggi dengan menggabungkan keepalived dengan nginx

Bagaimana untuk mencapai ketersediaan tinggi dengan menggabungkan keepalived dengan nginx

WBOY
WBOYke hadapan
2023-05-15 21:07:121415semak imbas

1. Pengenalan

keepalived ialah penyelesaian ketersediaan tinggi untuk perkhidmatan lvs berdasarkan protokol vrrp, yang boleh digunakan untuk mengelakkan satu titik kegagalan. Perkhidmatan LVS akan mempunyai dua pelayan yang dijalankan keepalived, satu sebagai pelayan utama (master) dan satu sebagai pelayan sandaran (backup), tetapi ia akan muncul sebagai IP maya kepada dunia luar pelayan sandaran. Apabila pelayan sandaran Apabila pelayan tidak dapat menerima mesej ini, iaitu, apabila pelayan utama turun, pelayan sandaran akan mengambil alih IP maya dan terus menyediakan perkhidmatan, sekali gus memastikan ketersediaan yang tinggi. Keepalived ialah pelaksanaan vrrp yang sempurna, jadi sebelum memperkenalkan keepalived, mari kita perkenalkan prinsip vrrp dahulu.

Pengenalan protokol 1.vrrp

Dalam persekitaran rangkaian sebenar, dua hos yang perlu berkomunikasi tidak mempunyai sambungan fizikal langsung dalam kebanyakan kes. Untuk keadaan sedemikian, bagaimana untuk memilih laluan antara mereka? Bagaimanakah hos memilih laluan lompat seterusnya ke hos destinasi Terdapat dua penyelesaian biasa untuk masalah ini:

  1. Gunakan protokol penghalaan dinamik (rip, ospf, dll.) pada hos?

  2. Mengkonfigurasi penghalaan statik pada hos

Jelas sekali, mengkonfigurasi penghalaan dinamik pada hos adalah sangat tidak praktikal kerana kos pengurusan dan penyelenggaraan dan Sama ada ia disokong dan banyak soalan lain. Mengkonfigurasi laluan statik telah menjadi sangat popular, tetapi penghala (atau get laluan lalai) sering menjadi satu titik kegagalan. Tujuan vrrp adalah untuk menyelesaikan satu titik masalah kegagalan penghalaan statik vrrp menggunakan protokol pilihan raya untuk secara dinamik menetapkan tugas penghalaan kepada penghala vrrp antara penghala maya dalam lan.

2. mekanisme kerja vrrp

Dalam penghala maya vrrp, terdapat berbilang penghala vrrp fizikal, tetapi berbilang mesin fizikal ini tidak boleh berfungsi pada masa yang sama, tetapi satu yang dipanggil master bertanggungjawab untuk kerja penghalaan, dan yang lain adalah sandaran Master tidak statik vrrp membenarkan setiap penghala vrrp untuk mengambil bahagian dalam pilihan raya, dan master adalah pemenang pada akhirnya. Tuan mempunyai beberapa keistimewaan Sebagai contoh, ia mempunyai alamat IP penghala maya Hos kami menggunakan alamat IP ini sebagai laluan statik. Tuan yang mempunyai keistimewaan bertanggungjawab untuk memajukan paket yang dihantar ke alamat get laluan dan membalas permintaan arp.

vrrp melaksanakan fungsi penghala maya melalui protokol pilihan raya Semua mesej protokol dihantar dalam bentuk paket ip multicast (multicast) (alamat berbilang siaran 224.0.0.18). Penghala maya terdiri daripada vrid (julat 0-255) dan satu set alamat IP, yang kelihatan kepada dunia luar sebagai alamat mac yang terkenal. Oleh itu, dalam penghala maya, tidak kira siapa tuannya, mac dan ip luaran adalah sama (dipanggil vip). Hos pelanggan tidak perlu mengubah suai konfigurasi penghalaan kerana perubahan dalam induk Bagi pelanggan, penukaran induk-hamba ini adalah telus.

Dalam penghala maya, hanya penghala vrrp sebagai induk akan sentiasa menghantar mesej pemberitahuan vrrp (mesej iklan vrrpad), dan sandaran tidak akan mendahului induk melainkan keutamaannya lebih tinggi. Apabila induk tidak tersedia (sandaran tidak boleh menerima maklumat pemberitahuan), yang mempunyai keutamaan tertinggi antara berbilang sandaran akan didahulukan untuk menjadi induk. Preemption ini sangat pantas (

3.vrrp aliran kerja

(1) Permulaan:

Apabila penghala bermula, jika keutamaan penghala ialah 255( The). keutamaan tertinggi, penghala mempunyai alamat penghala), untuk menghantar maklumat pemberitahuan vrrp, dan menghantar maklumat arp siaran untuk memberitahu alamat mac yang sepadan dengan alamat ip penghala ialah mac maya penghalaan, tetapkan pemasa maklumat pemberitahuan untuk bersedia untuk menghantar pemberitahuan vrrp maklumat dengan kerap, dan pindahkan ke keadaan induk ; Jika tidak, masukkan keadaan sandaran dan tetapkan pemasa untuk menyemak sama ada maklumat pemberitahuan daripada induk diterima secara tetap.

(2).master

  1. Tetapkan pemasa pemberitahuan yang dijadualkan;

  2. Balas alamat ip penghala dengan vrrp permintaan arp alamat mac maya; ip, ia akan diterima Paket data yang alamat destinasinya ialah IP penghala maya akan dibuang jika tidak

  3. Apabila acara penutupan diterima, pemasa pemberitahuan yang dijadualkan akan dipadamkan, a; paket pemberitahuan dengan tahap keutamaan 0 akan dihantar, dan kemudian dimulakan Status; >

    Apabila menerima maklumat pemberitahuan vrrp, jika keutamaan ialah 0, hantar maklumat pemberitahuan vrrp jika tidak, tentukan sama ada keutamaan data lebih tinggi daripada mesin tempatan, atau sama ada ia sama dan alamat IP sebenar; lebih besar daripada IP tempatan sebenar, tetapkan pemasa pemberitahuan yang dijadualkan, tetapkan semula pemasa tamat masa hos, dan pindahkan ke keadaan sandaran jika tidak, buangkannya Pakej pemberitahuan; sandaran
  4. Tetapkan pemasa tamat masa hos;
  5. Buang semua paket yang alamat mac destinasinya ialah alamat mac penghala maya; >

    Apabila menerima acara penutupan, padamkan pemasa tamat masa hos dan pindahkan kepada keadaan permulaan;
  6. Apabila pemasa tamat masa hos tamat, ia menghantar maklumat pemberitahuan vrrp, menyiarkan maklumat alamat arp dan bertukar kepada keadaan induk

  7. Apabila ia diterima maklumat pemberitahuan vrrp, Jika keutamaan adalah 0, ia bermakna memasuki pilihan raya induk jika tidak, tentukan sama ada keutamaan data adalah lebih tinggi daripada mesin tempatan Jika ia tinggi, akui induk adalah sah dan tetapkan semula pemasa tamat masa; jika tidak, buang paket pemberitahuan;

4.pemprosesan pertanyaan arp

Apabila hos dalaman menanyakan alamat mac yang sepadan dengan ip penghala maya alamat melalui arp, alamat mac yang dijawab oleh penghala induk ialah alamat mac vrrp maya, bukannya alamat mac kad rangkaian sebenar, supaya mesin rangkaian dalaman tidak dapat mengesannya apabila penghala bertukar dan apabila penghala dimulakan semula, ia tidak boleh menghantar alamat mac sebenar kad rangkaian tempatan secara aktif. Jika fungsi proksi arp (proxy_arp) didayakan pada penghala maya, respons arp proksi juga bertindak balas kepada alamat mac maya vrrp.

2. Bina persekitaran

1 Pelayan 1: 10.63.0.154 Pasang keeplived dan tetapkan nilai keutamaan kepada 100
2 : 10.63.0.155 Pasang keepalived dan tetapkan nilai keutamaan kepada 98
3. Tetapkan IP maya yang sepadan dengan dua pelayan sebagai: 10.63.0.158

3 >

Pemasangan keepalived ini menggunakan mod yum dan dipasang pada pelayan 1. Langkah utama adalah seperti berikut:


1 Pasang ipvsadm, arahan: yum install ipvsadm pemasangan selesai, anda boleh Perintah ipvsadm –v untuk melihat nombor versi.

2. Pasang keepalived, arahan: yum install keepalived Selepas pemasangan selesai, anda boleh menyemak nombor versi melalui arahan keepalived –v.
3. Cipta skrip /usr/local/nginx/nginx_check.sh. Kandungan skrip adalah seperti berikut:

#!/bin/bash
#判断nginx服务是否启动,如果不存在,调用nginx启用命令,并停止2秒,若#启动失败,杀掉keepalived
a=`ps -c nginx --no-header |wc -l`
if [ $a -eq 0 ];then 
 /usr/sbin/nginx
 sleep 2
 if [ `ps -c nginx --no-header |wc -l` -eq 0 ];then
  killall keepalived
 fi
fi

Tetapkan kebenaran nginx_check.sh Perintah tetapan ialah: chmod 777 /usr/local/nginx/nginx_check.sh

4. Konfigurasikan maklumat nod keepalived, lalai Fail konfigurasi ialah /etc/keepalived/keepalived.conf. Fail konfigurasi keepalived.conf adalah seperti berikut:


! configuration file for keepalived

global_defs {
 router_id nginx_master154
}

vrrp_script chk_nginx {
 script "/usr/local/nginx/nginx_check.sh"
 interval 2
 weight 20
}
vrrp_instance vi_1 {
 state master
 interface eth0
 virtual_router_id 154
 mcast_src_ip 10.63.0.154
 priority 100
 nopreempt
 advert_int 1
 authentication {
  auth_type pass
  auth_pass 1111
 }
 track_script {
  chk_nginx
 }
 virtual_ipaddress {
  10.63.0.158
 }
}
}

Perihalan parameter kunci fail konfigurasi:

  1. router_id //Tentukan nama nod

  2. vrrp_script chk_nginx { script "/etc/keepalived/nginx_check.sh" interval 2 weight -20 } //Laksanakan skrip /etc/keepalived/nginx_check.sh setiap 2 saat Teruskan, selang mewakili selang, dan berat -20 bermakna apabila skrip dilaksanakan untuk menentukan pengecualian, keutamaan nod 10.63.0.154 dikurangkan sebanyak 20.

  3. nyatakan induk //Menunjukkan bahawa peranan nod ditakrifkan sebagai induk

  4. virtual_router_id 154 //Tentukan ID nod maya

  5. antara muka eth0 //Tentukan nama kad rangkaian untuk melihat nama kad rangkaian pelayan melalui arahan: ifconfig atau ip a, seperti yang ditunjukkan dalam rajah:

Bagaimana untuk mencapai ketersediaan tinggi dengan menggabungkan keepalived dengan nginx

Selepas fail konfigurasi di atas selesai, mulakan nginx dan mulakan keepalived untuk menguji sama ada nginx boleh diakses oleh alamat IP maya. Mulakan arahan keepalived: systemctl mula keepalived.service Selepas bermula, anda boleh menyemak status melalui arahan systemctl status keepalived.service. Tangkapan skrin antara muka utama nginx menggunakan IP maya adalah seperti berikut:

Bagaimana untuk mencapai ketersediaan tinggi dengan menggabungkan keepalived dengan nginx

3. Pasang nod sandaran keepalived

Pasang keepalived pada pelayan 2 Kaedahnya betul-betul sama seperti pelayan 1. Anda hanya perlu mengubah suai tiga tempat dalam fail konfigurasi keepalived.conf:

  1. antara muka eth0 //Tentukan kad rangkaian nama untuk melihat kad rangkaian pelayan 2. Contohnya, nama kad rangkaian ialah eno24 , maka ia ditakrifkan sebagai: antara muka eno24

  2. keutamaan //Nilai keutamaan ditetapkan kepada 98

  3. mcast_src_ip 10.63.0.155

Selepas pemasangan keepalived pada kedua-dua pelayan berjaya, ujian panggilan melalui ip10.63.0.158 maya ditemui bahawa ia sentiasa halaman nod utama dan halaman nod sandaran tidak akan dipanggil. Selepas menyediakan keepalived pada pelayan 1 dan memanggilnya semula, antara muka utama nod siap sedia akan muncul, seperti yang ditunjukkan di bawah:

Bagaimana untuk mencapai ketersediaan tinggi dengan menggabungkan keepalived dengan nginx

4.alat pengurusan perkhidmatan linux systemctl

Di Linux, terdapat dua arahan, perkhidmatan dan chkconfig, untuk menguruskan perkhidmatan. systemctl ialah alat utama untuk menguruskan perkhidmatan. Ia menyepadukan chkconfig dan fungsi perkhidmatan. (Anda boleh menggunakan arahan ini untuk mengurus perisian pemasangan yum dan tetapkan sama ada untuk bermula semasa but)

  1. systemctl is-enabled servicename.service #Query sama ada perkhidmatan dimulakan semasa but

  2. systemctl enable *.service #Mulakan perkhidmatan

  3. systemctl disable *.service #Batalkan permulaan

  4. systemctl mula *.perkhidmatan #Mulakan perkhidmatan

  5. systemctl berhenti *.perkhidmatan #Hentikan perkhidmatan

  6. systemctl restart *.service #重启服务

  7. systemctl reload *.service #重新加载服务配置文件

  8. systemctl status *.service #查询服务运行状态

  9. systemctl --failed #显示启动失败的服务

注:*代表某个服务的名字,如http的服务名为httpd

例如在centos 7 上安装http

[root@centos7 ~]# yum -y install httpd

启动服务(等同于service httpd start)  systemctl start httpd.service
停止服务(等同于service httpd stop)  systemctl stop httpd.service
重启服务(等同于service httpd restart) systemctl restart httpd.service
查看服务是否运行(等同于service httpd status) systemctl status httpd.service 开机自启动服务(等同于chkconfig httpd on)  systemctl enable httpd.service
开机时禁用服务(等同于chkconfig httpd on) systemctl disable httpd.service

ps -ef | grep nginx #查看服务进程

#非systemctl配置开机启动:chmod +x /etc/rc.d/rc.local
#打开rc.localvi /etc/rc.local
#加入启动脚本其中路径一定要用全路径如:/usr/local/nginx/sbin/nginx

Atas ialah kandungan terperinci Bagaimana untuk mencapai ketersediaan tinggi dengan menggabungkan keepalived dengan 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