一:nginx后端健康检查ngx_http_upstream_module
nginx自带健康检查的缺陷 :
- Nginx只有当有访问时后,才发起对后端节点探测。
- 如果本次请求中,节点正好出现故障,Nginx依然将请求转交给故障的节点,然后再转交给健康的节点处理。所以不会影响到这次请求的正常进行。但是会影响效率,因为多了一次转发
- 自带模块无法做到预警
- 被动健康检查
upstream cluster{
server 172.16.0.23:80 max_fails=1 fail_timeout=10s;
server 172.16.0.24:80 max_fails=1 fail_timeout=10s;
# max_fails=1和fail_timeout=10s 表示在单位周期为10s钟内,中达到1次连接失败,那么接将把节点标记为不可用,并等待下一个周期(同样时常为fail_timeout)再一次去请求,判断是否连接是否成功。
# fail_timeout为10s,max_fails为1次。
}
server {
listen 80;
server_name xxxxxxx.com;
location / {
proxy_pass http://cluster;
}
}
二.使用第三访模块nginx_upstream_check_module
- 区别于nginx自带的非主动式的心跳检测,淘宝开发的tengine自带了一个提供主动式后端服务器心跳检测模块
- 若健康检查包类型为http,在开启健康检查功能后,nginx会根据设置的间隔向指定的后端服务器端口发送健康检查包,并根据期望的HTTP回复状态码来判断服务是否健康。
- 后端真实节点不可用,则请求不会转发到故障节点
- 故障节点恢复后,请求正常转发
三.升级步骤:
1.查看本机使用的版本,nginx -v,如果版本不想变,那就下载指定的版本的nginx包到本机/app/tools目录下
]# nginx -v
nginx version: nginx/1.26.0
]# wget http://nginx.org/download/nginx-1.26.0.tar.gz
]# tar -xvf nginx-1.26.0.tar.gz
2.下载nginx_upstream_check_module模块
wget https://codeload.github.com/yaoweibin/nginx_upstream_check_module/zip/master.zip
unzip master
3.在新下载的ngin-1.26的目录下,把nginx_upstream_check_module补丁打进来,查看本机已安装nginx的编译参数,然后拷贝,然后在后面加上--add-module=../nginx_upstream_check_module-master,由于编译需要依赖库,先安装下面几个库 pcre-devel openssl openssl-devel&#x