• 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    创建该数目的轻量线程来并发发送健康检测请求的个数

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

     
  • 相关阅读:
    2020春-C高级--第二周--视频内容大纲
    2020春-C高级--第一周视频内容大纲
    2020春-C高级-预习作业1
    2019年上-C语言程序设计-第1次blog作业
    2019年上-C语言程序设计课程内容
    2018上C语言程序设计(初级)作业- 第2次作业
    2018下C语言基础课第1次作业
    2018上C语言程序设计(高级)作业- 第4次作业成绩及总结
    2020软件工程作业00--问题清单
    2020软件工程个人作业06——软件工程实践总结作业
  • 原文地址:https://www.cnblogs.com/eedc/p/11804186.html
Copyright © 2020-2023  润新知