Keepalived Nginx實現高可用(HA)

2021-07-22 18:41:22 字數 3942 閱讀 4877

keepalived的ha分為搶占模式和非搶占模式,搶占模式即master從故障中恢復後,會將vip從backup節點中搶占過來。非搶占模式即master恢復後不搶占backup公升級為master後的vip。下面分別介紹centos7下搶占模式和非搶占模式的配置方式:

vipip

主機名nginx埠

192.168.1.210

192.168.1.201

nginx-01

80192.168.1.210

192.168.1.202

nginx-0280

兩台伺服器的vip為:192.168.1.210

分別在兩台web伺服器安裝nginx和keepalived:

1、安裝nginx,請參考《nginx原始碼安裝》

2、安裝keepalived,請參考《keepalived安裝與配置》

3、防火牆新增arrp組播規則,或關閉防火牆

1> iptables

shell> vi /etc/sysconfig/iptables  

-a input -p vrrp -d

224.0

.0.18/32

-j accept

2> firewall

firewall

-cmd--

direct--

permanent--

add-

rule

ipv4

filter

input0-

-in-inte***ce

enp4s0--

destination

224.0.

0.18-

-protocol

vrrp-j

accept

firewall

-cmd--

reload

4、關閉selinux

shell> vi /etc/sysconfig/selinux

#修改:

selinux=disabled

#setenforce 0

編輯/etc/keepalived/keepalived.conf配置檔案

global_defs 

## keepalived會定時執行指令碼並對指令碼執行的結果進行分析,動態調整vrrp_instance的優先順序。

##如果指令碼執行結果為0,並且weight配置的值大於0,則優先順序相應的增加。如果指令碼執行結果非0,

##並且weight配置的值小於 0,則優先順序相應的減少。其他情況,維持原本配置的優先順序,即配置檔案中priority對應的值。

vrrp_script chk_nginx

vrrp_instance vi_1

# 虛擬ip,兩個節點設定必須一樣。可以設定多個,一行寫乙個

virtual_ipaddress

track_script

}

global_defs 

vrrp_script chk_nginx

vrrp_instance vi_1

virtual_ipaddress

track_script

}

分別在主備伺服器/etc/keepalived目錄下建立nginx_check.sh指令碼,並為其新增執行許可權chmod +x /etc/keepalived/nginx_check.sh。用於keepalived定時檢測nginx的服務狀態,如果nginx停止了,會嘗試重新啟動nginx,如果啟動失敗,會將keepalived程序殺死,將vip漂移到備份機器上。

#!/bin/bash

a=`ps -c nginx --no-header | wc -l`

if [ $a

-eq0 ];then

/opt/nginx/sbin/nginx #嘗試重新啟動nginx

sleep 2

#睡眠2秒

if [ `ps -c nginx --no-header | wc -l` -eq

0 ];then

killall keepalived #啟動失敗,將keepalived服務殺死。將vip漂移到其它備份節點

fifi

shell> service keepalived start

shell> ps -ef | grep keepalived

[root@localhost ~]# ps -ef | grep keepalived

root 86510

23:36 ? 00:00:00 keepalived -d

root 869

8650

23:36 ? 00:00:00 keepalived -d

root 870

8650

23:36 ? 00:00:00 keepalived -d

如果看到如上程序資訊,表示keepalived已經啟動成功。下面用ip add命令檢視vip繫結的情況,如下圖所示:

從上圖可以看出,vip位址192.168.1.210繫結在master(192.168.1.201)的enp0s3網絡卡上。

將master上的keepalived停止,檢視vip是否會漂移到192.168.2.202上。

停止201的keepalived服務:

從上圖可以看出,vip已經成功從201漂移到了202。此時再將201的keepalived服務啟動後,由於201是master,所以會將202的vip搶占過來。

啟動201的keepalived服務:

shell> service keepalived start
結果vip又回到了201,如下圖所示:

master從故障中恢復後,不會搶占備份節點的vip

global_defs 

vrrp_script chk_nginx

vrrp_instance vi_1

virtual_ipaddress

track_script

}

global_defs 

vrrp_script chk_nginx

vrrp_instance vi_1

virtual_ipaddress

track_script

}

和非搶占模式的配置相比,只改了兩個地方:

1> 在vrrp_instance塊下兩個節點各增加了nopreempt指令,表示不爭搶vip

2> 節點的state都為backup

兩個keepalived節點都啟動後,預設都是backup狀態,雙方在傳送組播資訊後,會根據優先順序來選舉乙個master出來。由於兩者都配置了nopreempt,所以master從故障中恢復後,不會搶占vip。這樣會避免vip切換可能造成的服務延遲。

keepalived nginx主從切換

五 nginx指令碼,新建nginx check.sh指令碼放到 etc keepalived下 指令碼內容 bin bash a ps c nginx no header wc l if a eq 0 then usr local nginx sbin nginx sleep 2 if ps c ...

keepalived nginx集群部署

192.168.132.130 伺服器1 192.168.132.132 伺服器2 虛擬ip 192.168.132.131 yum install gcc c gcc是gnu的c語言編譯器,至於c 編譯器,它的名字叫做g yum install y pcre pcre devel 在nginx編譯...

keepalived nginx負載安裝

環境 centos7.6 keepalived工具可以生成虛擬浮動ip,繫結到網絡卡上。172.21.210.19 master 172.21.210.20 backup 172.21.210.30 vip 浮動ip 1 兩個節點安裝keepalived yum y install keepaliv...