nginx1.10.1增加后端web健康檢查upstream_check模塊
景縣ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書未來市場(chǎng)廣闊!成為創(chuàng)新互聯(lián)建站的ssl證書銷售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18980820575(備注:SSL證書合作)期待與您的合作!
因?yàn)楣镜臉I(yè)務(wù)需求,需要將已建好的架構(gòu)中反向代理和負(fù)載均衡做成集群,來應(yīng)對(duì)高幷發(fā)量。
但是做成集群的架構(gòu)后,後端的兩臺(tái)web機(jī)器,需要靠nginx的upstream_check來做健康檢查。
實(shí)驗(yàn)環(huán)境:
應(yīng)用 IP 操作系統(tǒng) 涉及軟件
負(fù)載均衡層 172.16.22.2 CentOS 7.2 nginx-1.10.1
后端web01 172.16.22.3 CentOS 7.2 Tomcat-7.0.72
后端web02 172.16.22.4 CentOS 7.2 Tomcat-7.0.72
下列的設(shè)定只在負(fù)載均衡層進(jìn)行,且至針對(duì)單臺(tái)進(jìn)行操作,另外一臺(tái)負(fù)載均衡機(jī)器集群成員也按照下列步驟操作即可。
下面呈現(xiàn)的是我大致的安裝步驟:
1.已源碼安裝nginx1.10.1版本
2.首先下載了nginx_upstream_check_module模塊補(bǔ)丁
wget https://github.com/yaoweibin/nginx_upstream_check_module/archive/master.zip
3.把master.zip解壓
[root@z soft]#unzip nginx_upstream_check_module.zip
進(jìn)入到nginx_upstream_check_module內(nèi)
[root@z nginx_upstream_check_module]#pwd
/data0/soft/nginx_upstream_check_module
--主要為方便後續(xù)打好補(bǔ)丁做準(zhǔn)備
4.進(jìn)入到nginx1.10.1的源碼包目錄里
[root@z ~]#cd /usr/local/nginx-1.10.1
5.因要對(duì)nginx打後臺(tái)健康檢查的補(bǔ)丁,需要把打補(bǔ)丁的命令安裝完畢
[root@z nginx-1.10.1]#rpm -qa | grep patch
patch-2.7.1-8.el7.x86_64
如果沒有安裝patch,就yum install -y patch
6.打upstream_check補(bǔ)丁進(jìn)入nginx-1.10.1內(nèi)
[root@z nginx-1.10.1]#patch -p0 < /data0/soft/nginx_upstream_check_module/check_1.11.1+.patch
7.打完補(bǔ)丁就進(jìn)行編譯
因?yàn)樾枰砑莹Cadd-module=/root/nginx_upstream_check_module-master
如果其他編譯參數(shù)和之前保持一致,但又不記得之前的編譯參數(shù),
可使用 nginx -V 命令查看。
[root@z nginx-1.10.1]# /usr/local/nginx/sbin/nginx -V
nginx version: nginx/1.10.1
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-4) (GCC)
built with OpenSSL 1.0.1e-fips 11 Feb 2013
TLS SNI support enabled
configure arguments:
--prefix=/usr/local/nginx
--pid-path=/var/run/nginx/nginx.pid
--lock-path=/var/lock/nginx.lock
--user=nginx
--group=nginx
--with-http_ssl_module
--with-http_flv_module
--with-http_stub_status_module
--with-http_gzip_static_module
--http-client-body-temp-path=/var/tmp/nginx/client/
--http-proxy-temp-path=/var/tmp/nginx/proxy/
--http-fastcgi-temp-path=/var/tmp/nginx/fcgi/
--http-uwsgi-temp-path=/var/tmp/nginx/uwsgi
--http-scgi-temp-path=/var/tmp/nginx/scgi
--with-pcre
所以就進(jìn)行編譯,只要在後面添加upstream_check_module-master
即如下:
[root@z nginx-1.10.1]#./configure \
--prefix=/usr/local/nginx \
--pid-path=/var/run/nginx/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--user=nginx \
--group=nginx \
--with-http_ssl_module \
--with-http_flv_module \
--with-http_stub_status_module \
--with-http_gzip_static_module \
--http-client-body-temp-path=/var/tmp/nginx/client/ \
--http-proxy-temp-path=/var/tmp/nginx/proxy/ \
--http-fastcgi-temp-path=/var/tmp/nginx/fcgi/ \
--http-uwsgi-temp-path=/var/tmp/nginx/uwsgi \
--http-scgi-temp-path=/var/tmp/nginx/scgi \
--with-pcre \
--add-module=/data0/soft/nginx_upstream_check_module-master/
[root@z nginx-1.10.1]# make && make install
[root@z nginx-1.10.1]# make clean
#注:因?yàn)槲沂窃谠瓉硪寻惭b的版本上安插nginx_upstream_check_module模塊,所以nginx.conf是在原來的基礎(chǔ)上生成的,所以不需要另外備份。要是謹(jǐn)慎點(diǎn)還是把原來的配置檔案?jìng)浞菀幌?,再進(jìn)行編譯安裝。
8.到了這,就是重點(diǎn)了,配置nginx檢測(cè)後端節(jié)點(diǎn)健康狀況
vim /etc/nginx.conf
添加upstream模塊
upstream information{
server 172.16.22.3:80 max_fails=2;
server 172.16.22.4:80 max_fails=2;
check interval=3000 rise=2 fall=5 timeout=1000 type=http;
}
--嵌套進(jìn)http內(nèi)即可
#注,指令參數(shù)的意義
- interval:向后端發(fā)送的健康檢查包的間隔ms。
- fall(fall_count): 如果連續(xù)失敗次數(shù)達(dá)到fall_count,服務(wù)器就被認(rèn)為是down。
- rise(rise_count): 如果連續(xù)成功次數(shù)達(dá)到rise_count,服務(wù)器就被認(rèn)為是up。
- timeout: 后端健康請(qǐng)求的超時(shí)時(shí)間。
- default_down: 設(shè)定初始時(shí)服務(wù)器的狀態(tài),如果是true,就說明默認(rèn)是down的,如果是false,就是up的。
默認(rèn)值是true,也就是一開始服務(wù)器認(rèn)為是不可用,要等健康檢查包達(dá)到一定成功次數(shù)以后才會(huì)被認(rèn)為是健康的。
- type:健康檢查包的類型,現(xiàn)在支持以下多種類型
- tcp:簡(jiǎn)單的tcp連接,如果連接成功,就說明后端正常。
- ssl_hello:發(fā)送一個(gè)初始的SSL hello包并接受服務(wù)器的SSL hello包。
- http:發(fā)送HTTP請(qǐng)求,通過后端的回復(fù)包的狀態(tài)來判斷后端是否存活。
- MySQL: 向mysql服務(wù)器連接,通過接收服務(wù)器的greeting包來判斷后端是否存活。
- ajp:向后端發(fā)送AJP協(xié)議的Cping包,通過接收Cpong包來判斷后端是否存活。
- port: 指定后端服務(wù)器的檢查端口。你可以指定不同于真實(shí)服務(wù)的后端服務(wù)器的端口,
比如后端提供的是443端口的應(yīng)用,你可以去檢查80端口的狀態(tài)來判斷后端健康狀況。默認(rèn)是0,表示跟后端server提供真實(shí)服務(wù)的端口一樣。
9.通過訪問nginxstatus頁(yè)面,查看后端機(jī)器是否真的連接上了的準(zhǔn)備工作
vim /etc/nginx.conf
配置負(fù)載均衡層實(shí)時(shí)連接狀態(tài)展示頁(yè)面,在nginx.conf上添加上
location /nginxstatus{
stub_status on;
access_log /usr/local/nginx/logs/status.log;
auth_basic "nginxstatus";
}
查看后端網(wǎng)頁(yè)的連接數(shù),查看upstream check status,即后端web健康狀況
#添加了nginx_upstream_check_module模塊之后,該項(xiàng)生效
#主要為了測(cè)試nginx_upstream_check_module模塊是否好使
location /zstatus{
check_status;
access_log off;
#allow IP;
#deny all;
}
10.配置完畢,需要重啟nginx服務(wù)
先檢查配置信息是否無誤
[root@z nginx-1.10.1]#/usr/local/nginx/sbin/nginx -t
平滑重啟nginx服務(wù)
[root@z nginx-1.10.1]#/usr/local/nginx/sbin/nignx -s reload
可以在網(wǎng)頁(yè)上瀏覽訪問http://172.16.22.2/nginxstatus ,查看nginx的連接狀態(tài)
訪問http://172.16.22.2/informationstatus,查看后端web健康狀況
以上說明后端健康檢查模塊安裝成功!
上述內(nèi)容純靠記憶寫下,可能存在缺漏,如有錯(cuò)誤與遺失,歡迎大家指出,謝謝!