首页 > 系统相关 >nginx负载均衡的健康检查

nginx负载均衡的健康检查

时间:2024-04-12 09:46:11浏览次数:21  
标签:负载 http -- module nginx upstream 健康检查 check

前言:我们使用nginx最常用到的功能恐怕就是负载均衡了,配置负载均衡主要是要使用 upstream 指令了

配置如下所示:
image
那么如果这其中有一台端口不通了,怎么办,nginx会不会自动剔除呢?我们就需要使用nginx的健康检查功能了

一 Nginx(自带)有健康检查模块:ngx_http_upstream_module-被动检查

这个模块是不需要额外安装的,nginx自带的这个模块
常见的配置如下:

默认nginx检查
- weight=number 权重值,默认为1;
- max_conns=number 上游服务器的最大并发连接数;
- fail_timeout=time 服务器不可用的判定时间;
- max_fails=numer 服务器不可用的检查次数;
- backup 备份服务器,仅当其他服务器都不可用时才会启用;
- down 标记服务器长期不可用,离线维护;

举例:server 172.19.149.196:56666 max_fails=10 fail_timeout=60s weight=1;

缺点:Nginx只有当有访问时后,才发起对后端节点探测。如果本次请求中,节点正好出现故障,Nginx依然将请求转交给故障的节点,然后再转交给健康的节点处理。所以不会影响到这次请求的正常进行。但是会影响效率,因为多了一次转发,而且自带模块无法做到预警。

二 nginx_upstream_check_module模块对后端节点做主动健康检查

这个模块是一个第三方模块,需要额外的手动安装

2.1 在已经安装好的nginx如何添加这个模块

在已安装nginx情况下安装nginx模块(不需要make install,只需要make)
image

2.1.1 下载nginx_upstream_check_module模块

 wget https://codeload.github.com/yaoweibin/nginx_upstream_check_module/zip/master
 unzip master.zip
 

2.1.2 为nginx打补丁

如果没有patch,需要先安装patch命令
yum install patch
cd /soft/nginx-1.24.0
patch -p1 < /soft/nginx_upstream_check_module-master/check_1.20.1+.patch 

如下所示:
image

2.1.3 编译并拷贝nginx命令

cd /soft/nginx-1.24.0


./configure --prefix=/usr/local/nginx/ --conf-path=/usr/local/nginx/config/nginx.conf --error-log-path=/usr/local/nginx/logs/error.log --with-http_ssl_module --with-http_stub_status_module --with-http_gzip_static_module --with-http_sub_module --with-http_realip_module --with-http_v2_module --with-stream --add-module=/soft/nginx_upstream_check_module-master

make (不需要执行make install)
 rm -rf /usr/local/nginx/sbin/nginx
 cd /soft/nginx-1.24.0  && cp -r objs/nginx /usr/local/nginx/sbin/

检查模块是否成功安装
image

2.2 全新的nginx添加模块

这个过程跟上面的步骤完全一致,只是多了一个make install的过程

2.3 检测类型

2.3.1 http检测

upstream test{
                server 192.168.1.221:80 weight=5 max_fails=3 fail_timeout=10s;
                server 192.168.1.222:80 weight=5 max_fails=3 fail_timeout=10s;
                check interval=3000 rise=2 fall=5 timeout=1000 type=http;
     }





    location / {
                root   html;
                index  index.html index.htm;
                proxy_set_header X-Real-IP        $remote_addr;
                proxy_set_header X-Forwarded-For  $proxy_add_x_forwarded_for;
                proxy_pass http://test;

          }
    location /status {
                check_status;
                access_log off;
        }


上面配置的意思是,对test这个负载均衡条目中的所有节点,每隔3秒检测一次,请求2次正常则标记 realserver状态为up,如果检测 5 次都失败,则标记 realserver的状态为down,超时时间为1秒。
image

2.3.2 tcp检测

upstream test{
                server 192.168.2.178:56666 weight=5 max_fails=3 fail_timeout=10s;
                server 192.168.2.178:19999 weight=5 max_fails=3 fail_timeout=10s;

              
                check interval=3000 rise=2 fall=5 timeout=1000 type=tcp;
               
     }

server {

    listen 80;
    server_name 192.168.2.41;
    root   /usr/local/nginx/html;
    index  index.html index.htm;
    error_log /usr/local/nginx/logs/testerror.log;
    location /abc {
               # root   /usr/local/nginx/html;
               # index  index.html index.htm;
                proxy_set_header X-Real-IP        $remote_addr;
                proxy_set_header X-Forwarded-For  $proxy_add_x_forwarded_for;
                proxy_pass http://test;
    }

    location /status {
                check_status;
                access_log off;
        }

}

image

2.3.3 指标介绍

index:节点

upstream:负载均衡的名字

name:负载的节点ip信息

status:节点状态,up是可用,down是不可用

rise counts:探测次数

fall counts:满足次数

check type:探测协议是什么,分为http和tcp两种

check post:指定后端服务器中的检查端口,它可以与原始服务器端口不同,默认端口为 0,表示与原始后端服务器相同

标签:负载,http,--,module,nginx,upstream,健康检查,check
From: https://www.cnblogs.com/huningfei/p/18130500

相关文章

  • docker nginx监听80端口 同一 IP 多域名配置方法--多子配置文件包含 https
    下载nginx镜像文件dockerpullnginx:1.24.0宿主机上创建nginx_80目录htmlcertconflogs创建配置文件nginx.conf一、Nginx配置文件nginx.conf操作:在http模块增加(子配置文件的路径和名称):include/etc/nginx/conf.d/*.conf;usernginx;worker_processes1;err......
  • docker -nginx2
    使用docker部署nginx的负载均衡 前言:nginx做负载均衡使用权重轮训方式,1号服务器提供转发服务,2号和3号服务器实际使用。过程:创建文件夹:mkdir-pv/lnmp/nginx/nginx_proxy/{data,conf/conf.d,logs}mkdir-pv/lnmp/nginx/nginx_one/{data,conf/conf.d,logs}mkdir-pv/lnmp/n......
  • NGINX的速率限制(限流)【转】
    NGINX的速率限制(限流)NGINX最有用但经常被误解和配置错误的功能之一是限流。它允许您限制用户在给定时间段内可以发出的HTTP请求量。限流可以用于安全目的,例如减慢暴力破解密码的攻击。它可以通过限制请求速率为真实用户的典型值来帮助防御分布式拒绝服务(DDoS)攻击,并且(通过记录日......
  • Windows机器部署nginx并设置开机自启
    1.Windows安装nginx服务(1)下载nginx安装包      http://nginx.org/download/nginx-1.22.1.zip(3)解压安装                #进入目录修改配置文件(修改配置文件此处省略,根据自己的需求进行修改)     2.Windows设置nginx开机......
  • 网站使用nginx部署ssl证书开启https(开启http2)
    目录网站部署ssl证书就是将网站的http协议转换为更加安全的https协议1、腾讯云申请ssl证书2、下载证书3、xftp将下载的证书上传到服务器指定的目录下4、nginx配置对应域名的443端口,开启ssl5、nginx监听对应域名的80端口返回301强制重定向到该域名下的ssl443端口测试HTTP......
  • 关于配置单机k8s 创建nginx时出现pod 0/1一直pending的情况
    这个事情困扰了我一整天,创建nginx时出现pod0/1pending,一开始是以为flannel网卡出现了问题,一直去选择用calico网卡,但是calico这个玩意配置的路上全是坑,所以一直配不出calico,疯狂重启,疯狂报错,发现flannel网卡没有问题。于是出搜索是怎么回事,删除了nginx重新创建了nginx(这个......
  • Docker安装Nginx容器
    安装Nginx#查找官方镜像dockersearchnginx#下载最新版Nginx镜像(其实此命令就等同于:dockerpullnginx:latest)dockerpullnginx#下载指定版本的Nginx镜像(xxx指具体版本号)dockerpullnginx:xxx#检查当前所有Docker下载的镜像dockerimages创建Nginx配置......
  • docker -nginx
                (版本号)dockerpullnginx:1.17.8dockerrun--namenginx-p9091:80-dnginx:1.17.8mkdir-p/data/nginx/{conf,conf.d,html,logs}##拷贝配置文件dockercp1022c6f181b9:/etc/nginx/nginx.conf/data/nginx/conf/nginx.conf##映射......
  • Nginx模块安装配置
    Nginx模块安装配置一、查看nginx安装的模块要查看Nginx安装了哪些模块,可以使用Nginx的二进制文件运行nginx-V命令。这将输出Nginx版本和配置参数,包括编译时包含的模块。在命令行中运行以下命令:nginx-V查看输出中的--with-参数,这些参数后面通常会跟着模块名称,比如--w......
  • freenginx 的发布速度明显加快了
    freenginx与nginx的事情大家可能都听说过,目前看freenginx迭代速度是明显加快了,目前已经发布到1.26.0了有不少bug的修复值得试用下,以下是目前最新的一些发布信息说明目前nginx的分支是越来越多了,不少项目都是从官方人员分裂出来的,angie同样也是一个nginx分支参考资料h......