TiProxyコンフィグレーションファイル
このドキュメントでは、TiProxy の導入と使用に関連する構成パラメータについて説明します。次に構成例を示します。
[proxy]
addr = "0.0.0.0:6000"
max-connections = 100
[api]
addr = "0.0.0.0:3080"
[log]
level = "info"
[security]
[security.cluster-tls]
skip-ca = true
[security.sql-tls]
skip-ca = true
tiproxy.toml
ファイルを設定する
このセクションでは、TiProxy の構成パラメータについて説明します。
ヒント:
設定項目の値を調整する必要がある場合は、 設定を変更するを参照してください。通常、変更すると再起動が必要になります。TiProxy はホットリロードをサポートしているため、
tiup cluster reload --skip-restart
実行することで再起動をスキップできます。
プロキシ
SQL ポートのコンフィグレーション。
addr
- デフォルト値:
0.0.0.0:6000
- ホットリロードのサポート: いいえ
- SQL ゲートウェイ アドレス。形式は
<ip>:<port>
です。
graceful-wait-before-shutdown
- デフォルト値:
0
- ホットリロードのサポート: はい
- 単位: 秒
- TiProxy がシャットダウンすると、HTTP ステータスは異常を返しますが、SQL ポートは
graceful-wait-before-shutdown
秒間新しい接続を受け入れ続けます。その後、新しい接続は拒否され、クライアントがドレインされます。クライアントと TiProxy の間に他のプロキシ (NLB など) がない場合は、0
に設定することをお勧めします。
graceful-close-conn-timeout
- デフォルト値:
15
- ホットリロードのサポート: はい
- 単位: 秒
- TiProxy がシャットダウンすると、現在のトランザクション (クライアントのドレインとも呼ばれます) が
graceful-close-conn-timeout
秒以内に完了すると、接続が閉じられます。その後、すべての接続が一度に閉じられます。3graceful-close-conn-timeout
graceful-wait-before-shutdown
後に発生します。このタイムアウトは、トランザクションのライフサイクルよりも長く設定することをお勧めします。
max-connections
- デフォルト値:
0
- ホットリロードのサポート: はい
- 各 TiProxy インスタンスは最大
max-connections
接続を受け入れることができます。30
制限がないことを意味します。
conn-buffer-size
- デフォルト値:
32768
- ホットリロードのサポート: はい、ただし新規接続のみ
- 範囲:
[1024, 16777216]
- この構成項目では、接続バッファ サイズを決定できます。各接続では、読み取りバッファ 1 つと書き込みバッファ
0
つが使用されます。これは、メモリとパフォーマンスのトレードオフです。バッファが大きいほどパフォーマンスは向上しますが、メモリの消費量も多くなります。1 の場合、TiProxy はデフォルトのバッファ サイズを使用します。
pd-addrs
- デフォルト値:
127.0.0.1:2379
- ホットリロードのサポート: いいえ
- TiProxy が接続する PD アドレス。TiProxy は、PD から TiDB リストを取得して TiDB インスタンスを検出します。TiProxy がTiUPまたはTiDB Operatorによってデプロイされると、自動的に設定されます。
proxy-protocol
- デフォルト値:
""
- ホットリロードのサポート: はい、ただし新規接続のみ
- 可能な値:
""
、"v2"
- ポートのPROXYプロトコル有効にします。PROXY プロトコルを有効にすると、TiProxy は実際のクライアント IP アドレスを TiDB に渡すことができます。3
"v2"
PROXY プロトコル バージョン 2 を使用することを示し、""
PROXY プロトコルを無効にすることを示します。TiProxy で PROXY プロトコルが有効になっている場合は、TiDBサーバーでPROXYプロトコルも有効にする必要があります。
アピ
HTTP ゲートウェイの構成。
addr
- デフォルト値:
0.0.0.0:3080
- ホットリロードのサポート: いいえ
- API ゲートウェイ アドレス。1
ip:port
指定できます。
proxy-protocol
- デフォルト値:
""
- ホットリロードのサポート: いいえ
- 可能な値:
""
、"v2"
- ポートのPROXYプロトコル有効にします。3
"v2"
PROXY プロトコル バージョン 2 を使用することを示し、""
PROXY プロトコルを無効にすることを示します。
ログ
level
- デフォルト値:
info
- ホットリロードのサポート: はい
panic
warn
info
error
debug
- ログ レベルを指定します。レベル
panic
の場合、エラーが発生すると TiProxy はpanicになります。
encoder
デフォルト値:
tidb
以下を指定できます:
tidb
: TiDBで使用される形式。詳細については統合ログ形式を参照してください。json
: 構造化された JSON 形式。console
: 人間が読めるログ形式。
log.ログファイル
filename
- デフォルト値:
""
- ホットリロードのサポート: はい
- ログ ファイル パス。空でない値を指定すると、ファイルへのログ記録が有効になります。TiProxy がTiUPとともに展開されると、ファイル名は自動的に設定されます。
max-size
- デフォルト値:
300
- ホットリロードのサポート: はい
- 単位: MB
- ログ ファイルの最大サイズを指定します。ログ ファイルのサイズがこの制限を超えると、ログ ファイルはローテーションされます。
max-days
- デフォルト値:
3
- ホットリロードのサポート: はい
- 古いログ ファイルを保持する最大日数を指定します。この期間を過ぎると、古いログ ファイルは削除されます。
max-backups
- デフォルト値:
3
- ホットリロードのサポート: はい
- 保持するログ ファイルの最大数を指定します。 超過数に達すると、余分なログ ファイルは自動的に削除されます。
安全
[security]
セクションには、名前の異なる TLS オブジェクトが 4 つあります。これらは同じ構成形式とフィールドを共有していますが、名前に応じて解釈が異なります。
[security]
[sql-tls]
skip-ca = true
[server-tls]
auto-certs = true
すべての TLS オプションはホットリロードされます。
TLS オブジェクト フィールド:
ca
: CAを指定するcert
: 証明書を指定しますkey
: 秘密鍵を指定するauto-certs
: 主にテストに使用されます。証明書またはキーが指定されていない場合は証明書を生成します。skip-ca
: クライアント オブジェクト上の CA を使用した証明書の検証をスキップするか、サーバーオブジェクト上のサーバー側の検証をスキップします。min-tls-version
: 最小の TLS バージョンを設定します。可能な値は1.0
、1.1
、1.2
、および1.3
です。デフォルト値は1.2
で、v1.2 以上の TLS バージョンが許可されます。rsa-key-size
:auto-certs
が有効な場合に RSA キー サイズを設定します。autocert-expire-duration
: 自動生成された証明書のデフォルトの有効期限を設定します。
オブジェクトは名前によってクライアント オブジェクトまたはサーバーオブジェクトに分類されます。
クライアント TLS オブジェクトの場合:
- サーバー証明書の検証をスキップするには、
ca
またはskip-ca
設定する必要があります。 - オプションで、サーバー側のクライアント検証に合格するために
cert
またはkey
設定できます。 - 役に立たないフィールド: 自動証明書。
サーバーTLS オブジェクトの場合:
- TLS 接続をサポートするには、
cert
、またはkey
auto-certs
いずれかを設定できます。それ以外の場合、TiProxy は TLS 接続をサポートしません。 - オプションとして、
ca
が空でない場合、サーバー側のクライアント検証が有効になります。クライアントは証明書を提供する必要があります。または、skip-ca
が true でca
が空でない場合、サーバーはクライアント証明書が提供された場合にのみクライアント証明書を検証します。
cluster-tls
クライアント TLS オブジェクト。TiDB または PD にアクセスするために使用されます。
require-backend-tls
- デフォルト値:
false
- ホットリロードのサポート: はい、ただし新規接続のみ
- TiProxy と TiDB サーバー間の TLS が必要です。TiDBサーバーがTLS をサポートしていない場合、クライアントは TiProxy に接続するときにエラーを報告します。
sql-tls
クライアント TLS オブジェクト。TiDB TiDB SQLポート (4000) にアクセスするために使用されます。
server-tls
サーバーTLS オブジェクト。SQL ポート (6000) で TLS を提供するために使用されます。
server-http-tls
サーバーTLS オブジェクト。HTTP ステータス ポート (3080) で TLS を提供するために使用されます。