nginx,keepalived高可用部署
環境
172.16.91.218 主
172.16.91.219
安裝包版本
nginx-1.14.0.tar.gz
keepalived-2.0.7.tar.gz
把 nginx,keepalived 壓縮包 上傳到 /usr/local/src/
兩個機器 都 安裝 nginx
- 安裝 依賴 包
yum install -y gcc-c++
yum install -y pcre pcre-devel
yum install -y zlib zlib-devel
yum install -y openssl openssl-devel
- 把 nginx 解壓 放到 /usr/local/ 並重命名為 nginx
./configure --prefix=/usr/local/nginx --conf-path=/usr/local/nginx/nginx.conf
- 編譯 安裝
cd /usr/local/nginx/
make && make install
基本 命令使用
Nginx 啟動
Nginx -s stop 關閉 nginx
Nginx -s start 啟動nginx
兩臺機器 都要 安裝 keepalived
- 安裝 所需要 的依賴包
yum install -y gcc;
yum install -y openssl-devel;
yum install -y libnl;
yum install -y libnl-devel;
yum install -y libnfnetlink-devel;
- 解壓,並 放到 /usr/local /, 並 重新命名為 keepalived
- ./configure --prefix=/usr/local/keepalived/ --sysconf /etc
4
cd /usr/local/keepalived/
make && make install
ln -s sbin/keepalived /sbin/
cd keepalived
cp etc/init.d/keepalived /etc/init.d/
chkconfig --add keepalived
chkconfig keepalived on
service keepalived start
主 伺服器 keepalived 的 keepalived 配置
! Configuration File for keepalived
global_defs { router_id LVS_DEVEL }
vrrp_script chk_nginx_service { script "/usr/local/keepalived/nginx-ha-check.sh" interval 2 weight -10 }
vrrp_instance VI_1 { state MASTER interface ens160 virtual_router_id 51 priority 100 advert_int 1
track_script { chk_nginx_service }
authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 172.16.91.100 } }
virtual_server 172.16.91.100 80 { delay_loop 6 lb_algo rr lb_kind NAT persistence_timeout 50 protocol TCP
real_server 172.16.91.218 80 { weight 1 TCP_CHECK { connect_timeout 3 delay_before_retry 3 connect_port 80 }
} }
} |
從 伺服器 keepalived 的 keepalived 配置
! Configuration File for keepalived
global_defs { router_id LVS_DEVEL }
vrrp_script chk_nginx_service { script "/usr/local/keepalived/nginx-ha-check.sh" interval 2 weight -10 }
vrrp_instance VI_1 { state BACKUP interface ens160 virtual_router_id 51 priority 50 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 172.16.91.100 }
track_script { chk_nginx_service }
}
virtual_server 172.16.91.100 80 { delay_loop 6 lb_algo rr lb_kind NAT persistence_timeout 50 protocol TCP
real_server 172.16.91.219 80 { weight 1 TCP_CHECK { connect_timeout 3 delay_before_retry 3 connect_port 80 }
} }
} |
觸發的指令碼
#! /bin/sh A=`ps -C nginx --no-header | wc -l` if [ $A -eq 0 ] then echo 'nginx server is died' service keepalived stop fi ~ |
Keepalived 配置檔案 講解
global_defs { router_id LVS_DEVEL 執行 keepalived 伺服器的標識,在一個網路內應該是唯 一的 } vrrp_instance VI_1 { #vrrp 例項定義部分 state MASTER #設定 lvs 的狀態,MASTER 和 BACKUP 兩種,必須大寫 interface ens33 #設定對外服務的介面 virtual_router_id 51 #設定虛擬路由標示,這個標示是一個數字,同一個 vr rp 例項使用唯一標示 priority 100 #定義優先順序,數字越大優先順序越高,在一個 vrrp——instance 下, master 的優先順序必須大於 backup advert_int 1 #設定 master 與 backup 負載均衡器之間同步檢查的時間間隔,單 位是秒 authentication { #設定驗證型別和密碼 auth_type PASS auth_pass 1111 #驗證密碼,同一個 vrrp_instance 下 MASTER 和 BACKU P 密碼必須相同 } virtual_ipaddress { #設定虛擬 ip 地址,可以設定多個,每行一個 192.168.11.100 } } virtual_server 192.168.11.100 80 { #設定虛擬伺服器,需要指定虛擬 ip 和服務 埠 delay_loop 6 #健康檢查時間間隔 lb_algo rr #負載均衡排程演算法 lb_kind NAT #負載均衡轉發規則 persistence_timeout 50 #設定會話保持時間 protocol TCP #指定轉發協議型別,有 TCP 和 UDP 兩種 real_server 192.168.11.160 80 { #配置伺服器節點 1,需要指定 real serve r 的真實 IP 地址和埠 weight 1 #設定權重,數字越大權重越高 TCP_CHECK { #realserver 的狀態監測設定部分單位秒 connect_timeout 3 #超時時間 delay_before_retry 3 #重試間隔 connect_port 80 #監測埠 } } } |