集群转发配置
配置简介
cluster_conf.data为集群转发配置文件。
配置描述
基础配置
配置项 | 描述 |
---|---|
Version | String 配置文件版本 |
Config | Object 各集群的转发配置参数 |
Config[k] | String 集群名称 |
Config[v] | Object 集群转发配置参数 |
集群转发配置
注:以下配置项均位于名字空间Config[v], 在配置项名称中已省略
后端基础配置
配置项 | 描述 |
---|---|
BackendConf.Protocol | String 后端服务的协议,当前支持http和fcgi, 默认值http |
BackendConf.TimeoutConnSrv | Integer 连接后端的超时时间,单位是毫秒 默认值2000 |
BackendConf.TimeoutResponseHeader | Integer 从后端读响应头的超时时间,单位是毫秒 默认值60000 |
BackendConf.MaxIdleConnsPerHost | Integer BFE实例与每个后端的最大空闲长连接数 默认值2 |
BackendConf.MaxConnsPerHost | Integer BFE实例与每个后端的最大长连接数,0代表无限制 默认值0 |
BackendConf.RetryLevel | Integer 请求重试级别。0:连接后端失败时,进行重试;1:连接后端失败、转发GET请求失败时均进行重试 默认值0 |
BackendConf.OutlierDetectionHttpCode | String 后端响应状态码异常检查,""代表不开启检查,"500"表示后端返回500则认为后端失败 支持两种格式:"[0-9]{3}"(如"500")和"[0-9]xx"(如"4xx");多个状态码之间使用'|'连接 默认值"",不开启后端响应状态码异常检查 |
BackendConf.FCGIConf | Object FastCGI 协议的配置 |
BackendConf.FCGIConf.Root | String 网站的Root文件夹位置 |
BackendConf.FCGIConf.EnvVars | Map[string]string 拓展的环境变量 |
健康检查配置
配置项 | 描述 |
---|---|
CheckConf.Schem | String 健康检查协议,支持HTTP和TCP 默认值 HTTP |
CheckConf.Uri | String 健康检查请求URI (仅HTTP) 默认值 "/health_check" |
CheckConf.Host | String 健康检查请求HOST (仅HTTP) 默认值 "" |
CheckConf.StatusCode | Integer 期待返回的响应状态码 (仅HTTP) 默认值 200。也可以配置为0,代表任意状态码均符合预期。 |
CheckConf.FailNum | Integer 健康检查启动阈值(转发请求连续失败FailNum次后,将后端实例置为不可用状态,并启动健康检查) 默认值5 |
CheckConf.SuccNum | Integer 健康检查成功阈值(健康检查连续成功SuccNum次后,将后端实例置为可用状态) 默认值1 |
CheckConf.CheckTimeout | Integer 健康检查的超时时间,单位是毫秒 默认值0(无超时) |
CheckConf.CheckInterval | Integer 健康检查的间隔时间,单位是毫秒 默认值1000 |
GSLB基础配置
配置项 | 描述 |
---|---|
GslbBasic.CrossRetry | Integer 跨子集群最大重试次数 默认值0 |
GslbBasic.RetryMax | Integer 子集群内最大重试次数 默认值2 |
GslbBasic.BalanceMode | String 负载均衡模式(WRR: 加权轮询; WLC: 加权最小连接数) 默认值WRR |
GslbBasic.HashConf | Object 会话保持的HASH策略配置 |
GslbBasic.HashConf.HashStrategy | Integer 会话保持的哈希策略。0:ClientIdOnly, 1:ClientIpOnly, 2:ClientIdPreferred,3:RequestURI 默认值为1(ClientIpOnly) |
GslbBasic.HashConf.HashHeader | String 会话保持的hash请求头。可选参数。可配置为能用于唯一区分一个客户端的Header。如果是一个cookie header, 格式为:"Cookie:key" |
GslbBasic.HashConf.SessionSticky | Boolean 是否开启会话保持(开启后,可以保证来源于同一个用户的请求可以发送到同一个后端) 默认值False。设为False时,会话保持级别为子集群级别。 |
集群基础配置
配置项 | 描述 |
---|---|
ClusterBasic.TimeoutReadClient | Integer 读用户请求body的超时时间,单位为毫秒 默认值30000 |
ClusterBasic.TimeoutWriteClient | Integer 写响应的超时时间,单位为毫秒 默认值60000 |
ClusterBasic.TimeoutReadClientAgain | Integer 连接闲置超时时间,单位为毫秒 默认值60000 |
ClusterBasic.ReqWriteBufferSize | Integer 请求的写buffer大小,单位为Bytes。默认值512。建议使用默认值。 |
ClusterBasic.ReqFlushInterval | Integer 刷新请求的间隔时间,单位是毫秒。默认值为0,表示不进行周期性刷新 |
ClusterBasic.ResFlushInterval | Integer 刷新响应的间隔时间,单位是毫秒。默认值为-1,表示不对响应进行缓存。设置为0表示不进行周期性刷新。建议使用默认值。 |
ClusterBasic.CancelOnClientClose | Boolean 当服务端正在读后端响应时,如果客户端断连,是否取消该阻塞状态。默认值为false。建议使用默认值。 |
配置示例
{
"Version": "20190101000000",
"Config": {
"cluster_example": {
"BackendConf": {
"TimeoutConnSrv": 2000,
"TimeoutResponseHeader": 50000,
"MaxIdleConnsPerHost": 0,
"RetryLevel": 0,
"OutlierDetectionHttpCode": "5xx|403"
},
"CheckConf": {
"Schem": "http",
"Uri": "/healthcheck",
"Host": "example.org",
"StatusCode": 200,
"FailNum": 10,
"CheckInterval": 1000
},
"GslbBasic": {
"CrossRetry": 0,
"RetryMax": 2,
"HashConf": {
"HashStrategy": 0,
"HashHeader": "Cookie:UID",
"SessionSticky": false
}
},
"ClusterBasic": {
"TimeoutReadClient": 30000,
"TimeoutWriteClient": 60000,
"TimeoutReadClientAgain": 60000,
}
},
"fcgi_cluster_example": {
"BackendConf": {
"Protocol": "fcgi",
"TimeoutConnSrv": 2000,
"TimeoutResponseHeader": 50000,
"MaxIdleConnsPerHost": 0,
"MaxConnsPerHost": 0,
"RetryLevel": 0,
"FCGIConf": {
"Root": "/home/work",
"EnvVars": {
"VarKey": "VarVal"
}
}
},
"CheckConf": {
"Schem": "http",
"Uri": "/healthcheck",
"Host": "example.org",
"StatusCode": 200,
"FailNum": 10,
"CheckInterval": 1000
},
"GslbBasic": {
"CrossRetry": 0,
"RetryMax": 2,
"HashConf": {
"HashStrategy": 1,
"HashHeader": "Cookie:UID",
"SessionSticky": false
}
},
"ClusterBasic": {
"TimeoutReadClient": 30000,
"TimeoutWriteClient": 60000,
"TimeoutReadClientAgain": 60000,
"ReqWriteBufferSize": 512,
"ReqFlushInterval": 0,
"ResFlushInterval": -1,
"CancelOnClientClose": false
}
}
}
}