【コネクションドレイニング】

コネクションドレイニング とは?

最終更新:
💡 受付を切り替え、進行中の仕事に終了の猶予を

ロードバランサーからサーバーを外す際、既存の接続や処理に終了までの猶予を与える仕組み。新規流入の扱いや猶予後の動作は製品・構成によって異なる。

📌 このページのポイント
外すサーバーへ、終了の猶予 ロードバランサー 稼働中のサーバー 新規の流入 外すサーバー 既存の接続・処理に猶予 除外開始 猶予の期限 処理完了の保証ではない
新規流入を切り替え、外すサーバーの既存処理を待つ。動作や期限後の扱いは構成による。
ひよこ ひよこ
コネクションドレイニングって何なの?
ペンギン先生 ペンギン先生
サーバーをロードバランサーから外すとき、処理中の通信をすぐ切らずに、終わるまでの猶予を与える仕組みだよ。デプロイや台数を減らす場面で使うんだ。
ひよこ ひよこ
新しいアクセスは全部止めるの?
ペンギン先生 ペンギン先生
サービス全体を止める意味ではないよ。外すサーバーへの新規流入を抑え、ほかのサーバーへ振り分ける。ただし製品や接続方式によって動作が違い、既存の接続を使って新しいリクエストが届く場合もあるんだ。
ひよこ ひよこ
AWSの「登録解除の遅延」はこれ?
ペンギン先生 ペンギン先生
AWS ALBではその設定が対応していて、既定値は300秒だよ。対象への新規振り分けを止め、既存のリクエストに猶予を与える。処理や接続がすでにない場合は、終了を待つ必要がないんだ。
ひよこ ひよこ
猶予があれば、必ずエラーを防げる?
ペンギン先生 ペンギン先生
保証はできないよ。長い処理が猶予内に終わらないこともあるし、サーバーを先に止めると通信が切れる。タイムアウト後の接続の扱いも、ロードバランサーの種類によって違うんだ。
ひよこ ひよこ
ペンギン先生 ペンギン先生
ドレイニングは主にロードバランサー側の流入や接続の制御。グレースフルシャットダウンはアプリ自身の終了処理だよ。流入を減らす時点とアプリを止める時点を合わせ、途中の処理をなるべく切らないようにするんだ。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「コネクションドレイニング」って出てきたら「サーバーを外すとき、既存の処理に猶予を与える仕組み」と思えればだいたいOK!
📖 おまけ:英語の意味
「Connection Draining」 = 接続の排出
💬 drainは「排水する」という意味だよ。接続を減らして終了へ向かわせるイメージで、すべての処理が必ず終わるという意味ではないんだ。

参考資料

← 用語集にもどる