nginx增加健康检查接口的实现示例

 更新时间:2024年02月20日 11:25:54   作者:Dxy1239310216  
Nginx作为一款强大的反向代理服务和负载均衡服务,而健康检查是为了保障nginx能够准确的转发到后端的可用服务,本文主要介绍了nginx增加健康检查接口的实现示例,感兴趣的可以了解一下

在docker中部署的nginx或者在nginx部署的nginx一般是需要一个健康检查接口的

这样的话,就可以确定容器当前的状态是否是健康的

那么,如何给nginx增加一个健康检查的接口呢?

接下来呢,我们就演示一个在nginx中如何增加健康检查的接口

1、打开nginx的配置文件(nginx.conf)

2、增加如下的location

        location /healthcheck {
            default_type text/plain;

          return 200 "ok";
        }

参数说明:

200是请求这个url返回的状态码 OK是返回的数据
default_type text/plain;表示是纯文本显示,浏览器访问不会进行下载!

3、检查配置文件、重启nginx服务

nginx -t && nginx -s reload

4、浏览器访问

OK,这样就完成了,对一个nginx服务,增加健康检查接口的能力。

Nginx健康检查分为被动探测与主动探测两种,

Nginx被动健康检查:

  • 通过自带健康检查模块ngx_http_upstream_module实现
  • 当收到访问时才对后端发起探测
  • 请求根据转发规则首次可能落到不可用节点,如多个节点故障则可能出现转发多台后才将请求转到正常的服务,在高并发的时候影响转发效率

max_fails:在配置的fail_timeout期间,最大的连接错误数,默认配置为1,如配置为0则表示不启用探测,不管后端服务是否异常仍然会转发,单位次数

fail_timeout:服务被认为不可用的的时间,单位为s

如下配置:在3s内中如果有1次连接失败,则表示该节点不可用,将该节点下线3s后才会再次探测

upstream personal_1 {
       	server ip:port max_fails=1 fail_timeout=3;
      		server ip:port max_fails=1 fail_timeout=3;
}
    	server {
        	listen      80 ;
        	server_name _;
       	location ~ / {
               	proxy_pass http:// personal_1;
        	}
	}

模拟每秒1次请求,可以发现192.168.125.133服务在17:42探测异常,此时同步转发至IP1服务,同时17:43-17:46将IP2剔除下线,17:47开始重新探测。

Nginx主动健康检查:

  • 通过nginx_upstream_check_module模块实现,官方nginx暂未加载该模块,需要自行编译
  • 主动对后端服务发起探测,如后端服务不可用,则不转发
  • 后端服务恢复后,则主动添加进负载

主动探测关键参数interval、rise、fall、timeout、type、check_http_send、check_http_expect_alive:

interval:健康检查时间,单位ms

rise:检查成功次数,达到该值则认为服务正常,加入负载

fall:检查失败次数,达到该值则认为服务异常,剔除下线

timeout:检查超时时间,单位ms

type:检查类型,支持tcp/http等多种协议类型

check_http_send:http探测发送的请求,支持自定义接口,默认:"GET / HTTP/1.0\r\n\r\n"

check_http_expect_alive:http探测状态码,除了该配置上的其他状态码均认为服务不可用

如下配置:每1s发起主动探测,如出现1次失败,则认为该节点不可用,剔除下线,检验返回码2xx/3xx则认为服务可用。

upstream personal {
               server IP1;
               server IP2;

               check interval=1000 rise=1 fall=1 timeout=1000 type=http default_down=false;
               check_http_send "GET / HTTP/1.0\r\n\r\n";
               check_http_expect_alive http_2xx http_3xx;
        }

        server {
            listen      80 ;
            server_name _;
            location ~ / {
                proxy_pass http:// personal;
            }
        }

如下每秒探测1次,返回非2xx或3xx,服务异常,剔除下线,多次均未向该服务转发。

到此这篇关于nginx增加健康检查接口的实现示例的文章就介绍到这了,更多相关nginx增加健康检查接口内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家! 

相关文章

  • nginx实现反向代理出现502的问题解决

    nginx实现反向代理出现502的问题解决

    本文主要介绍了nginx实现反向代理出现502的问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-08-08
  • 解析nginx server_name的具体使用

    解析nginx server_name的具体使用

    nginx server_name对于正确配置虚拟主机非常重要,本文主要介绍了解析nginx server_name的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-08-08
  • Linux下用Nginx作Perl程序服务器及其中Perl模块的配置

    Linux下用Nginx作Perl程序服务器及其中Perl模块的配置

    这篇文章主要介绍了Linux下用Nginx作Perl程序服务器及其中Perl模块的配置,文中使用到了FastCGI中间件进行连接,需要的朋友可以参考下
    2016-02-02
  • PHP开发框架kohana3.3.1在nginx下的伪静态设置例子

    PHP开发框架kohana3.3.1在nginx下的伪静态设置例子

    这篇文章主要介绍了PHP开发框架kohana3.3.1在nginx下的伪静态设置例子,kohana曾经是codeigniter框架的衍生版,后来发展成另一个独立的PHP5开发框架,需要的朋友可以参考下
    2014-07-07
  • Nginx 实现会话保持的方式配置小结

    Nginx 实现会话保持的方式配置小结

    本文主要介绍了在NGINX中实现会话保持的几种常见方法,包括IP哈希、基于Cookie的会话保持、基于URL参数的会话保持及使用第三方的nginx-sticky-module模块,感兴趣的可以了解一下
    2024-11-11
  • nginx控制连接数及访问速率的实现

    nginx控制连接数及访问速率的实现

    本文主要介绍了Nginx中ngx_http_limit_conn_module和ngx_http_limit_req_module模块的使用,用于控制连接数和请求速率,具有一定的参考价值,感兴趣的可以了解一下
    2024-12-12
  • 如何使用nginx充当mysql的负载均衡器

    如何使用nginx充当mysql的负载均衡器

    这篇文章主要介绍了使用nginx充当mysql的负载均衡器过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-06-06
  • kubernetes启用PHP+Nginx网页环境教程

    kubernetes启用PHP+Nginx网页环境教程

    这篇文章主要介绍了kubernetes启用PHP+Nginx网页环境教程,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-10-10
  • 通过Nginx解决网络隔离实践记录详解

    通过Nginx解决网络隔离实践记录详解

    这篇文章主要介绍了通过Nginx解决网络隔离实践记录详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-05-05
  • 详解Nginx服务器中map模块的配置与使用

    详解Nginx服务器中map模块的配置与使用

    这篇文章主要介绍了Nginx服务器中map模块的配置与使用,文中同时给出了ngx_http_map_module模块的map命令用于制作服务器限速白名单的示例,需要的朋友可以参考下
    2016-01-01

最新评论