nginx_upstream_check_module健康状态监测

概念

	nginx_upstream_check_module 是专门提供负载均衡器内节点的健康检查的外部模块,由淘宝的姚伟斌大神开发,通过它可以用来检测后端 realserver 的健康状态。如果后端 realserver 不可用,则后面的请求就不会转发到该节点上,并持续检查几点的状态。在淘宝自己的 tengine 上是自带了该模块。项目地址:https://github.com/yaoweibin/nginx_upstream_check_module
	参考文档:https://www.cnblogs.com/paul8339/p/8124739.html

示例:基于http健康状态检测

注意:只需要在一个nginx实例中定义一个虚拟主机专门用于显示查看健康状态页面, 对于需要健康状态检查的服务, 只需要在upstream开启即可如下;

#vim /usr/local/nginx/conf.d/www.test.com.conf 
	upstream node {
	    ip_hash;
	    server 192.9.191.31:8001;
	    server 192.9.191.31:8002;
	    server 192.9.191.31:8003;
	    check interval=1000 rise=1 fall=1 timeout=1000 type=http;      #监测间隔时间, 失败到成功的次数, 成功到失败的次数, 超时时间, 类型
	    check_http_send "GET /index.html HTTP/1.0\r\n\r\n";           #get请求, 资源路径
	    check_http_expect_alive http_2xx http_3xx;                    #状态码是2或3开头就是正常
	        }
	server {
	    listen       80;
	     server_name  www.test.com;
	        location / {
	                proxy_pass http://node;
	            }
	      server {
			listen       80;
		     server_name helth_chek.test.com;
			        location /status {                                  //开启状态页面
		            check_status;
		            access_log   off;
		            allow 192.9.191.0/24;
		            deny all;
		            }
	       }

参数详解

	check interval=1000 rise=1 fall=1 timeout=1000 type=http;   
	        interval检测间隔时间,单位毫秒
	        rise请求1次正常的话,标记此realserver的状态为up
	        fall表示请求1次都失败的请求,标记此realserver的状态为down
	        timeout超时时间,单位毫秒
	        type是http类型
	check_http_send "GET /index.html HTTP/1.0\r\n\r\n";
	        可以使用GET方法,POST,HEAD等方法获取资源  /index.html表示请求的资源,
	check_http_expect_alive http_2xx http_3xx;
        状态码是2xx和3xx就认为后端服务是正常的

验证

访问: helth_chek.test.com/status 如下所示
在这里插入图片描述

示例: 基于tcp服务的健康服务检测

#vim /usr/local/nginx/conf.d/www.test.com.conf 
	upstream node {
	    ip_hash;
	    server 192.9.191.31:8001;
	    server 192.9.191.31:8002;
	    server 192.9.191.31:8003;
	    check interval=1000 rise=1 fall=1 timeout=1000 type=tcp;      #监测间隔时间, 失败到成功的次数, 成功到失败的次数, 超时时间, 类型
	        }
	server {
	    listen       80;
	     server_name www.test.com;
	        location / {
	                proxy_pass http://node;
	            }
	       }
	      server {
			listen       80;
		     server_name helth_chek.test.com;
			        location /status {                                  //开启状态页面
		            check_status;
		            access_log   off;
		            allow 192.9.191.0/24;
		            deny all;
		            }
			}

猜你喜欢

转载自blog.csdn.net/weixin_43342753/article/details/89644261