集群转发配置

配置简介

cluster_conf.data为集群转发配置文件。

配置描述

基础配置

配置项描述
VersionString
配置文件版本
ConfigObject
各集群的转发配置参数
Config[k]String
集群名称
Config[v]Object
集群转发配置参数

集群转发配置

注:以下配置项均位于名字空间Config[v], 在配置项名称中已省略

后端基础配置

配置项描述
BackendConf.ProtocolString
后端服务的协议,当前支持http和fcgi, 默认值http
BackendConf.TimeoutConnSrvInteger
连接后端的超时时间,单位是毫秒
默认值2000
BackendConf.TimeoutResponseHeaderInteger
从后端读响应头的超时时间,单位是毫秒
默认值60000
BackendConf.MaxIdleConnsPerHostInteger
BFE实例与每个后端的最大空闲长连接数
默认值2
BackendConf.MaxConnsPerHostInteger
BFE实例与每个后端的最大长连接数,0代表无限制
默认值0
BackendConf.RetryLevelInteger
请求重试级别。0:连接后端失败时,进行重试;1:连接后端失败、转发GET请求失败时均进行重试
默认值0
BackendConf.OutlierDetectionHttpCodeString
后端响应状态码异常检查,””代表不开启检查,”500”表示后端返回500则认为后端失败
支持两种格式:”[0-9]{3}”(如”500”)和”[0-9]xx”(如”4xx”);多个状态码之间使用’|’连接
默认值””,不开启后端响应状态码异常检查
BackendConf.FCGIConfObject
FastCGI 协议的配置
BackendConf.FCGIConf.RootString
网站的Root文件夹位置
BackendConf.FCGIConf.EnvVarsMap[string]string
拓展的环境变量

健康检查配置

配置项描述
CheckConf.SchemString
健康检查协议,支持HTTP和TCP
默认值 HTTP
CheckConf.UriString
健康检查请求URI (仅HTTP)
默认值 “/health_check”
CheckConf.HostString
健康检查请求HOST (仅HTTP)
默认值 “”
CheckConf.StatusCodeInteger
期待返回的响应状态码 (仅HTTP)
默认值 200。也可以配置为0,代表任意状态码均符合预期。
CheckConf.FailNumInteger
健康检查启动阈值(转发请求连续失败FailNum次后,将后端实例置为不可用状态,并启动健康检查)
默认值5
CheckConf.SuccNumInteger
健康检查成功阈值(健康检查连续成功SuccNum次后,将后端实例置为可用状态)
默认值1
CheckConf.CheckTimeoutInteger
健康检查的超时时间,单位是毫秒
默认值0(无超时)
CheckConf.CheckIntervalInteger
健康检查的间隔时间,单位是毫秒
默认值1000

GSLB基础配置

配置项描述
GslbBasic.CrossRetryInteger
跨子集群最大重试次数
默认值0
GslbBasic.RetryMaxInteger
子集群内最大重试次数
默认值2
GslbBasic.BalanceModeString
负载均衡模式(WRR: 加权轮询; WLC: 加权最小连接数)
默认值WRR
GslbBasic.HashConfObject
会话保持的HASH策略配置
GslbBasic.HashConf.HashStrategyInteger
会话保持的哈希策略。0:ClientIdOnly, 1:ClientIpOnly, 2:ClientIdPreferred,3:RequestURI
默认值为1(ClientIpOnly)
GslbBasic.HashConf.HashHeaderString
会话保持的hash请求头。可选参数。可配置为能用于唯一区分一个客户端的Header。如果是一个cookie header, 格式为:”Cookie:key”
GslbBasic.HashConf.SessionStickyBoolean
是否开启会话保持(开启后,可以保证来源于同一个用户的请求可以发送到同一个后端)
默认值False。设为False时,会话保持级别为子集群级别。

集群基础配置

配置项描述
ClusterBasic.TimeoutReadClientInteger
读用户请求body的超时时间,单位为毫秒
默认值30000
ClusterBasic.TimeoutWriteClientInteger
写响应的超时时间,单位为毫秒
默认值60000
ClusterBasic.TimeoutReadClientAgainInteger
连接闲置超时时间,单位为毫秒
默认值60000
ClusterBasic.ReqWriteBufferSizeInteger
请求的写buffer大小,单位为Bytes。默认值512。建议使用默认值。
ClusterBasic.ReqFlushIntervalInteger
刷新请求的间隔时间,单位是毫秒。默认值为0,表示不进行周期性刷新
ClusterBasic.ResFlushIntervalInteger
刷新响应的间隔时间,单位是毫秒。默认值为-1,表示不对响应进行缓存。设置为0表示不进行周期性刷新。建议使用默认值。
ClusterBasic.CancelOnClientCloseBoolean
当服务端正在读后端响应时,如果客户端断连,是否取消该阻塞状态。默认值为false。建议使用默认值。

配置示例

  1. {
  2. "Version": "20190101000000",
  3. "Config": {
  4. "cluster_example": {
  5. "BackendConf": {
  6. "TimeoutConnSrv": 2000,
  7. "TimeoutResponseHeader": 50000,
  8. "MaxIdleConnsPerHost": 0,
  9. "RetryLevel": 0,
  10. "OutlierDetectionHttpCode": "5xx|403"
  11. },
  12. "CheckConf": {
  13. "Schem": "http",
  14. "Uri": "/healthcheck",
  15. "Host": "example.org",
  16. "StatusCode": 200,
  17. "FailNum": 10,
  18. "CheckInterval": 1000
  19. },
  20. "GslbBasic": {
  21. "CrossRetry": 0,
  22. "RetryMax": 2,
  23. "HashConf": {
  24. "HashStrategy": 0,
  25. "HashHeader": "Cookie:UID",
  26. "SessionSticky": false
  27. }
  28. },
  29. "ClusterBasic": {
  30. "TimeoutReadClient": 30000,
  31. "TimeoutWriteClient": 60000,
  32. "TimeoutReadClientAgain": 60000,
  33. }
  34. },
  35. "fcgi_cluster_example": {
  36. "BackendConf": {
  37. "Protocol": "fcgi",
  38. "TimeoutConnSrv": 2000,
  39. "TimeoutResponseHeader": 50000,
  40. "MaxIdleConnsPerHost": 0,
  41. "MaxConnsPerHost": 0,
  42. "RetryLevel": 0,
  43. "FCGIConf": {
  44. "Root": "/home/work",
  45. "EnvVars": {
  46. "VarKey": "VarVal"
  47. }
  48. }
  49. },
  50. "CheckConf": {
  51. "Schem": "http",
  52. "Uri": "/healthcheck",
  53. "Host": "example.org",
  54. "StatusCode": 200,
  55. "FailNum": 10,
  56. "CheckInterval": 1000
  57. },
  58. "GslbBasic": {
  59. "CrossRetry": 0,
  60. "RetryMax": 2,
  61. "HashConf": {
  62. "HashStrategy": 1,
  63. "HashHeader": "Cookie:UID",
  64. "SessionSticky": false
  65. }
  66. },
  67. "ClusterBasic": {
  68. "TimeoutReadClient": 30000,
  69. "TimeoutWriteClient": 60000,
  70. "TimeoutReadClientAgain": 60000,
  71. "ReqWriteBufferSize": 512,
  72. "ReqFlushInterval": 0,
  73. "ResFlushInterval": -1,
  74. "CancelOnClientClose": false
  75. }
  76. }
  77. }
  78. }