本系统分为go和rust两个版本,配置不同。
 
 
rust版本的负载均衡配置例子与说明:
"config": {
  "backends": [
    {
      "host": "1.2.3.4",
      "http_port": 80,
      "https_port": 443,
      "weight": 100,
      "is_backup": false,
      "health_check": "https://www.tingtao.org/archives/3508.html",
      "protocol": "passthrough",
      "health_check_interval": "30s"
    },
    {
      "host": "2.3.4.5",
      "http_port": 80,
      "https_port": 443,
      "weight": 100,
      "is_backup": true,
      "health_check": "https://www.tingtao.org/archives/3508.html",
      "protocol": "passthrough",
      "health_check_interval": "30s"
    }
  ],
  "failover": true,
  "timeout": "30s",
  "protocol_mode": "passthrough",
  "preserve_host": true,
  "preserve_x_forwarded": true
}

作用域:site

 

负载均衡配置:

failover:故障转移功能,true:当主服务器不健康时,自动切换到备用服务器

timeout:向后端服务器请求的超时设置

protocol_mode:协议模式,支持passthrough、force_http、force_https

preserve_host:保留主机名,是否将原始域名传递给后端服务器,如果false,则使用后端服务器ip作为主机名。

preserve_x_forwarded:是否发送x-forwarded-for头部给后端节点

重要说明:示例中的“backends”是服务器组的名字,这个目前已经没什么用了。旧版本是可以根据路由来决定某个路径使用某个组,相当于nginx的不同location使用不同后端节点,但是更强大。

 

节点配置:

host:后端ip,支持v4/v6

http_port与https_port:不必多说

weight:权重

is_backup:是否是备用节点

health_check:健康检查网址

protocol:与后端通信的协议,可选http/https/passthrough,前两个是写死协议,可以理解为强行协议转换,passthrough是根据浏览器协议进行直通

health_check_interval:健康检查周期。

 
健康检查的配置与说明:
健康检查并没有独立的配置,所需所有设置都位于节点设置中。
 
负载均衡与监控检查的关联:
健康检查是全局功能,会根据后端节点的ip:http_port:https_port进行聚合,这三项相同的视为同一服务器,而同一节点的不同设置分为两种情况:rust版本会合并为较严格模式,比如一个节点检查间隔60秒,另一个节点30秒,则健康检查的实际时间会合并为30秒。go版本则使用第一个节点的配置,后续不再判断严格情况。
 
负载均衡器自身仅是一个虚拟容器,里面有若干虚拟组,组内进行负载均衡以及主备切换的各种算法,而节点健康情况向健康检查器查询。
两个版本的负载均衡也有区别:
rust版本只支持主备切换。
go版本支持所有主流和非主流的负载均衡算法,并且将后端节点根据设置划分为不同的服务器组、主备组,并且在各组内运行负载均衡算法。
 
 

 

作者 听涛

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注