FIG-110

冗長化構成 — 2人同時に戦うか、ベンチで交代を待つか

インフラ 2026.10.02 公開 読了 約10分

サーバーは、いつか必ず壊れます。1台だけで動かしていると、その1台が止まった瞬間にサービスも止まります。そこで同じ役目のサーバーを2台以上用意しておくのが冗長化です。

たとえるなら2人のヒーローです。2人が同時に戦うやり方(アクティブ-アクティブ)と、1人が戦い、もう1人はベンチで交代を待つやり方(アクティブ-スタンバイ)があります。待つ側も、準備運動をして待つ(ホット)か、家で寝て待つ(コールド)かで、交代にかかる時間がまるで違います。図1で、3つの構成のヒーローを1人ずつ倒してみてください。

REDUNDANCY — 1人倒れたとき、何秒で、何件失って、残りで支えきれるか
👥 利用者
🔀 LB
振り分け役
🦸
A号 戦闘中
0件/秒 0%
🦸
B号 戦闘中
0件/秒 0%
✅ 成功 0
✕ 倒れたサーバーへ送って失敗 0
⚠ 限界を超えてあふれた 0
構成 交代まで その間に失った 1人倒れた後の負荷 ふだんの費用
同時に戦う — — — 2台分(2台とも働く)
ホット — — — 2台分(1台は待つだけ)
コールド — — — 1台分+予備の置き場
図1 — 点1つがリクエスト1件。LBはヘルスチェックで生死を確かめるので、倒れたことに気づくまで約1.5秒かかる

待っている側が「温まっている」ほど、交代は速い

アクティブ-スタンバイでは、ふだん戦うのは1人だけです。もう1人は、A号が倒れたときのためだけに控えています。

ホットスタンバイの予備は、電源が入り、データも本番と同期し続けています。LBが異変に気づいたら、すぐに交代できます。コールドスタンバイの予備は電源が切れているので、起動してアプリを立ち上げ、バックアップからデータを戻すところから始めます。そのあいだ、サービスは完全に止まります。最後のバックアップより後のデータは戻らないこともあります。

そのかわり、コールドはふだんの費用が安い。ホットは、1台がまったく働かないのに2台分の費用を払い続けます。その中間として、電源だけは入れておき、データは定期的にしか送らないウォームスタンバイもあります。どれを選ぶかは「何分までなら止まってもいいか」で決めます。

2人で戦うなら「1人でも勝てる量」まで

アクティブ-アクティブは、ふだんから2台とも働くので無駄がなく、1台倒れてもサービスは一度も全停止しません。失うのは、LBが気づくまでの間に倒れたサーバーへ送った分だけです。

ただし落とし穴があります。通常時のアクセスを14件/秒にして、もう一度倒してみてください。2台で7件ずつ分けていたときは余裕でしたが、1台になると限界10件/秒のところへ14件が押し寄せ、あふれ続けます。2台とも働かせるなら、1台が倒れても残りで全部さばける量までしか、ふだん使ってはいけないのです。必要な台数に1台足しておく考え方をN+1と呼びます。

用語ミニ辞書
冗長化
同じ役目の機器を複数用意し、1つが壊れても止まらないようにすること。
アクティブ-アクティブ
全台がふだんから処理を受け持つ構成。1台倒れたら残りが引き受ける。
アクティブ-スタンバイ
1台だけが処理し、残りは交代要員として待つ構成。
ホット / コールド
待機側がすぐ動ける状態か(ホット)、電源から入れる必要があるか(コールド)。中間がウォーム。
フェイルオーバー
壊れた機器から、予備や残りの機器に処理を切り替えること。
ヘルスチェック
LBなどが定期的にサーバーへ問い合わせ、生きているかを確かめること。
N+1
必要な台数(N)に予備を1台足しておく設計。1台倒れても能力が足りる。

まとめ

冗長化は「予備を持つ」だけでは終わりません。予備がどれだけ温まっているかで交代の速さと費用が決まり、全員を働かせるなら、1人倒れても足りる力を残しておく必要があります。同時に戦う双子のヒーローも、ベンチで待つ控えも、1人いなくなった後の戦いを前提に組むのです。