HTTP API / Gehirn ID Center 接続障害
Incident Report for Gehirn Web Services
Postmortem

障害期間

2019 年 10 月 15 日 14 時 16 分 - 2019 年 10 月 15 日 14 時 25 分

障害内容

Gehirn Web Services が提供する HTTP API で HTTP 503 Service Unavailable エラーにより利用できない状況が発生しました。また、 Gehirn MTA SMTP API ではメール送信の際の SMTP AUTH コマンドにて正しいクレデンシャルを利用してもエラーとなり認証に失敗する状況が発生しました。

さらに、 Gehirn Web Services ウェブコンソール及び Gehirn ID Center でも HTTP 503 Service Unavailable エラーにより利用できない状況となりました。

なお、 Gehirn RS2 Plus をご利用中のお客さまのアカウント及びサイト、 Gehirn DNS をご利用中のお客さまの名前解決、 Gehirn MTA をご利用中のお客さまのメール受信及び Gehirn EDJ を利用したイベントの受信には影響はありませんでした。

障害原因

Gehirn Web Services が内部で利用する自動デプロイシステム自体の更新を実施いたしました。この更新は正常に実行されましたが、このデプロイシステムを構成する複数のコンポーネントが初期化のために最大で通常の 40 倍以上の CPU リソースを消費する状況が発生しました。

このデプロイシステムは Gehirn Web Services の各サービスとは同一オーケストレーションクラスターの専用ノードにて運用しておりましたが、当該オーケストレーションシステム上で稼働する各サービスの死活監視はオーケストレーションクラスターの任意のノードから実施されており、デプロイシステムシステムの初期化により CPU リソースが枯渇したノードから実行された死活監視はタイムアウトにより偽陽性のサービスダウンが検出されるようになりました。

この偽陽性により Gehirn Web Services の各サービスのインスタンスは次々とロードバランサーの配下から外され、やがてキャパシティ不足により正常にリクエストを処理できない状況となりました。オーケストレーションシステムはこの状況を検知して自動的にキャパシティ追加を試みましたが、問題のあるノードで実行された死活監視が新規作成されたインスタンスに対しても偽陽性サービスダウンを報告し続けたためにキャパシティが回復することはありませんでした。

このような状況が継続しておりましたが、デプロイシステムの初期化の完了により CPU リソースの消費が落ち着き、死活監視システムも正常な動作を行えるようになったためにキャパシティの追加が成功するようになり障害が収束しました。

再発防止

本障害を引き起こす原因となったデプロイシステムに対する CPU リソースの割当を見直しました。初期化中も過分な CPU リソースが割り当てられないように調整し、実際に効果を確認いたしました。

今後の予定として Gehirn Web Services の各サービスが稼働するオーケストレーションクラスターとデプロイシステムが稼働するオーケストレーションクラスターを分離し、さらなる安定化を図ります。

また、死活監視システムがロードバランサーからインスタンスを切り離す閾値を見直し、死活監視システムの本来の目的である障害からの迅速な回復を維持しつつ、偽陽性に対する堅牢性の向上を図ります。

この度はお客さまにご迷惑・ご不便をおかけいたしましたことをお詫び申し上げます。同様の障害の発生の防止と発生してしまった障害のダウンタイムを最小化するために引き続き取り組んで参ります。

Posted Oct 16, 2019 - 21:01 JST

Resolved
障害の原因を CPU スパイクとそれによる死活監視の失敗(偽陽性)によるものと断定しました。再発防止に向けリソースの割当の見直しやワークロードの隔離などに継続して取り組んで参ります。
Posted Oct 15, 2019 - 16:59 JST
Investigating
各サービスが稼働する共通のネットワークにおいて障害が発生し、同時多発的にサービスが通信不能となりました。現在はサービスが自動回復し利用可能となっておりますが、障害の原因を調査しております。
Posted Oct 15, 2019 - 14:40 JST
This incident affected: Gehirn MTA (HTTP API, SMTP API), Gehirn RS2 Plus (HTTP API), Gehirn DNS (HTTP API), Web Console, and Gehirn EDJ (HTTP API).