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\r\nHost: api.cargolist.xihuishou.bsdd.me\r\n\r\n",
           -- 請求間隔時間,默認是 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    創建該數目的輕量線程來並發發送健康檢測請求的個數

上面的這些配置項,將作為一個上下文保存下來,在不同的階段被反復調用

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM