已解决
nginx upstream健康检测
来自网友在路上 193893提问 提问时间:2023-11-09 09:59:08阅读次数: 93
最佳答案 问答题库938位专家为你答疑解惑
自带健康检测module
nginx本身提供有健康检测module ngx_http_upstream_module ,利用自身的module可以实现简单的健康检测
下载nginx模块
wget https://github.com/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.com {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.com", -- defined by "upstream"type = "http", -- support "http" and "https"http_req = "GET /status HTTP/1.0\r\nHost: foo.com\r\n\r\n",-- raw HTTP request for checkingport = nil, -- the check port, it can be different than the original backend server port, default means the same as the original backend serverinterval = 2000, -- run the check cycle every 2 sectimeout = 1000, -- 1 sec is the timeout for network operationsfall = 3, -- # of successive failures before turning a peer downrise = 2, -- # of successive successes before turning a peer upvalid_statuses = {200, 302}, -- a list valid HTTP status codeconcurrency = 10, -- concurrency level for test requests-- ssl_verify = true, -- https type only, verify ssl certificate or not, default true-- host = foo.com, -- https type only, host name in ssl handshake, default nil}if not ok thenngx.log(ngx.ERR, "failed to spawn health checker: ", err)returnend-- 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 thenngx.say(err)returnendngx.print(st)}}}
}
查看全文
99%的人还看了
相似问题
- go语言实现高性能自定义ip管理模块(ip黑名单)
- 【Django使用】4大模块50页md文档,第4篇:Django请求与响应和cookie与session
- 【python学习】基础篇-常用模块-pickle模块:序列化和反序列化
- #gStore-weekly | gAnswer源码解析 调用NE模块流程
- 【前端知识】Node——events模块的相关方法
- 使用Python的turtle模块绘制玫瑰花图案(含详细Python代码与注释)
- 【ES6标准入门】JavaScript中的模块Module语法的使用细节:export命令和imprt命令详细使用,超级详细!!!
- SpringBoot学习笔记-配置MySQL与实现注册登录模块(中)
- 一个奇怪的蓝牙模块分析记录
- 前端JS模块化对外暴露的三种方法
猜你感兴趣
版权申明
本文"nginx upstream健康检测":http://eshow365.cn/6-36089-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!