nginx自帶的針對后端節點健康檢查的功能比較簡單,通過默認自帶的ngx_http_proxy_module 模塊和ngx_http_upstream_module模塊中的參數來完成,當后端節點出現故障時,自動切換到健康節點來提供訪問。但是nginx不能事先知道后端節點狀態是否健康,后端即使有不健康節點,負載均衡器依然會先把請求轉發給該不健康節點,然后再轉發給別的節點,這樣就會浪費一次轉發,而且自帶模塊無法做到預警。所以我們可以使用第三方模塊 nginx_upstream_check_module模塊
nginx_upstream_check_module模塊由淘寶團隊開發 淘寶自己的 tengine 上是自帶了該模塊的。我們使用原生Nginx,采用添加模塊的方式
此處使用的是nginx1.20.1
安裝補丁:
注意 check版本和Nginx版本要求有限制 1.12以上版本的nginx,補丁為check_1.11.5+.patch 具體參考github
[root@nginx-server ~]# yum install -y unzip下載模塊
[root@nginx-server ~]# wget https://github.com/yaoweibin/nginx_upstream_check_module/archive/refs/heads/master.zip
或
rz 上傳包master.zip
[root@nginx-server ~]# unzip -d /usr/local/ master.zip[root@bogon ~]# ls /usr/local/
bin games lib libexec nginx-1.20.2 sbin src
etc include lib64 nginx nginx_upstream_check_module-master share
-p0,是“當前路徑” -p1,是“上一級路徑”
[root@bogon ~]# cd /usr/local/
[root@bogon local]# mv nginx_upstream_check_module-master/ nginx_upstream_check_module 改名字[root@nginx-server ~]# cd /usr/local/nginx-1.20.1/ #進入nginx的解壓目錄中
[root@nginx-server nginx-1.20.1]# yum install -y patch
[root@nginx-server nginx-1.20.1]# patch -p1 < ../nginx_upstream_check_module/check_1.20.1+.patch
[root@nginx-server nginx-1.20.1]# ./configure --prefix=/usr/local/nginx --group=nginx --user=nginx --sbin-path=/usr/local/nginx/sbin/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/erro