主页 > 创业  > 

nginxupstream健康检测

nginxupstream健康检测
自带健康检测module

nginx本身提供有健康检测module ngx_http_upstream_module ,利用自身的module可以实现简单的健康检测

下载nginx模块 wget github /nginx/nginx/archive/release-1.19.3.tar.gz 解压nginx模块 tar -zxvf release-1.19.3.tar.gz 进入nginx模块目录 cd nginx-release-1.19.3 编译nginx带上ngx_http_upstream_module模块 ./configure --add-module=../ngx_http_upstream_module 安装nginx make && make install 重启nginx nginx -s reload 第三方健康检测module

第三方插件的module,例如openresty的lua-resty-upstream-healthcheck

http { lua_package_path "/path/to/lua-resty-upstream-healthcheck/lib/?.lua;;"; # sample upstream block: upstream foo { server 127.0.0.1:12354; server 127.0.0.1:12355; server 127.0.0.1:12356 backup; } # the size depends on the number of servers in upstream {}: lua_shared_dict healthcheck 1m; lua_socket_log_errors off; init_worker_by_lua_block { local hc = require "resty.upstream.healthcheck" local ok, err = hc.spawn_checker{ shm = "healthcheck", -- defined by "lua_shared_dict" upstream = "foo ", -- defined by "upstream" type = "http", -- support "http" and "https" http_req = "GET /status HTTP/1.0\r\nHost: foo \r\n\r\n", -- raw HTTP request for checking port = nil, -- the check port, it can be different than the original backend server port, default means the same as the original backend server interval = 2000, -- run the check cycle every 2 sec timeout = 1000, -- 1 sec is the timeout for network operations fall = 3, -- # of successive failures before turning a peer down rise = 2, -- # of successive successes before turning a peer up valid_statuses = {200, 302}, -- a list valid HTTP status code concurrency = 10, -- concurrency level for test requests -- ssl_verify = true, -- https type only, verify ssl certificate or not, default true -- host = foo , -- https type only, host name in ssl handshake, default nil } if not ok then ngx.log(ngx.ERR, "failed to spawn health checker: ", err) return end -- Just call hc.spawn_checker() for more times here if you have -- more upstream groups to monitor. One call for one upstream group. -- They can all share the same shm zone without conflicts but they -- need a bigger shm zone for obvious reasons. } server { ... # status page for all the peers: location = /status { access_log off; allow 127.0.0.1; deny all; 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()) } } # status page for all the peers (prometheus format): location = /metrics { access_log off; default_type text/plain; content_by_lua_block { local hc = require "resty.upstream.healthcheck" st , err = hc.prometheus_status_page() if not st then ngx.say(err) return end ngx.print(st) } } } }
标签:

nginxupstream健康检测由讯客互联创业栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“nginxupstream健康检测