nginx+keepalive高可用詳細配置

簡介:

nginx+keepalive高可用詳細配置

keepalived


Keepalived 是一種高性能的服務器高可用或熱備解決方案,Keepalived可以用來防止服務器單點故障(單點故障是指一旦某一點出現故障就會導致整個系統架構的不可用)的發生,通過配合Nginx可以實現web前端服務的高可用。

keepalived 以 VRRP(Virtual Router Redundancy Protocol虛擬路由冗餘協議) 協議為實現基礎,Keepalived就是巧用VRRP協議來實現高可用性(HA)的.

VRRP協議將兩臺或多臺路由器設備虛擬成一個設備,對外提供虛擬路由器IP(一個或多個),而在路由器組內部,如果實際擁有這個對外IP的路由器如果工作正常的話就是MASTER,或者是通過算法選舉產生,MASTER實現針對虛擬路由器IP的各種網絡功能,如ARP請求,ICMP,以及數據的轉發等;其他設備不擁有該IP,狀態是BACKUP,除了接收MASTER的VRRP狀態通告信息外,不執行對外的網絡功能。當主機失效時,BACKUP將接管原先MASTER的網絡功能。

VRRP協議使用多播數據來傳輸VRRP數據,VRRP數據使用特殊的虛擬源MAC地址發送數據而不是自身網卡的MAC地址,VRRP運行時只有MASTER路由器定時發送VRRP通告信息,表示MASTER工作正常以及虛擬路由器IP(組),BACKUP只接收VRRP數據,不發送數據,如果一定時間內沒有接收到MASTER的通告信息,各BACKUP將宣告自己成為MASTER,發送通告信息,重新進行MASTER選舉狀態。

實驗環境:

系統版本:Centos-7.2

VIP

192.168.0.66

主機IP

192.168.1.100

192.168.1.110

1, 配置本地yum源,方便安裝依賴包

掛載光盤

mount /dev/cdrom /mnt/cdrom
vi /etc/yum.repos.d/cdrom.repo 

寫入:

[cdrom]
name=cdrom
baseurl=file:///mnt/cdrom
gpgcheck=0
enabled=1

3,刷新yum緩存

yum makecache  

4,安裝nginx依賴包

yum –y install gcc gcc-c++ make automake autoconf libtool pcre pcre-devel zlib zlib-devel openssl openssl-devel 

5,nginx官網下載源包

http://nginx.org/download/nginx-1.15.9.tar.gz

6,安裝nginx

在兩臺機器上都安裝,執行如下命令

mv nginx-1.15.9.tar.gz /usr/local/src/ 
tar –zxvf nginx-1.15.9.tar.gz
cd nginx-1.15.9
./configure –prefix=/usr/loal/nginx

7,配置nginx

 vi /usr/local/nginx/html/index.html

如下圖:

nginx+keepalive高可用詳細配置

node_1

nginx+keepalive高可用詳細配置

node_2

8,關閉防火牆,兩臺都做

nginx+keepalive高可用詳細配置

關閉防火牆

9,設置環境變量

PATH=$PATH:/usr/local/nginx/sbin/

10,測試nginx是否安裝配置正確

nginx+keepalive高可用詳細配置

測試nginx

nginx+keepalive高可用詳細配置

測試nginx

11.啟動nginx

nginx+keepalive高可用詳細配置

啟動

nginx+keepalive高可用詳細配置

啟動

12,分別訪問兩臺nginx

nginx+keepalive高可用詳細配置

訪問nginx

nginx+keepalive高可用詳細配置

訪問nginx

13,下載安裝keepalived

\thttp://www.keepalived.org/software/keepalived-2.0.13.tar.gz

安裝過程:

\tmv keepalived-2.0.13.tar.gz /usr/local/src/
\ttar –zxvf keepalived-2.0.13.tar.gz
\tcd keepalived-2.0.13
\t./configure –prefix=/usr/local/keepalived
\tmake && make install

14,keepalived設置為開機自啟動

nginx+keepalive高可用詳細配置

設置自啟動

mv /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf
mv /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/keepalived
vi /etc/keepalived/keepalived.conf
nginx+keepalive高可用詳細配置

keepalived.conf配置

字段解釋:

vrrp_script check_nginx //檢查nginx狀態腳本
{ //這個“{”要換行寫,不然腳本不生效(踩過的坑)
/> interval 5 //執行腳本時間間隔,單位秒
}
vrrp_instance VI_1 { //實例名

state MASTER //標記該節點是主節點還是備節點
interface eth1 //配置VIP綁定的網卡
virtual_router_id 66 //取1-255之間的數值,主備需要相同
priority 100 //權重,數值高的是Master,這是主備的關鍵參數
advert_int 1 //主備之間通信的間隔
authentication {
auth_type PASS //主備之間進行安全驗證的方式,主備需一致
auth_pass 6666
}
virtual_ipaddress { //VIP,可以寫多個
192.168.1.66
\t }
\t track_script { //調用腳本
\t check_nginx
\t }
\t}

腳本參考

\tvi /scripts/check_nginx.sh
\t#!/bin/bash
\tA=`ps -C nginx --no-headers | wc -l`
\tif [ $A -eq 0 ];then
\t /usr/local/nginx/sbin/nginx
\t sleep 5
\t B=`ps -C nginx --no-headers | wc -l`
\t if [ $B -eq 0 ];then
\t killall keepalived
\t fi
\tfi

15,實驗結果

為了能觸發VIP飄到備機上,我把腳本註釋掉一部分

nginx+keepalive高可用詳細配置

腳本

在node_1上

nginx+keepalive高可用詳細配置

IP信息

nginx+keepalive高可用詳細配置

服務信息

訪問192.168.1.66,此時訪問的是node_1

nginx+keepalive高可用詳細配置

訪問驗證

手動kill掉nginx進程

nginx+keepalive高可用詳細配置

手動殺進程

在節點2上,可以看到VIP已經飄過來了

nginx+keepalive高可用詳細配置

IP信息

訪問192.168.1.66,此時訪問的是node_2

nginx+keepalive高可用詳細配置

訪問驗證

希望大家一起批評指正,或者分享工作中遇到的一些坑,互相學習。

附keepalived官方文檔和參考資料

http://www.keepalived.org/manpage.html

http://www.linuxe.cn/post-266.html

https://blog.csdn.net/death_kada/article/details/49635729


分享到:


相關文章: