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",
-- 请求间隔时间,默认是 秒。最小值为 2毫秒
interval = ,
-- 请求的超时时间。 默认值为: 毫秒
timeout = ,
-- 失败多少次后,将节点标记为down。 默认值为
fall = ,
-- 成功多少次后,将节点标记为up。默认值为
rise = ,
-- 返回的http状态码,表示应用正常
valid_statuses = {, },
-- 并发度, 默认值为
concurrency = ,
} 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 创建该数目的轻量线程来并发发送健康检测请求的个数
上面的这些配置项,将作为一个上下文保存下来,在不同的阶段被反复调用
Openresty 健康检查的更多相关文章
- nginx限流&健康检查
Nginx原生限流模块: ngx_http_limit_conn_module模块 根据前端请求域名或ip生成一个key,对于每个key对应的网络连接数进行限制. 配置如下: http模块 ser ...
- 【RDA】使用RDA(Remote Diagnostic Agent)工具对数据库进行健康检查
[RDA]使用RDA(Remote Diagnostic Agent)工具对数据库进行健康检查 分类: Linux RDA英文全称叫做"Oracle Remote Diagnostic Ag ...
- nginx.conf配置文件里的upstream加入健康检查
查看NGINX启用了那些模块: # ./nginx -V Tengine version: Tengine/ (nginx/) built by gcc (Red Hat -) (GCC) TLS S ...
- keepalived健康检查方式
keepalived对后端realserver的健康检查方式主要有以下几种: TCP_CHECK:工作在第4层,keepalived向后端服务器发起一个tcp连接请求,如果后端服务器没有响应或超时,那 ...
- nginx的健康检查功能将挂掉的Tomcat舍弃
1.Ngninx自带健康检查功能,能将挂掉的服务器舍弃,不在访问路径里 2.Nginx还有URL重写功能,能将接收到的请求,进行改写,再将新的URL分发到后端服务器上
- Tengine新增健康检查模块
总结 2.tengine的状态监控 Tengine的状态监控有两种 这里演示一个健康检查模块功能 配置一个status的location location /status { check_status ...
- Oracle SQL 调优健康检查脚本
Oracle SQL 调优健康检查脚本 我们关注数据库系统的性能,进行数据库调优的主要工作就是进行SQL的优化.良好的数据架构设计.配合应用系统中间件和写一手漂亮的SQL,是未来系统上线后不出现致命性 ...
- Script:SQL调优健康检查脚本
Script:SQL调优健康检查脚本 http://www.askmaclean.com/archives/sql-tuning-health-check-script.html 以下脚本可以用于收集 ...
- nginx健康检查模块源码分析
nginx健康检查模块 本文所说的nginx健康检查模块是指nginx_upstream_check_module模块.nginx_upstream_check_module模块是Taobao定制的用 ...
随机推荐
- 范式(Paradigm)是什么?
Paradigm (范式) 是一个领域中主流的行事套路,它包括 philosophy (理念) 和 methods (方法)两部分.Philosophy (理念) 这个概念很好理解.比如,购物理念就是 ...
- POJ3268-Silver Cow Party-(Dijstra)
题意:有n只牛聚会,每只牛的家有编号,指定去一只牛家里聚会.牛很懒,走最短路去,花费时间最少.而回来的时间又不相同,问那只走最远的牛走了多久? 解题:去某只牛家里聚会,单源求最短路,来回时间不同,用有 ...
- GoogleUpdate计划任务提权
1.默认低权限无法写入: 2.配置低权限可操控:icacls Update /grant everyone:f 3.下载可执行程序:certutil -urlcache -split -f http: ...
- MongoDB 企业版4.2.2安装
一.下载企业版MongoDB安装RPM包 https://www.mongodb.com/download-center/enterprise 二.安装MogoDB4.2.2企业版 1.安装依赖包 n ...
- [Android] Android studio gradle 插件的版本号和 gradle 的版本号 的对应关系
[Android] Android studio gradle 插件的版本号和 gradle 的版本号 的对应关系 本博客地址: wukong1688 本文原文地址:https://www.cnblo ...
- CCF 201812-3 CIDR合并
CCF 201812-3 CIDR合并 //100分 93ms #include<stdio.h>//CCF上stdio.h比cstdio快!!! #include<string.h ...
- paython基础-格式化输出
目录 %s %r %d 及其他%... formate f"{变量}" 详细查找:https://docs.python.org/3/library/string.html#for ...
- mfs分布式文件系统,分布式存储,高可用(pacemaker+corosync+pcs),磁盘共享(iscsi),fence解决脑裂问题
一.MFS概述 MooseFS是一个分布式存储的框架,其具有如下特性:(1)通用文件系统,不需要修改上层应用就可以使用(那些需要专门api的dfs很麻烦!).(2)可以在线扩容,体系架构可伸缩性极强. ...
- [Gamma阶段]第八次Scrum Meeting
Scrum Meeting博客目录 [Gamma阶段]第八次Scrum Meeting 基本信息 名称 时间 地点 时长 第八次Scrum Meeting 19/06/04 大运村寝室6楼 40min ...
- JavaScript初探系列(六)——函数
一.概述 (一)函数的声明 JavaScript 有三种声明函数的方法. (1)function 命令 function命令声明的代码区块,就是一个函数.function命令后面是函数名,函数名后面是 ...