• Nginx替代产品-Tengine健康检测


    1、官网地址

    官网地址:The Tengine Web Server

    文档地址:文档 - The Tengine Web Server 

    健康检测模块:ngx_http_upstream_check_module - The Tengine Web Server

    2、安装

    下载

    wget https://tengine.taobao.org/download/tengine-3.0.0.tar.gz

    解压

    tar zxvf tengine-3.0.0.tar.gz

    安装 

    1. $ ./configure --add-module=modules/ngx_http_upstream_check_module
    2. $ make
    3. $ sudo make install

    Tengine默认将安装在/usr/local/nginx目录。你可以用'--prefix'来指定你想要的安装目录。

    3、健康检测

    3.1 ngx_http_upstream_check_module

            该模块可以为Tengine提供主动式后端服务器健康检查的功能。

            该模块在Tengine-1.4.0版本以前没有默认开启,它可以在配置编译选项的时候开启:./configure --with-http_upstream_check_module。

    3.2 check指令

    该指令可以打开后端服务器的健康检查功能。

    指令后面的参数意义是:

    • interval:向后端发送的健康检查包的间隔。单位:毫秒。
    • fall(fall_count): 如果连续失败次数达到fall_count,服务器就被认为是down。
    • rise(rise_count): 如果连续成功次数达到rise_count,服务器就被认为是up。
    • timeout: 后端健康请求的超时时间。单位:毫秒。
    • default_down: 设定初始时服务器的状态,如果是true,就说明默认是down的,如果是false,就是up的。默认值是true,也就是一开始服务器认为是不可用,要等健康检查包达到一定成功次数以后才会被认为是健康的。
    • type:健康检查包的类型,现在支持以下多种类型
      • tcp:简单的tcp连接,如果连接成功,就说明后端正常。
      • ssl_hello:发送一个初始的SSL hello包并接受服务器的SSL hello包。
      • http:发送HTTP请求,通过后端的回复包的状态来判断后端是否存活。
      • mysql: 向mysql服务器连接,通过接收服务器的greeting包来判断后端是否存活。
      • ajp:向后端发送AJP协议的Cping包,通过接收Cpong包来判断后端是否存活。
    • port: 指定后端服务器的检查端口。你可以指定不同于真实服务的后端服务器的端口,比如后端提供的是443端口的应用,你可以去检查80端口的状态来判断后端健康状况。默认是0,表示跟后端server提供真实服务的端口一样。该选项出现于Tengine-1.4.0。

    3.3 配置

    1. upstream backend {
    2. server 127.0.0.1:8080;
    3. server 127.0.0.1:8081;
    4. check interval=3000 rise=2 fall=5 timeout=1000 type=http;
    5. check_http_send "HEAD / HTTP/1.0\r\n\r\n";
    6. check_http_expect_alive http_2xx http_3xx;
    7. }
    8. server {
    9. ......
    10. location / {
    11. proxy_pass http://backend;
    12. }
    13. # 健康状态页面
    14. location /status {
    15. check_status;
    16. access_log off;
    17. #allow SOME.IP.ADD.RESS;
    18. #deny all;
    19. }
    20. ......
    21. }
    • 检查间隔:3秒。
    • 可用状态:连续两次检测成功。
    • 摘除状态:连续5次检测失败。
    • 健康请求的超时:1秒。
    • 健康检测接口:/。

    3.4 健康状态页面

    http://localhost/status

    • status=down,红色背景:表示节点挂了。
    • Rise counts:检测成功次数。
    • Fall counts :检测失败次数。

    4、故障处理

            以上面的配置为例,有两台服务器,分别为127.0.0.1:8080127.0.0.1:8081,它们组成了一个负载均衡池backend

    • 摘除故障节点:假设127.0.0.1:8080出现故障,连续失败的时间超过了fall指定的次数5秒,NGINX会将127.0.0.1:8080从负载均衡池中摘除,不再将流量分发到该节点。

    • 恢复故障节点:假设127.0.0.1:8080的故障已经修复,连续成功次数达到了rise指定的成功次数2次,NGINX会将127.0.0.1:8080从故障状态中恢复,重新将流量分发到该节点。

    4.1 节点是如何恢复的?

    摘除      

    127.0.0.1:8080从负载均衡池中摘除后的操作。

    • 流量分发:不再将流量分发到该节点。
    • 健康检测:继续检测该节点。

    恢复

    • 恢复条件:127.0.0.1:8080节点连续成功次数达到了rise指定的成功次数2次。
    • 流量分发:恢复流量分发到该节点。
  • 相关阅读:
    java毕业设计菜鸟驿站快递分发系统Mybatis+系统+数据库+调试部署
    Centos的一些基础命令
    转换类的具体使用教程
    Day17-Java进阶-网络编程(IP, 端口, 协议)&TCP和UDP&三次握手和四次挥手
    KNN-K近邻算法(K-Nearest Neighbors)
    【STM32】SPI初步使用 读写FLASH W25Q64
    天眼查最新方式工商信息爬取(公开信息)
    想要保护服务器的安全,使用哪个软件比较好?
    RK开发板的USB连接(Ubuntu)
    java基础 集合(3) Map接口、Collections工具类、集合总结
  • 原文地址:https://blog.csdn.net/xixingzhe2/article/details/132944419