title | summary |
---|---|
TiProxy 配置文件 |
了解与 TiProxy 部署和使用相关的配置参数。 |
本文档介绍了与 TiProxy 部署和使用相关的配置参数。以下是一个配置示例:
[proxy]
addr = "0.0.0.0:6000"
max-connections = 100
[api]
addr = "0.0.0.0:3080"
[ha]
virtual-ip = "10.0.1.10/24"
interface = "eth0"
[security]
[security.cluster-tls]
skip-ca = true
[security.sql-tls]
skip-ca = true
本小节介绍了 TiProxy 的配置参数。
建议:
如需调整配置项的值,参见修改配置参数。通常情况下,修改配置项会导致重启,但是 TiProxy 支持热加载,你可以通过
tiup cluster reload --skip-restart
跳过重启。
SQL 端口的配置。
- 默认值:
0.0.0.0:6000
- 支持热加载:否
- SQL 网关地址。格式为
<ip>:<port>
。
- 默认值:
""
- 支持热加载:否
- 指定客户端连接 TiProxy 时使用的地址。使用 TiUP 或 TiDB Operator 部署 TiProxy 时,此配置项会自动设置。如果未设置该配置项,将使用该 TiProxy 实例的外部 IP 地址。
- 默认值:
0
- 支持热加载:是
- 单位:秒
- 在 TiProxy 关闭时,在
graceful-wait-before-shutdown
秒内,HTTP 状态返回不健康,但 SQL 端口仍接受新连接。graceful-wait-before-shutdown
秒之后 SQL 端口将拒绝新连接并关闭现有连接。如果客户端和 TiProxy 之间没有其他代理(例如 NLB),建议将这个配置的值设置为0
。
- 默认值:
15
- 支持热加载:是
- 单位:秒
- 在 TiProxy 关闭前,最多等待
graceful-close-conn-timeout
秒,连接的当前事务完成后将关闭连接。超时之后 TiProxy 将强制关闭所有连接。graceful-close-conn-timeout
发生在graceful-wait-before-shutdown
之后。建议将此超时时间设置为长于事务的生命周期。
- 默认值:
0
- 支持热加载:是
- 每个 TiProxy 实例最多可以接受
max-connections
个连接。0
表示没有限制。
- 默认值:
32768
- 支持热加载:是,但只对新连接有效
- 单位:字节
- 取值范围:
[1024, 16777216]
- 每个连接的缓冲区大小,读和写分别使用一个缓冲区。它是内存空间和性能之间的平衡,较大的缓冲区可能会有更高的性能,但占用更多内存。当值为
0
时,TiProxy 会使用默认大小的缓冲区。
- 默认值:
127.0.0.1:2379
- 支持热加载:否
- TiProxy 连接的 PD 地址。TiProxy 通过从 PD 获取 TiDB 列表来发现 TiDB 实例。如果使用 TiUP 或 TiDB Operator 部署 TiProxy,则会自动设置此项。
- 默认值:
""
- 支持热加载:是,但只对新连接有效
- 可选值:
""
,"v2"
- 在 SQL 端口启用 PROXY 协议。开启 PROXY 协议后能让 TiProxy 透传客户端真实的 IP 地址给 TiDB。
"v2"
代表使用 PROXY 协议 v2 版本,""
代表不使用 PROXY 协议。在 TiProxy 启用 PROXY 协议后,需要同时在 TiDB 服务器上启用 PROXY 协议。
HTTP 网关的配置。
- 默认值:
0.0.0.0:3080
- 支持热加载:否
- API 网关地址。格式为
<ip>:<port>
。
- 默认值:
""
- 支持热加载:否
- 可选值:
""
,"v2"
- 在端口启用 PROXY 协议。
"v2"
代表使用 PROXY 协议 v2 版本,""
代表不使用 PROXY 协议。
TiProxy 负载均衡策略的配置。
- 默认值:
""
- 支持热加载:是
- 指定用于基于标签的负载均衡的标签名。TiProxy 根据该标签名匹配 TiDB server 的标签值,并优先将请求路由到与自身具有相同标签值的 TiDB server。
label-name
的默认值为空字符串,表示不使用基于标签的负载均衡。要启用该负载均衡策略,需要将此配置项设置为非空字符串,并配置 TiProxy 的labels
和 TiDB 的labels
配置项。有关详细信息,请参阅基于标签的负载均衡。
- 默认值:
resource
- 支持热加载:是
- 可选值:
resource
、location
、connection
- 指定负载均衡策略。各个可选值的含义请参阅 TiProxy 负载均衡策略。
TiProxy 的高可用配置。
- 默认值:
""
- 支持热加载:否
- 指定虚拟 IP 地址,使用 CIDR 格式表示,例如
"10.0.1.10/24"
。当集群中部署了多台 TiProxy 时,只有一台 TiProxy 会绑定虚拟 IP。当该 TiProxy 下线时,另外一台 TiProxy 会自动绑定该 IP,确保客户端始终能通过虚拟 IP 连接到可用的 TiProxy。
注意:
- 虚拟 IP 仅支持 Linux 操作系统。
- 运行 TiProxy 的 Linux 用户必须具有绑定 IP 地址的权限。
- 虚拟 IP 和所有 TiProxy 实例的 IP 必须处于同一个 CIDR 范围内。
- 默认值:
""
- 支持热加载:否
- 指定绑定虚拟 IP 的网络接口,例如
"eth0"
。只有同时设置ha.virtual-ip
和ha.interface
时,该 TiProxy 实例才能绑定虚拟 IP。
- 默认值:
{}
- 支持热加载:是
- 指定服务器标签,例如
{ zone = "us-west-1", dc = "dc1" }
。
- 默认值:
info
- 支持热加载:是
- 可选值:
debug
,info
,warn
,error
,panic
- 指定日志的级别。当指定
panic
级别时,TiProxy 遇到错误时会 panic。
-
默认值:
tidb
-
可选值:
tidb
:TiDB 使用的格式。有关详细信息,请参见 统一日志格式。json
:结构化 JSON 格式。console
:易读的日志格式。
- 默认值:
""
- 支持热加载:是
- 日志文件路径。非空值将启用日志记录到文件。使用 TiUP 部署时会自动设置文件路径。
- 默认值:
300
- 支持热加载:是
- 单位:MB
- 日志文件的最大大小。超过该大小后,日志将被轮转。
- 默认值:
3
- 支持热加载:是
- 指定保留旧日志文件的最大天数。超过此期限后,将删除过时的日志文件。
- 默认值:
3
- 支持热加载:是
- 指定要保留的日志文件的最大数量。当超过此数量时,将自动删除多余的日志文件。
在 [security]
部分有四个名称不同的 TLS 对象,它们共享相同的配置格式和字段,但是不同名称对象的字段解释可能不同。
[security]
[sql-tls]
skip-ca = true
[server-tls]
auto-certs = true
所有 TLS 选项都支持热加载。
TLS 对象字段:
ca
:指定 CAcert
:指定证书key
:指定私钥auto-certs
:主要用于测试。如果没有指定证书或密钥,则会生成证书。skip-ca
:在客户端对象上跳过使用 CA 验证证书,或在服务器对象上跳过服务器端验证。min-tls-version
:设置最低 TLS 版本。可选值:1.0
、1.1
、1.2
和1.3
。默认为1.2
,代表支持 TLSv1.2 及以上版本。rsa-key-size
:启用auto-certs
时设置 RSA 密钥大小。autocert-expire-duration
:设置自动生成证书的默认到期时间。
对象根据名称被分类为客户端或服务器对象。
对客户端 TLS 对象:
- 必须设置
ca
或skip-ca
来跳过验证服务器证书。 - 可选:可以设置
cert
或key
来通过服务器端客户端验证。 - 无用字段:
auto-certs
。
对服务器 TLS 对象:
- 设置
cert
、key
或auto-certs
后支持 TLS 连接,否则不支持 TLS 连接。 - 可选:如果
ca
不为空,则启用服务器端的客户端验证。客户端必须提供证书。如果skip-ca
为true
且ca
不为空,则服务器仅在客户端提供证书时才验证客户端证书。
客户端 TLS 对象。用于访问 TiDB 或 PD。
- 默认值:
false
- 支持热加载:是,但只对新连接有效
- 要求 TiProxy 和 TiDB 服务器之间使用 TLS 连接。如果 TiDB 服务器不支持 TLS,则客户端在连接到 TiProxy 时会报错。
客户端 TLS 对象。用于访问 TiDB SQL 端口(4000)。
服务器 TLS 对象。用于在 SQL 端口(6000)上提供 TLS。
服务器 TLS 对象。用于在 HTTP 状态端口(3080)上提供 TLS。