前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >nginx负载均衡的健康检查

nginx负载均衡的健康检查

作者头像
dys
发布2018-04-02 17:03:04
1.4K0
发布2018-04-02 17:03:04
举报
文章被收录于专栏:性能与架构

如果服务器组内有机器出现问题,nginx就不再向其转发请求了,那么nginx如何知道某台服务器是否能正常?

这就需要nginx对每台服务器进行健康检查

检查的方式有两种

(1)被动检查

向服务器转发请求失败,或者没有接收到响应,nginx就认为其不可用,会停止一段时间不再向其转发

默认规则是,如果失败了一次,就停止转发10秒钟

失败次数和停发时间是可以设定的,例如

代码语言:javascript
复制
upstream backend {                
    server backend1.example.com;
    server backend2.example.com max_fails=3 fail_timeout=30s;
    server backend3.example.com max_fails=2;
}

max_fails 允许失败的次数,超出后就认为不可用

fail_timeout max_fails次失败后,暂停的时间

(2)主动检查

定期向每台服务器发送检查请求,不必等到真实转发才判断

使用 health_check 指令实现,例如

代码语言:javascript
复制
    upstream backend {
zone backend 64k;
        server backend1.example.com;
    ......
    }
    server {
        location / {
            proxy_pass http://backend;
health_check;
        }
    }

注意,使用health_check的同时,也要使用zone指令

这个例子中使用了默认的健康检查规则,nginx每5秒向每台服务器发送请求"/",如果沟通失败、超时、返回状态码非2xx/3xx,就判断其不可用

health_check自定义配置

1)指定时间和次数

例如:

代码语言:javascript
复制
health_check interval=10 fails=3 passes=2;

interval 每10秒检查一次

fails 连续3次失败才认为服务器不可用

passes 连续2次成功请求才认为服务器已经可用

2)指定检查地址

代码语言:javascript
复制
health_check uri=/some/path;

默认检查的地址是"/",这里改为/some/path

例如server中配置的主机名为 http://backend1.example.com

检查的地址为 http://backend1.example.com/some/path

3)指定响应信息条件

代码语言:javascript
复制
match server_ok {
    status 200-399;
    header Content-Type = text/html;
    body !~ "maintenance mode";
}
http {
    match server_ok {
        status 200-399;
    header Content-Type = text/html;
        body !~ "maintenance mode";
    }
    server {
        location / {
        ......
            health_check match=server_ok;
        }
    }
}

match指令可以让nginx检查响应的状态、头信息、响应体内信息

例如此例中指定 响应状态必须为200-399,Content-Type必须为text/html,响应体信息中不能含有"maintenance mode"

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2015-09-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 JAVA高性能架构 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档