ソーリーサーバーとは?障害時に謝り続ける待機系の役割

システム開発・テクノロジー
ソーリーサーバーとは?ざっくりと3行で
  • 本番サーバーが障害やアクセス集中で応答不能になったとき、代わりにユーザーへ「現在メンテナンス中です」などの謝罪ページを見せるための待機サーバーのこと
  • ロードバランサーやDNSが障害を検知すると、自動的にソーリーサーバーへトラフィックを切り替えるフェイルオーバーの仕組みが動く。ユーザーは真っ白なエラー画面を見ずに済む
  • 静的なHTMLしか返さないため、超軽量なサーバーで十分機能する。大規模障害時でもソーリーサーバー自身は落ちにくい構成が重要だ

【深掘り】これだけ知ってればOK!

ソーリーサーバーは和製英語だ。英語では「Maintenance Page Server」や「Error Page Server」と表現することが多い。日本のWebサービスでは昔から「大変申し訳ございません」から始まる謝罪文が掲載されることが多かったため、現場スラングとして定着した。

ソーリーサーバーの動作原理は「平常時は待機、異常時に出番」という構成だ。平常時、ユーザーのリクエストはすべて本番サーバー群へ送られる。ソーリーサーバーは待機状態にあり、直接リクエストを受けることはない。しかし本番サーバーが障害やアクセス集中で応答不能になると、ロードバランサーがその異常を検知し、リクエストをソーリーサーバーへ自動的に振り向ける。この切り替えをフェイルオーバーと呼ぶ。

ソーリーサーバーが返すコンテンツは意図的にシンプルに設計される。静的なHTMLとCSSだけで構成され、データベースへの接続も画像の動的生成もない。これは「障害時に最も信頼できるのは最もシンプルな構成」という原則に基づいている。本番サーバーが重い処理で落ちているとき、同じく重い処理を持つソーリーサーバーもつられて落ちてしまっては意味がない。

ソーリーサーバーのHTTPステータスコードは503(Service Unavailable)を返すのが正しい設定だ。200(OK)を返してしまうと検索エンジンがソーリーページをサイトの正式コンテンツとして扱い、インデックスしてしまうリスクがある。503と合わせて「Retry-After」ヘッダーで復旧予定時刻を伝えれば、Googlebot等が次回クロールのタイミングを調整してくれる。

設置コストが低いこともソーリーサーバーの特徴だ。さくらのクラウドやAWSなどのクラウド環境では、最小スペックのインスタンスにApacheとシンプルなHTMLを置くだけで構築できる。年間のほとんどの時間は待機しているため、費用対効果が高い保険として機能する。障害対応マニュアルと同じ棚に「ソーリーサーバーの存在」を置いておくことが重要だ。

よくある誤解

ソーリーサーバーとメンテナンスページは同じだという誤解

メンテナンスページは計画的な作業前に手動で切り替えるものだが、ソーリーサーバーは障害発生を自動検知して自動切り替えする点で異なる。手動切り替えか自動フェイルオーバーかという違いが本質だ。メンテナンスページはソーリーサーバーに乗せることが多いが、それはあくまで同じ仕組みを流用しているだけだ。

ソーリーページをHTTP 200で返してしまうケース

ステータスコード200で謝罪ページを返すと、検索エンジンはそのページを通常コンテンツとして扱う。結果として本番ページが検索インデックスからソーリーページに差し替えられるSEO被害が起きることがある。503+Retry-Afterヘッダーの組み合わせが正しい設定で、これは障害対応マニュアルに明記しておく価値がある。

会話での使われ方

ITKAGYO運営者デプロイ太郎のアイコン画像

本番サーバーが落ちました。ソーリーサーバーへの切り替えは自動で動いてますか?確認をお願いします。

深夜の障害対応でインフラリーダーが担当者にSlackで緊急確認している場面。フェイルオーバーが正常動作しているかを真っ先に確認する状況だ。

ITKAGYO運営者デプロイ太郎のアイコン画像

ソーリーサーバーのステータスコード、200で返してませんか?SEOに影響が出るので503に変えてください。Retry-Afterも合わせて設定が必要です。

エンジニアがインフラ担当にコードレビュー後の1on1で指摘している場面。謝罪ページのステータスコード設定ミスはSEO被害につながるため重要だ。

ITKAGYO運営者デプロイ太郎のアイコン画像

今回のリニューアルでソーリーサーバーのデザインも一新したいです。障害中でもブランドらしい謝罪ページを出したいので。

Webリニューアルの要件定義ミーティングでブランドマネージャーがエンジニアに要望を伝えている場面。ユーザー体験の観点からソーリーページのデザインにも投資する方針だ。

【まとめ】3つのポイント

  • 本番障害時の顔として機能する待機サーバー:ソーリーサーバーはロードバランサーが障害を検知すると自動的に前面に出て、ユーザーに状況を伝える役割を担う
  • 503+Retry-Afterが正しいステータス設定:200で返すと検索エンジンに誤認されSEO被害が起きるため、503とRetry-Afterヘッダーのセット設定がインフラの常識だ
  • シンプルな構成こそ最強の耐障害性:静的HTMLだけで動く軽量構成にすることで、本番障害に引きずられずソーリーサーバー自身が生き残れる設計が求められる

よくある質問

Q
ソーリーサーバーは自分で用意しないといけませんか?
A

クラウドサービスによっては標準機能として提供されているケースがあります。AWS Application Load Balancerではターゲットが全台ダウンした際にカスタムのエラーレスポンスを返す設定が可能です。さくらのクラウドのGSLBでもソーリーサーバー設定に対応しています。自前のオンプレミス環境では最小スペックのサーバーに静的HTMLを置いてロードバランサーのフェイルオーバー先に指定するのが一般的です。

Q
ソーリーサーバーへの切り替えにどのくらい時間がかかりますか?
A

ロードバランサーのヘルスチェック設定次第です。一般的にはヘルスチェックが失敗した回数が閾値を超えた時点でフェイルオーバーが発動するため、数秒〜数十秒程度かかります。ヘルスチェック間隔を短く・失敗回数の閾値を小さくすれば切り替えを速くできますが、誤検知が増えるトレードオフがあります。

Q
ソーリーページにお問い合わせフォームを設置しても良いですか?
A

避けた方が賢明です。ソーリーサーバーはシンプルな静的ページであることが信頼性の源泉で、フォームを動かすにはPHPやデータベース接続が必要になり、障害連鎖のリスクが高まります。代わりにSNS公式アカウントのURLや、別ドメインで運営するステータスページへのリンクを記載するのが実務での定石です。

Q
ソーリーサーバーとロードバランサーの違いは何ですか?
A

役割がまったく異なります。ロードバランサーは複数のサーバーへトラフィックを振り分ける交通整理係で、ソーリーサーバーは振り分け先が全滅したときに出動する最後の砦です。ロードバランサーがソーリーサーバーへの切り替えを判断・実行し、ソーリーサーバーがユーザーへ謝罪ページを返すという連携で機能する関係にあります。

この用語と一緒に知っておきたい用語

用語この記事との関連
サーバーサーバーを押さえると本記事の理解がさらに深まります。ネットワークを通じて情報やサービスを提供する側のコンピューターのこと。レストランで料理を運んでくれる給仕係(server)をイメージするとわかりやすいよ
フェイルオーバーフェイルオーバーを押さえると本記事の理解がさらに深まります。システムや機器に障害が発生したとき自動的にスタンバイ機・バックアップシステムに切り替えてサービスの継続を実現する仕組みのこと
検索エンジン検索エンジンとの関係を知ると全体像がつかみやすくなります。調べたい言葉を入れると、世界中のWebページから関連するものを探し出して一覧で示してくれる仕組み、それが検索エンジンだ
アイコンアイコンを押さえると本記事の理解がさらに深まります。アプリやファイル、操作ボタンなどをひと目でわかる小さな絵で表したもの、それがアイコンだ
データベースデータベースは関連分野でよく登場する重要キーワードです。データを効率よく蓄積・検索・更新・削除できるよう構造化して管理する仕組みの総称。専用エンジンを持ち大量データを高速操作できる

【出典】参考URL

https://e-words.jp/w/Sorry%E3%82%B5%E3%83%BC%E3%83%90.html :IT用語辞典 e-Words「Sorryサーバ」
https://app.engr-sng.com/glossary/detail/sorry-server :ソーリーサーバーの動作原理の詳細解説
https://knowledge.sakura.ad.jp/5466/ :さくらのナレッジ「ソーリーサーバの設定方法」

コメント

「IT用語、難しすぎて心が折れそう……」という方のための、ハードル低めな用語辞典です。

情報レベルは「基礎中の基礎」。会話を止めないためのエッセンスだけを抽出しています。分かりやすさを追求するあまり、時々例え話が暴走しているかもしれませんが、そこは「ほどよく」聞き流していただけると幸いです。
ほどよくIT用語辞典システム開発・テクノロジー
デプロイ太郎のSNSを見てみる!!