上一章我們講解了nginx的集群,那么如果碰到下面的問(wèn)題,我們改怎么辦了?
分發(fā)器宕機(jī)怎么辦
數(shù)據(jù)服務(wù)器宕機(jī)怎么辦
別怕,我們有Keepalive
Keepalived的作?是檢測(cè)服務(wù)器的狀態(tài),如果有?臺(tái)web服務(wù)器宕機(jī),或?作出現(xiàn)故障,Keepalived將檢測(cè)到,并將有故障的服務(wù)器從系統(tǒng)中剔除,同時(shí)使?其他服務(wù)器代
替該服務(wù)器的?作,當(dāng)服務(wù)器?作正常后Keepalived?動(dòng)將服務(wù)器加?到服務(wù)器群中,這些?作全部?動(dòng)完成,不需要???涉,需要??做的只是修復(fù)故障的服務(wù)器。
?個(gè)監(jiān)控+?愈的軟件
1:根據(jù)提供地址進(jìn)行下載
http://www.keepalived.org/download.html
wget http://www.keepalived.org/software/keepalived-2.0.8.tar.gz

image.png
2:解壓到文件夾
[root@localhost src]# tar -zxvf keepalived-2.2.4.tar.gz
[root@localhost src]# ./configure --prefix=/usr/local/keepalived
3:編譯和安裝
[root@localhost src]#make
[root@localhost src]#make install
軟件環(huán)境部署
1分發(fā)器 nginx+keepalived
2數(shù)據(jù)服務(wù)器 Nginx
3配置Nginx分發(fā)器
4配置數(shù)據(jù)服務(wù)器??(web01 web02)
5配置keepalived.conf
6測(cè)試
配置Nginx集群
upstream web {
server 192.168.10.42 max_fails=2 fail_timeout=3;
server 192.168.10.43 max_fails=2 fail_timeout=3;
}
server {
listen 80;
server_name localhost;
ocation / {
proxy_pass http://web;
}
}
配置keepalived
#找到配置文件,進(jìn)行備份后編輯
vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
router_id NGINX_DEVEL
}
#定義一個(gè)腳本,名字叫做check_nginx
vrrp_script check_nginx {
script "/etc/keepalived/nginx_pid.sh" #腳本路徑
interval 2 #每2s運(yùn)行一次腳本
fall 1 #失敗次數(shù)1
}
vrrp_instance nginx { #一個(gè)實(shí)例就是一個(gè)集群,名稱為nginx
state MASTER #定義狀態(tài)為主播
interface ens33 #配置網(wǎng)卡名稱,指向本機(jī)具體的網(wǎng)卡名稱
mcast_src_ip 192.168.10.40 #宣告自己還活著,閑雜人等都給朕退下
virtual_router_id 51 #指定vrrp實(shí)例id,范圍0-255
priority 100 #指定優(yōu)先級(jí),優(yōu)先級(jí)高的將成為master組播
advert_int 1 #多久發(fā)一次組播
authentication {
auth_type PASS
auth_pass 1111
}
track_script {
check_nginx
}
virtual_ipaddress { #虛擬ip
192.168.10.213/24
}
}
關(guān)聯(lián)腳本 nginx_pid.sh(注意是上文中定義的腳本路徑)
#chmod 755 /etc/keepalived/nginx_pid.sh
#vim /etc/keepalived/nginx_pid.sh
#!/bin/bash
nginx_kp_check () {
nginxpid=`ps -C nginx --no-header |wc -l`
if [ $nginxpid -eq 0 ];then
/usr/local/nginx/sbin/nginx
sleep 1
nginxpid=`ps -C nginx --no-header |wc -l`
if [ $nginxpid -eq 0 ];then
systemctl stop keepalived
fi
fi}
啟動(dòng)keepalived
systemctl start keepalived
配置備份Nginx分發(fā)器
backuo.ayitula.com
#cat /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
router_id NGINX_DEVEL
}
vrrp_script check_nginx {
script "/etc/keepalived/nginx_pid.sh"
interval 2
fall 1
}
vrrp_instance nginx {
state BACKUP
interface ens33
mcast_src_ip 192.168.10.41
virtual_router_id 51
priority 90
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
track_script {
check_nginx
}
virtual_ipaddress {
192.168.10.213/24
}
}
大功告成,加油~~~~