Nginxuptream健康检查-创新互联

upstream hello {
server 100.14.1.3:1201;
server 100.14.1.4:1201;
check interval=3000 rise=2 fall=5 timeout=1000 type=http;
check_http_send "HEAD /product HTTP/1.0\r\n\r\n";
check_http_expect_alive http_2xx http_3xx;
}
server {
listen 80;
server_name hello.youbest.com;
access_log /data/logs/nginx/hello.youbest.com.access.log main;
location / {
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Real-IP $remote_addr;
proxy_pass http://hello;
}
}

潘集网站建设公司创新互联,潘集网站设计制作,有大型网站制作公司丰富经验。已为潘集近千家提供企业网站建设服务。企业网站搭建\成都外贸网站建设公司要多少钱,请找那个售后服务好的潘集做网站的公司定做!

首先要确认服务类型是 http 还是tcp

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

 or

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

 然后确认健康检查的url是否支持 HEAD请求或者GET 请求

 [root@100-14-1-3 ~]# curl -v -XHEAD http://hello.youbest.com/product
  • About to connect() to hello.youbest.com port 80 (#0)
  • Trying 10.24.1.3... connected
  • Connected to hello.youbest.com (100.14.1.3) port 80 (#0)

    HEAD / HTTP/1.1
    User-Agent: curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.27.1 zlib/1.2.3 libidn/1.18 libssh3/1.4.2
    Host: baidu.com
    Accept: /

    < HTTP/1.1 200 OK
    < Date: Tue, 07 Jan 2020 08:29:28 GMT
    < Server: Apache
    < Last-Modified: Tue, 12 Jan 2010 13:48:00 GMT
    < ETag: "51-47cf7e6ee8400"
    < Accept-Ranges: bytes
    < Content-Length: 81
    < Cache-Control: max-age=86400
    < Expires: Wed, 08 Jan 2020 08:29:28 GMT
    < Connection: Keep-Alive
    < Content-Type: text/html
    <

以上返回表示支持 HEAD 请求 nginx 就可以这样做健康检查

check interval=3000 rise=2 fall=5 timeout=1000 type=http;
    check_http_send "HEAD /product HTTP/1.0\r\n\r\n";
    check_http_expect_alive http_2xx http_3xx;

其中 /product 表示服务里面的埋点路径

< HTTP/1.1 200 OK 表示返回200状态

如果HEAD 请求不支持 参考下面baidu.com的GET 请求

[root@vhs100-14-1-3 ~]# curl -v -XGET http://baidu.com

  • About to connect() to baidu.com port 80 (#0)
  • Trying 220.181.38.148... connected
  • Connected to baidu.com (220.181.38.148) port 80 (#0)

    GET / HTTP/1.1
    User-Agent: curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.27.1 zlib/1.2.3 libidn/1.18 libssh3/1.4.2
    Host: baidu.com
    Accept: /

    < HTTP/1.1 200 OK
    < Date: Tue, 07 Jan 2020 08:41:38 GMT
    < Server: Apache
    < Last-Modified: Tue, 12 Jan 2010 13:48:00 GMT
    < ETag: "51-47cf7e6ee8400"
    < Accept-Ranges: bytes
    < Content-Length: 81
    < Cache-Control: max-age=86400
    < Expires: Wed, 08 Jan 2020 08:41:38 GMT
    < Connection: Keep-Alive
    < Content-Type: text/html
    <


  • Connection #0 to host baidu.com left intact
  • Closing connection #0

以上表示支持 GET 请求 nginx 就可以这样做健康检查

check interval=3000 rise=2 fall=5 timeout=1000 type=http;
    check_http_send "GET /product HTTP/1.0\r\n\r\n";
    check_http_expect_alive http_2xx http_3xx;

加了健康检查后,当后端有多台服务器提供服务时
Down掉的机器就不会被代理转发业务过去
从而保障业务的正常处理

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


文章题目:Nginxuptream健康检查-创新互联
标题链接:http://hbruida.cn/article/dsedpo.html