您好,登錄后才能下訂單哦!
nginx1.10.1增加后端web健康檢查upstream_check模塊
因為公司的業(yè)務(wù)需求,需要將已建好的架構(gòu)中反向代理和負(fù)載均衡做成集群,來應(yīng)對高幷發(fā)量。
但是做成集群的架構(gòu)后,後端的兩臺web機器,需要靠nginx的upstream_check來做健康檢查。
實驗環(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ù)載均衡層進行,且至針對單臺進行操作,另外一臺負(fù)載均衡機器集群成員也按照下列步驟操作即可。
下面呈現(xiàn)的是我大致的安裝步驟:
1.已源碼安裝nginx1.10.1版本
2.首先下載了nginx_upstream_check_module模塊補丁
wget https://github.com/yaoweibin/nginx_upstream_check_module/archive/master.zip
3.把master.zip解壓
[root@z soft]#unzip nginx_upstream_check_module.zip
進入到nginx_upstream_check_module內(nèi)
[root@z nginx_upstream_check_module]#pwd
/data0/soft/nginx_upstream_check_module
--主要為方便後續(xù)打好補丁做準(zhǔn)備
4.進入到nginx1.10.1的源碼包目錄里
[root@z ~]#cd /usr/local/nginx-1.10.1
5.因要對nginx打後臺健康檢查的補丁,需要把打補丁的命令安裝完畢
[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補丁進入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.打完補丁就進行編譯
因為需要添加–add-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
所以就進行編譯,只要在後面添加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
#注:因為我是在原來已安裝的版本上安插nginx_upstream_check_module模塊,所以nginx.conf是在原來的基礎(chǔ)上生成的,所以不需要另外備份。要是謹(jǐn)慎點還是把原來的配置檔案備份一下,再進行編譯安裝。
8.到了這,就是重點了,配置nginx檢測後端節(jié)點健康狀況
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;
}
--嵌套進http內(nèi)即可
#注,指令參數(shù)的意義
- interval:向后端發(fā)送的健康檢查包的間隔ms。
- fall(fall_count): 如果連續(xù)失敗次數(shù)達到fall_count,服務(wù)器就被認(rèn)為是down。
- rise(rise_count): 如果連續(xù)成功次數(shù)達到rise_count,服務(wù)器就被認(rèn)為是up。
- timeout: 后端健康請求的超時時間。
- default_down: 設(shè)定初始時服務(wù)器的狀態(tài),如果是true,就說明默認(rèn)是down的,如果是false,就是up的。
默認(rèn)值是true,也就是一開始服務(wù)器認(rèn)為是不可用,要等健康檢查包達到一定成功次數(shù)以后才會被認(rèn)為是健康的。
- type:健康檢查包的類型,現(xiàn)在支持以下多種類型
- tcp:簡單的tcp連接,如果連接成功,就說明后端正常。
- ssl_hello:發(fā)送一個初始的SSL hello包并接受服務(wù)器的SSL hello包。
- http:發(fā)送HTTP請求,通過后端的回復(fù)包的狀態(tài)來判斷后端是否存活。
- mysql: 向mysql服務(wù)器連接,通過接收服務(wù)器的greeting包來判斷后端是否存活。
- ajp:向后端發(fā)送AJP協(xié)議的Cping包,通過接收Cpong包來判斷后端是否存活。
- port: 指定后端服務(wù)器的檢查端口。你可以指定不同于真實服務(wù)的后端服務(wù)器的端口,
比如后端提供的是443端口的應(yīng)用,你可以去檢查80端口的狀態(tài)來判斷后端健康狀況。默認(rèn)是0,表示跟后端server提供真實服務(wù)的端口一樣。
9.通過訪問nginxstatus頁面,查看后端機器是否真的連接上了的準(zhǔn)備工作
vim /etc/nginx.conf
配置負(fù)載均衡層實時連接狀態(tài)展示頁面,在nginx.conf上添加上
location /nginxstatus{
stub_status on;
access_log /usr/local/nginx/logs/status.log;
auth_basic "nginxstatus";
}
查看后端網(wǎng)頁的連接數(shù),查看upstream check status,即后端web健康狀況
#添加了nginx_upstream_check_module模塊之后,該項生效
#主要為了測試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)頁上瀏覽訪問http://172.16.22.2/nginxstatus ,查看nginx的連接狀態(tài)
訪問http://172.16.22.2/informationstatus,查看后端web健康狀況
以上說明后端健康檢查模塊安裝成功!
上述內(nèi)容純靠記憶寫下,可能存在缺漏,如有錯誤與遺失,歡迎大家指出,謝謝!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。