ticketing.toml(任意)の各項目はすべて環境変数としても指定できます。優先順位は環境変数 > ticketing.toml > デフォルト値で、キー・ブール値は大文字小文字を区別しません。Dockerイメージはscratch ベースのため、設定は環境変数で注入するのが基本です(設定ファイルを使う場合はマウント後にCONFIGでパスを指定)。
| 環境変数 | デフォルト値 | 説明 |
|---|---|---|
PORT(SERVER_PORT) | 5225 | TCPリッスンポート。クラスターモードでは無視され、CLUSTER_SELFのポートを使用 |
DEBUG(SERVER_DEBUG) | ビルドに依存 | 1/trueならdebugログ |
SOCKET_BIND | 0.0.0.0 | リッスンアドレス |
SOCKET_NODELAY | true | TCP_NODELAY |
SOCKET_READ_BUF_LEN | 4096 | 接続ごとの読み取りバッファ(バイト) |
SOCKET_REPLY_QUEUE | 1024 | 接続ごとの応答キューの長さ |
SOCKET_REPLY_BATCH | 64 | 1回のwriteでまとめて送る最大応答数 |
SWEEP_INTERVAL_SECS | 5 | 期限切れキーの掃除周期(秒) |
CLUSTER_SELF | (なし) | このノードの広告アドレスhost:port。設定するとクラスターモード |
CLUSTER_PEERS | (なし) | ノードアドレスのリスト(カンマ区切り)。順序 = 昇格の優先順位、selfを含み2つ以上 |
CONFIG | ./conf/ticketing.toml | 設定ファイルのパス |
[cluster](またはCLUSTER_*)がなければシングルノードです。最も高速ですが、再起動時に短い 瞬断があり、状態はインメモリのため再起動すると消えます(leaseが安全網になります)。CLUSTER_PEERS(優先順位順)と、自分自身を 指すCLUSTER_SELFを持ちます。生存しているノードのうち優先順位が最も高い1台がアクティブになり、 残りはスタンバイとしてリアルタイムでレプリケーションを受けます。詳しい原理は動作原理と プロトコル — サーバー間を参照してください。KubernetesクラスターのデプロイにはStatefulSet + ヘッドレスサービスを使用します。各Podが安定した DNS名(
ticketing-0.ticketing…、ticketing-1.ticketing…)を持つようにし、それらの名前を優先順位順にCLUSTER_PEERSに入れ、各PodのCLUSTER_SELFはdownward API(metadata.name)で自動注入します。
Ctrl+C)すると、ハンドオフによりスタンバイが昇格し、クライアントが切り替わります。sarolab/ticketing · Github: saro-lab/ticketing