zoukankan      html  css  js  c++  java
  • Openresty 健康检查

        ## 指定共享内存
        lua_shared_dict healthcheck 1m;
    
        ## 在worker初始化过程中,启动定时器,进行后端结点的检查
        init_worker_by_lua_block {
           local hc = require "resty.upstream.healthcheck"
           local ok, err = hc.spawn_checker {
               -- shm 表示共享内存区的名称,
               shm = "healthcheck",
               -- type 表示健康检查的类型, HTTP or TCP (目前只支持http)
               type = "http",    
               -- upstream 指定 upstream 配置的名称   
               upstream = "api.cargolist.xihuishou.bsdd.me",
               -- 如果是http类型,指定健康检查发送的请求的URL
               http_req = "GET /health.txt HTTP/1.0
    Host: api.cargolist.xihuishou.bsdd.me
    
    ",
               -- 请求间隔时间,默认是 1 秒。最小值为 2毫秒
               interval = 2000,
               -- 请求的超时时间。 默认值为:1000 毫秒
               timeout = 5000,
               -- 失败多少次后,将节点标记为down。 默认值为 5
               fall = 3, 
               -- 成功多少次后,将节点标记为up。默认值为 2
               rise = 2,
               -- 返回的http状态码,表示应用正常
               valid_statuses = {200, 302},
               -- 并发度, 默认值为 1
               concurrency = 1,
           }
         
           if not ok then
               ngx.log(ngx.ERR, "=======> failed to spawn health checker: ", err)
               return
           end
        }
    
    
      # 配置监控检查访问页面
        location /server/status {
          access_log off;
          default_type text/plain;
          content_by_lua_block {
              local hc = require "resty.upstream.healthcheck"
              ngx.say("Nginx Worker PID: ", ngx.worker.pid())
              ngx.print(hc.status_page())
          }
        }

    配置参数解释
    hc.spawn_checker(options)
    options中包含如下选项,在调用该接口时作为参数传递进来
    type        必须存在并且是http,目前只支持http
    http_req  必须存在,健康探测的http请求raw字符串
    timeout    默认1000,单位ms
    interval    健康探测的时间间隔,单位ms, 默认1000,推荐2000
    valid_status   合法响应码的表,比如{200, 302}
    concurrency   并发数,默认1
    fall            默认5,对UP的设备,连续fall次失败,认定为DOWN
    rise           默认2,对DOWN的设备,连续rise次成功,认定为UP
    shm       必须配置,用于健康检查的共享内存名称,通过ngx.shared[shm]得到共享内存
    upstream   指定要做健康检查的upstream组名,必须存在
    version  默认0
    primary_peers  主组
    backup_peers  备组
    statuses  存放合法响应码的数组,来自ipairs()得到的valid_status配置项
    根据options会构造一个ctx表来存放所有的配置数据,并会作为定时器ngx.timer.at()中的第三个参数
    ctx的内容如下
    upstream   指定的upstream组名
    primary_peers 主组
    backup_peers  备组
    http_req  健康检查的raw http请求
    timeout  超时时间,单位s,注意不是ms
    interval  健康检查的间隔,单位s,注意不是ms
    dict  存放统计数据的共享内存
    fall   认为DOWN之前的连续失败次数,默认5
    rise  认为UP之前的连续成功次数,默认2
    statuses  认为正常的http状态码的表{200,302}
    version    0 每次执行定时任务时的版本号,有peer状态改变,版本号加1
    concurrency    创建该数目的轻量线程来并发发送健康检测请求的个数

    上面的这些配置项,将作为一个上下文保存下来,在不同的阶段被反复调用

     
  • 相关阅读:
    【解题报告】NOIP2018
    【解题报告】NOIP2013
    【解题报告】NOIP2014
    【解题报告】NOIP2015
    【解题报告】NOIP2016
    【解题报告】CSPS2020
    【全程NOIP计划】初级数据结构1
    如何通过一个结构体成员变量的地址找到该结构体的首地址?[备忘]
    IGT笔试题,正整数N等于M个不同的正整数之和的问题
    Mac下Perl脚本如何运行
  • 原文地址:https://www.cnblogs.com/eedc/p/11804186.html
Copyright © 2011-2022 走看看