kisenon

エンドポイント

アイドル時サスペンドの Postgres フロントエンド — 種類、ライフサイクル、起動のセマンティクス。

エンドポイント は、クライアント接続を受け付ける Postgres プロセスです。エンドポイント はエフェメラルです。アイドル時にサスペンドし、最初のパケットで起動し、プロジェクトの分離 されたストレージ層の上で動作します。コンピュートが実際に動作している秒数の分だけ支払います。

種類

種類書き込み?使うべき場面
rwはいデフォルト。アプリトラフィック、マイグレーション、変更を伴うあらゆるもの。典型的なワークロードでは、ブランチごとに 1 つの rw エンドポイントで十分です。
roいいえ読み取りレプリカ。複数の ro エンドポイントが同じブランチにアタッチしてストレージを共有できます。ローカルキャッシュは独立したままです。分析トラフィックをアプリトラフィックから分離するのに使います。

どちらの種類も正確に 1 つの ブランチ にアタッチします。エンドポイントは 別のブランチへ移動できません。代わりに対象のブランチ上に新しいエンドポイントを作成してくだ さい。

アイドル時のサスペンド

エンドポイントは、設定可能なクライアント活動なしのウィンドウの後にサスペンドします。デフォ ルトは 300 秒(5 分)です。それを上書きするには作成時に suspend_after_seconds を設定しま す。新しいウィンドウは、エンドポイントの次のアイドル期間で有効になります。

サスペンド中は次のとおりです。

  • コンピュートポッドは消えています。CPU もメモリも課金されません。
  • ストレージは影響を受けません。あなたのデータは pageserver に耐久性をもって保存されてい ます。
  • エンドポイント id と接続文字列は有効なままです。

起動

サスペンドしたエンドポイントにパケットを送ると起動します。コールドスタートのレイテンシは、 クラスタがウォームな pageserver キャッシュを持っていれば通常 300〜500 ミリ秒です。長いアイド ルの後(または新しいプロジェクトの後)の一番最初の起動は、pageserver のページキャッシュが 温まる間、10〜30 秒かかる場合があります。標準的な Postgres ドライバは、典型的な構成ではこれ をタイムアウトとして認識しません。認識する場合は トラブルシューティング を参照してください。

日常的な起動が高速なのは、プラットフォームが需要に先んじてウォームアップ済みのコンピュート プールを保つからです。起動は通常、ゼロからブートするのではなく、すでに動作中のコンピュート にアタッチします。このプールを管理したり料金を支払ったりすることはありません。エンドポイント がどれだけ速く戻ってくるかに影響するだけです。

ステートマシン

エンドポイントは次の状態を遷移します。

Pending → Starting → Running → Stopping → Stopped → (Failed)
  • Pending — コントロールプレーンが作成リクエストを受け付け、コンピュートポッドをスケジュ ールしています。ここで数秒以上スタックしているエンドポイントが見えたら、 トラブルシューティング を参照してください。
  • Starting — コンピュートポッドが起動しています。Postgres が初期化し、ブランチの HEAD まで WAL をリプレイしています。
  • Running — クライアント接続を受け付けています。
  • Stopping — アイドルウィンドウが経過しました。接続をドレインし、ローカル状態をフラッ シュしています。
  • Stopped — サスペンド済み。次のパケットによる起動を待っています。
  • Failed — 終端エラー。エンドポイントカードに理由が表示されます。まれですが、スケジュー リングが失敗したり、コンピュートイメージが起動できなかったりすると発生します。

接続 URI

ワイヤー形式は 接続文字列 に記載されています。

postgresql://<role>:<pwd>@<endpoint_id>.kisenon.com:5432/<database>?sslmode=require

ホスト名はプロジェクト id ではなくエンドポイント id から導出されます。各エンドポイントは 独立して TLS を終端します。TLS は必須です。

作成

keon endpoints create --branch <branch-id> --type rw

オプションのフラグ:

  • --suspend-after-seconds <n> でデフォルトのサスペンドウィンドウを上書きします。
  • --type ro で読み取り専用エンドポイントにします。

CLI はエンドポイント id と接続文字列を返します。呼び出しが返ってから数秒以内に、エンドポイ ントは Running となり接続を受け付ける準備が整います。

削除

keon endpoints delete <endpoint-id>

開いているクライアント接続は切断されます。エンドポイント id は廃止され、その DNS ホスト名は 名前解決されなくなります。ブランチとそのデータは影響を受けません。

関連