负载均衡
当代理配置了多个目标服务(targets)时,系统支持通过不同的负载均衡策略将请求分发到各个目标服务。
支持的策略
| 策略值 | 说明 |
|---|---|
| roundrobin | 轮询,按顺序轮流分配请求(默认) |
| weight | 加权轮询,按权重比例分配请求 |
| random | 随机选择目标服务 |
| leastconn | 分配给当前连接数最少的目标 |
配置示例
轮询
[[proxies]]
name = "web"
protocol = "http"
custom_domains = ["a.domain.com"]
targets = [
{ host = "127.0.0.1", port = 8001, name = "web-1" },
{ host = "127.0.0.1", port = 8002, name = "web-2" }
]
[proxies.loadbalance]
strategy = "roundrobin"
加权轮询
[[proxies]]
name = "web"
protocol = "http"
custom_domains = ["a.domain.com"]
targets = [
{ host = "127.0.0.1", port = 8001, weight = 70, name = "web-large" },
{ host = "127.0.0.1", port = 8002, weight = 30, name = "web-small" }
]
[proxies.loadbalance]
strategy = "weight"
TCP 长连接
[[proxies]]
name = "database"
protocol = "tcp"
remote_port = 3306
targets = [
{ host = "192.168.1.10", port = 3306, name = "db-1" },
{ host = "192.168.1.11", port = 3306, name = "db-2" }
]
[proxies.loadbalance]
strategy = "leastconn"
参数说明
loadbalance 配置
| 参数名 | 类型 | 默认值 | 描述 | 必填 |
|---|---|---|---|---|
| strategy | String | roundrobin | 负载均衡策略 | 否 |
targets 子参数
| 参数名 | 类型 | 默认值 | 描述 | 必填 |
|---|---|---|---|---|
| host | String | 127.0.0.1 | 目标服务主机地址 | 否 |
| port | Integer | - | 目标服务端口 | 是 |
| weight | Integer | 1 | 权重值,用于加权轮询策略 | 否 |
| name | String | - | 目标服务名称 | 否 |