searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

Nginx 编译安装 ngx_http_upstream_check_module 模块

2024-11-15 09:17:58
390
0

ngx_http_upstream_check_module 是一个 Nginx 模块,用于主动检查后端服务器的健康状态。通过这个模块,可以实现对后端服务器的健康检查,确保只有健康的服务器接收请求,从而提高系统的可靠性和性能。

1. 编译和安装

1. 下载nginx源码
wget http://nginx.org/download/nginx-1.22.1.tar.gz
tar -zxvf nginx-1.22.1.tar.gz

2. 下载 ngx_http_upstream_check_module 模块
git clone https://github.com/yaoweibin/nginx_upstream_check_module.git

3. 打补丁
nginx并不支持直接使用nginx_upstream_check_module模块,因此在使用之前,需要先打补丁。
cd nginx-1.22.1
patch -p1 < /path/to/ngx_http_upstream_check_module/check_1.20.1+.patch

4. 配置nginx
./configure --add-module=/path/to/nginx_upstream_check_module

5. 编译安装
make
make install

2. 配置示例

在 Nginx 配置文件中(通常位于 /usr/local/nginx/conf/nginx.conf),添加健康检查的配置(upstream配置块),如下所示:

http {
    upstream backend {
        server 192.168.1.1:8080;
        server 192.168.1.2:8080;

        check interval=2000 rise=2 fall=4 timeout=3000 type=http;
        check_http_send "GET /health_check HTTP/1.0\r\n\r\n";
        check_http_expect_alive http_2xx http_3xx;
    }

    server {
        listen 80;
        server_name example.com;

        location / {
            proxy_pass http://backend;
        }
    }
}

配置说明:

check:

  • interval: 向后端发送的健康检查包的间隔。
  • rise:如果连续成功次数达到rise_count,服务器就被认为是up。
  • fall:如果连续失败次数达到fall_count,服务器就被认为是down。
  • timeout:后端健康探测请求的超时时间。
  • type:健康检查包的类型,现在支持以下多种类型: tcp/ssl_hello/http/fastcgi/mysql/ajp,对于后端ATS探测来说,需要配置为http。
  • default_down:设定初始时服务器的状态,如果是true,就说明默认是down的,如果是false,就是up的。默认值是true,也就是一开始服务器认为是不可用,要等健康检查包达到一定成功次数以后才会被认为是健康的。
  • 缺省配置:如果没有配置参数,默认值是:`interval=30000 fall=5 rise=2 timeout=1000 default_down=true type=tcp`

check_http_send:http健康检查包发送的请求内容
check_http_expect_alive:该指令指定HTTP回复的成功状态,默认认为2XX和3XX的状态是健康的。

3. 测试健康检查

(1)启动nginx服务:/usr/local/nginx/sbin/nginx

(2)关停/启动后端服务(对应上述配置中的192.168.1.1:8080和192.168.1.2:8080),观察nginx日志,测试健康检查是否正常工作。

0条评论
0 / 1000
m****n
4文章数
0粉丝数
m****n
4 文章 | 0 粉丝
原创

Nginx 编译安装 ngx_http_upstream_check_module 模块

2024-11-15 09:17:58
390
0

ngx_http_upstream_check_module 是一个 Nginx 模块,用于主动检查后端服务器的健康状态。通过这个模块,可以实现对后端服务器的健康检查,确保只有健康的服务器接收请求,从而提高系统的可靠性和性能。

1. 编译和安装

1. 下载nginx源码
wget http://nginx.org/download/nginx-1.22.1.tar.gz
tar -zxvf nginx-1.22.1.tar.gz

2. 下载 ngx_http_upstream_check_module 模块
git clone https://github.com/yaoweibin/nginx_upstream_check_module.git

3. 打补丁
nginx并不支持直接使用nginx_upstream_check_module模块,因此在使用之前,需要先打补丁。
cd nginx-1.22.1
patch -p1 < /path/to/ngx_http_upstream_check_module/check_1.20.1+.patch

4. 配置nginx
./configure --add-module=/path/to/nginx_upstream_check_module

5. 编译安装
make
make install

2. 配置示例

在 Nginx 配置文件中(通常位于 /usr/local/nginx/conf/nginx.conf),添加健康检查的配置(upstream配置块),如下所示:

http {
    upstream backend {
        server 192.168.1.1:8080;
        server 192.168.1.2:8080;

        check interval=2000 rise=2 fall=4 timeout=3000 type=http;
        check_http_send "GET /health_check HTTP/1.0\r\n\r\n";
        check_http_expect_alive http_2xx http_3xx;
    }

    server {
        listen 80;
        server_name example.com;

        location / {
            proxy_pass http://backend;
        }
    }
}

配置说明:

check:

  • interval: 向后端发送的健康检查包的间隔。
  • rise:如果连续成功次数达到rise_count,服务器就被认为是up。
  • fall:如果连续失败次数达到fall_count,服务器就被认为是down。
  • timeout:后端健康探测请求的超时时间。
  • type:健康检查包的类型,现在支持以下多种类型: tcp/ssl_hello/http/fastcgi/mysql/ajp,对于后端ATS探测来说,需要配置为http。
  • default_down:设定初始时服务器的状态,如果是true,就说明默认是down的,如果是false,就是up的。默认值是true,也就是一开始服务器认为是不可用,要等健康检查包达到一定成功次数以后才会被认为是健康的。
  • 缺省配置:如果没有配置参数,默认值是:`interval=30000 fall=5 rise=2 timeout=1000 default_down=true type=tcp`

check_http_send:http健康检查包发送的请求内容
check_http_expect_alive:该指令指定HTTP回复的成功状态,默认认为2XX和3XX的状态是健康的。

3. 测试健康检查

(1)启动nginx服务:/usr/local/nginx/sbin/nginx

(2)关停/启动后端服务(对应上述配置中的192.168.1.1:8080和192.168.1.2:8080),观察nginx日志,测试健康检查是否正常工作。

文章来自个人专栏
文章 | 订阅
0条评论
0 / 1000
请输入你的评论
1
1