nginx安装第三方模块nginx_upstream_check_module 一:nginx后端健康检查 二:nginx被动检查 三:nginx主动检查 3.1 安装nginx_upstream_check_module 3.2 模块配置 四:docker中安装 一:nginx后端健康检查 nginx自带健康检查的缺陷:
Nginx只有当有访问时后,才发起对后端节点探测。 如果本次请求中,节点正好出现故障,Nginx依然将请求转交给故障的节点,然后再转交给健康的节点处理。所以不会影响到这次请求的正常进行。但是会影响效率,因为多了一次转发 自带模块无法做到预警 被动健康检查 使用第三访模块nginx_upstream_check_module:
区别于nginx自带的非主动式的心跳检测,淘宝开发的tengine自带了一个提供主动式后端服务器心跳检测模块 若健康检查包类型为http,在开启健康检查功能后,nginx会根据设置的间隔向指定的后端服务器端口发送健康检查包,并根据期望的HTTP回复状态码来判断服务是否健康。 后端真实节点不可用,则请求不会转发到故障节点 故障节点恢复后,请求正常转发 二:nginx被动检查 Nginx自带有健康检查模块:ngx_http_upstream_module,可以做到基本的健康检查,配置如下:
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;
}
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 缺点: Nginx只有当有访问时后,才发起对后端节点探测。如果本次请求中,节点正好出现故障,Nginx依然将请求转交给故障的节点,然后再转交给健康的节点处理。所以不会影响到这次请求的正常进行。但是会影响效率,因为多了一次转发,而且自带模块无法做到预警。
三:nginx主动检查 主动地健康检查,nignx定时主动地去ping后端的服务列表,当发现某服务出现异常时,把该服务从健康列表中移除,当发现某服务恢复时,又能够将该服务加回健康列表中。淘宝有一个开源的实现nginx_upstream_check_module模块
github地址:https://github.com/yaoweibin/nginx_upstream_check_module taobao官网:http://tengine.taobao.org/document_cn/http_upstream_check_cn.html 1 2 3.1 安装nginx_upstream_check_module
下载
wget https://codeload.github.com/yaoweibin/nginx_upstream_check_module/zip/master unzip master 1 2 3 如果是全新编译安装nginx,直接在nginx编译参数后面加上该模块正常安装即可 本次测试是服务器上已经存在编译安装的nginx,版本为:nginx/1.12.0 上传nginx-1.12.0.tar.gz源码包,解压包。
ubuntu@singapore:~/tools$ ll drwxr-xr-x 9 ubuntu ubuntu 4096 Aug 8 01:22 nginx-1.12.0/ -rw-r--r-- 1 ubuntu ubuntu 980831 Mar 25 01:37 nginx-1.12.0.tar.gz drwxrwxr-x 6 ubuntu ubuntu 4096 Aug 6 17:39 nginx_upstream_check_module-master/ 1 2 3 4 进入nginx源码目录,进行打该模块的补丁(这一步千万不能遗漏)
cd nginx-1.12.0/ patch -p1 < ../nginx_upstream_check_module-master
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。