<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Lua-Resty-Checkups基于Lua的upstream管理和健康檢查模塊

          聯(lián)合創(chuàng)作 · 2023-10-01 15:51

          Lua-Resty-Checkups是一個基于lua的upstream管理和健康檢查模塊,由又拍云開源。

          特點(diǎn):

          • 支持周期性upstream服務(wù)管理操作

          • 支持管理和健康檢查

          • 支持upstream動態(tài)更新

          • 有利于加權(quán)輪詢或哈希平衡

          • 支持 Nginx C upstream同步操作

          • 可使用級別和鍵值實(shí)現(xiàn)集群

          使用簡介:

          -- config.lua
          _M = {}
          _M.global = {
              checkup_timer_interval = 15,
              checkup_shd_sync_enable = true,
              shd_config_timer_interval = 1,
          }
          _M.ups1 = {
              cluster = {
                  {
                      servers = {
                          {host="127.0.0.1", port=4444, weight=10, max_fails=3, fail_timeout=10},
                      }
                  },
              },
          }
          lua_package_path "/path/to/lua-resty-checkups/lib/checkups/?.lua;/path/to/config.lua;;";
          lua_shared_dict state 10m;
          lua_shared_dict mutex 1m;
          lua_shared_dict locks 1m;
          lua_shared_dict config 10m;
          server {
              listen 12350;
              return 200 12350;
          }
          server {
              listen 12351;
              return 200 12351;
          }
          init_worker_by_lua_block {
              local config = require "config"
              local checkups = require "resty.checkups.api"
              checkups.prepare_checker(config)
              checkups.create_checker()
          }
          server {
              location = /12350 {
                  proxy_pass http://127.0.0.1:12350/;
              }
              location = /12351 {
                  proxy_pass http://127.0.0.1:12351/;
              }
              location = /t {
                  content_by_lua_block {
                      local checkups = require "resty.checkups.api"
                      local callback = function(host, port)
                          local res = ngx.location.capture("/" .. port)
                          ngx.say(res.body)
                          return 1
                      end
                      local ok, err
                      -- connect to a dead server, no upstream available
                      ok, err = checkups.ready_ok("ups1", callback)
                      if err then ngx.say(err) end
                      -- add server to ups1
                      ok, err = checkups.update_upstream("ups1", {
                              {
                                  servers = {
                                      {host="127.0.0.1", port=12350, weight=10, max_fails=3, fail_timeout=10},
                                  }
                              },
                          })
                      if err then ngx.say(err) end
                      ngx.sleep(1)
                      ok, err = checkups.ready_ok("ups1", callback)
                      if err then ngx.say(err) end
                      ok, err = checkups.ready_ok("ups1", callback)
                      if err then ngx.say(err) end
                      -- add server to new upstream
                      ok, err = checkups.update_upstream("ups2", {
                              {
                                  servers = {
                                      {host="127.0.0.1", port=12351},
                                  }
                              },
                          })
                      if err then ngx.say(err) end
                      ngx.sleep(1)
                      ok, err = checkups.ready_ok("ups2", callback)
                      if err then ngx.say(err) end
                      -- add server to ups2, reset rr state
                      ok, err = checkups.update_upstream("ups2", {
                              {
                                  servers = {
                                      {host="127.0.0.1", port=12350, weight=10, max_fails=3, fail_timeout=10},
                                      {host="127.0.0.1", port=12351, weight=10, max_fails=3, fail_timeout=10},
                                  }
                              },
                          })
                      if err then ngx.say(err) end
                      ngx.sleep(1)
                      ok, err = checkups.ready_ok("ups2", callback)
                      if err then ngx.say(err) end
                      ok, err = checkups.ready_ok("ups2", callback)
                      if err then ngx.say(err) end
              }
          }

          Lua 配置示例:

          _M = {}
          -- Here is the global part
          _M.global = {
              checkup_timer_interval = 15,
              checkup_timer_overtime = 60,
              default_heartbeat_enable = true,
              checkup_shd_sync_enable = true,
              shd_config_timer_interval = 1,
          }
          -- The rests parts are cluster configurations
          _M.redis = {
              enable = true,
              typ = "redis",
              timeout = 2,
              read_timeout = 15,
              send_timeout = 15,
              protected = true,
              cluster = {
                  {   -- level 1
                      try = 2,
                      servers = {
                          { host = "192.168.0.1", port = 6379, weight=10, max_fails=3, fail_timeout=10 },
                          { host = "192.168.0.2", port = 6379, weight=10, max_fails=3, fail_timeout=10 },
                      }
                  },
                  {   -- level 2
                      servers = {
                          { host = "192.168.0.3", port = 6379, weight=10, max_fails=3, fail_timeout=10 },
                      }
                  },
              },
          }
          _M.api = {
              enable = false,
              typ = "http",
              http_opts = {
                  query = "GET /status HTTP/1.1\r\nHost: localhost\r\n\r\n",
                  statuses = {
                      [500] = false,
                      [502] = false,
                      [503] = false,
                      [504] = false,
                  },
              },
              mode = "hash",
              cluster = {
                  dc1 = {
                      servers = {
                          { host = "192.168.1.1", port = 1234, weight=10, max_fails=3, fail_timeout=10 },
                      }
                  },
                  dc2 = {
                      servers = {
                          { host = "192.168.1.2", port = 1234, weight=10, max_fails=3, fail_timeout=10 },
                      }
                  }
              }
          }
          _M.ups_from_nginx = {
              timeout = 2,
              cluster = {
                  {   -- level 1
                      upstream = "api.com",
                  },
                  {   -- level 2
                      upstream = "api.com",
                      upstream_only_backup = true,
                  },
              },
          }
          return _M
          瀏覽 13
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  天天干天天很天天狠狠 | 青青草AⅤ| 中文字幕AV在线观看 | 99精品热视频 | 国产激情网站 |