打工人在装软件——NGINX插件淘宝nginx_upstream_check_module安装

nginx淘宝nginx_upstream_check_module安装



前言

之前已经进行常规的nginx安装,但是nginx是不能把这台realserver剔除upstream的,所以可以安装nginx_upstream_check_module。nginx_upstream_check_module是淘宝提供的主动式后端服务器健康检查的功能的nginx插件,能够检测后⽅realserver的健康状态,不会把请求转到不可以用的服务器上面。

我是基于上一期的nginx安装后继续安装nginx_upstream_check_module插件,如果需要可以查看上一期内容链接如下
NGINX安装


提示:以下是本篇文章正文内容,下面案例可供参考

一、下载

#插件下载
wget http://github.com/yaoweibin/nginx_upstream_check_module

二、安装

#安装解压zip软件
unzip nginx_upstream_check_module-master
#进入nginx压缩包解压后的文件中(解压后未编译的目录)
cd /usr/local/nginx/nginx-1.18.0
#打补丁(注意版本nginx版本和插件版本 )
#patch -p1 < nginx插件目录
patch -p1 < /usr/local/nginx/nginx_upstream_check_module/check_1.20.1+.patch
#编译
./configure --add-module=/usr/local/nginx/nginx_upstream_check_module

注意版本nginx版本和插件版本对应关系如下
如果使用的是nginx-1.2.1或nginx-1.3.0,Nginx的上游轮询模块发生了很大变化。您应该使用名为’check_1.2.1.patch’的补丁。

如果您使用的是nginx-1.2.2+ 或 nginx-1.3.1+,它添加了上游最少连接模块。您需要使用名为’check_1.2.2+.patch’的补丁。

如果您使用的是nginx-1.2.6+ 或 nginx-1.3.9+,它调整了轮询模块。您需要使用名为’check_1.2.6+.patch’的补丁。

如果您使用的是nginx-1.5.12+,您应该使用名为’check_1.5.12+.patch’的补丁。

如果您使用的是nginx-1.7.2+,您应该使用名为’check_1.7.2+.patch’的补丁。

三、配置nginx.conf

#upstream inner下面配置
upstream inner{
   ----------------------------修改-------------------------------
        server 127.0.0.1:8080;
        server 127.0.0.1:8081;
   ---------------------------------------------------------------
        ##配置健康检测
		#check interval=milliseconds [fall=count] [rise=count]		[timeout=milliseconds] [default_down=true|false][type=tcp|http|ssl_hello|mysql|ajp|fastcgi]
		#interval:必要参数,检查请求的间隔时间。
		#fall:当检查失败次数超过了fall,这个服务节点就变成down状态。
		#rise:当检查成功的次数超过了rise,这个服务节点又会变成up状态。
		#timeout:请求超时时间,超过等待时间后,这次检查就算失败。
		#default_down:后端服务器的初始状态。默认情况下,检查功能在Nginx启动的时候将会把所有后端节点的状态置为down,检查成功后,在置为up。
		#type:这是检查通信的协议类型,默认为http。以上类型是检查功能所支持的所有协议类型。
        check interval=2000 rise=3 fall=1 timeout=2000 type=http;
        #设置检查的服务可以自定以
        check_http_send "HEAD /health/check/status HTTP/1.0\r\n\r\n";
        #check_http_send设置,这个设置描述了检查模块在每次检查时,向后端节点发送什么样的信息
        check_http_expect_alive http_2xx http_3xx;
    }

	#添加一个server
    server {
        listen       81;
        server_name  localhost;

        location /status {
            check_status;
            access_log off;
        }
    }

以下是一个完整nginx.conf

#user  nobody;
worker_processes  1;
#错误日志地址
error_log  /var/log/nginx/error.log warn;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;
#pid        logs/nginx.pid;

events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

   # access_log  /var/log/nginx/access.log main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;
    upstream inner{
        server 127.0.0.1:8090;
        server 127.0.0.1:8091;
        ##配置健康检测
#check interval=milliseconds [fall=count] [rise=count][timeout=milliseconds] [default_down=true|false][type=tcp|http|ssl_hello|mysql|ajp|fastcgi]
#interval:必要参数,检查请求的间隔时间。
#fall:当检查失败次数超过了fall,这个服务节点就变成down状态。
#rise:当检查成功的次数超过了rise,这个服务节点又会变成up状态。
#timeout:请求超时时间,超过等待时间后,这次检查就算失败。
#default_down:后端服务器的初始状态。默认情况下,检查功能在Nginx启动的时候将会把所有后端节点的状态置为down,检查成功后,在置为up。
#type:这是检查通信的协议类型,默认为http。以上类型是检查功能所支持的所有协议类型。
        check interval=2000 rise=3 fall=1 timeout=2000 type=http;
        #设置检查的服务
        check_http_send "HEAD /health/check/status HTTP/1.0\r\n\r\n";
        #check_http_send设置,这个设置描述了检查模块在每次检查时,向后端节点发送什么样的信息
        check_http_expect_alive http_2xx http_3xx;
    }
    server {
        listen       80;
        server_name  localhost;
        #配置服务地址
        access_log  /var/log/nginx/access.log;
        location / {
            proxy_pass http://inner;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
    #开启81端口配置查看状态地址ip:81/status
    server {
        listen       81;
        server_name  localhost;

        location /status {
            check_status;
            access_log off;
        }
    }

}

四、重启nginx

##重新加载配置
systemctl reload nginx.service

可以通过页面localhost:81/status查看。
如果需要对nginx服务进行监控的可以调用一下链接获取对应格式的数据:
localhost:81/status?format=html
localhost:81/status?format=csv
localhost:81/status?format=json


总结

本文列举了作者部署添加nginx_upstream_check_module插件的一个全过程。
如果需要更详细的插件版本说明可以查看git仓库的md,高版本的nginx大部分可以直接使用check_1.20.1+.patch。
如果觉得找组件太麻烦或者需要详细的文档,也可以尝试使用淘宝的Tengine来替代nginx(链接如下:The Tengine Web Server)。

如果有问题或者建议,欢迎在评论区交流!!!

  • 10
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值