byClassmethod検索AWSAlexaモバイルビッグデータサーバーレスTableauAlteryxイベントSingleAZ配置のEC2インスタンスで障害発生時の影響を最小化するAWS特集EC22019年08月28日にしざわ(126)126126件のシェア(ちょっぴり話題の記事)西澤です。8/23(金)に東京リージョンにおいて大規模な障害が発生し、多くのシステムが影響を受けました。この障害に際して、可用性を担保する設計の重要性を考えさせられた一方で、切り捨てるものを決め、迅速に復旧し、障害の影響を最小限に抑えることも大切なことだと痛感しました。シングル構成のシステムを運用されていて、復旧に苦労された方も、運良く被害に遭わずに済んだ方も、一緒に考える機会となればと思い、考えたところを残しておきたいと思います。前提そもそもAWSのベストプラクティスとしては、すべてのシステムはMultiAZで動作するように設計すべきです。SingleAZ構成で本番システムを運用することは論外ですか?果たしてそうでしょうか?初期コストも運用コストも無限にかけられる状態なのであればもちろんベストプラクティスに即した設計にすることが望ましいですが、そうすることができない環境も当然存在すると思いますし、予算上それを許さないケースも当然あり得ると思います。可用性を維持したいからといって、いたずらにシステムを複雑に構成することが必ずしも良いことではないとも考えています。必要以上に複雑に構成した仕組みによって、障害発生時の切り分けが困難となり、結果として障害からの復旧に時間がかかるようなシステムも数多く目にしてきました。いうことで、今回はEC2が1台のみで動作しているようなシンプルなシステムの運用を想定し、障害が起こったときにどのように対応するのかを整理し、被害を最低限に食い止めたいと考えました。Failure"という言葉を耳にすることが減ったように思いますが、私がAWSに初めて触れたときに衝撃を受けた考え方の1つでした。障害はどんな環境であれ起こるものです。AWSに限らず、どのようなシステムにおいても障害は発生するものという覚悟と準備をしておく必要があります。リージョン単位での障害まで考慮しておくことが理想ではありますが、東京リージョンが全滅するような大規模な天災が起こった際にも存続し続けなければならないシステムもそう多くは無いはずですので、一旦ここでは考えません。Zone単体での障害は発生するものと考えておく必要があります。最低限のバックアップを必ず取得しておく今回の障害で特に個人的にショックが大きかったのは、大規模なEBS障害が発生したことでした。これまでAWSを利用してきた中で、EBSは単一AZで動作するサービスであることは理解しつつも、データが壊れて使えなくなるというようなケースは極めて稀であったという経験から、インスタンス障害によりサービスダウンは発生したとしても、データが消失することはそう発生しないだろうと高をくくっていたところがありました。ここは私自身が認識を改めるきっかけとなりました。お恥ずかしい限りです。ローカルに一切データを持たず、再構築も容易にできるようコード化されているようなシステムで無い限りは、とにかく必ずバックアップを取得しておきましょう。AWSであれば、専用サーバやソフトウェア、サードパーティツールもなしに、簡単にバックアップを取得することができますので、必ずいずれかの方法をご準備いただきたいと思います。バックアップきちんと取ろうね、というこの当たり前のこと、が実はこの記事で最もお伝えしたいことです。具体的な実現方法は、例えば以下からご検討いただければと思います。クラスメソッドクラスメソッドメンバーズのプレミアムプランにご加入のお客様には、かんたんにAMIも取得できるバックアップツール=opswitchがおすすめですリストアする手順について迷いなく実施できるようテストしておく今回のような大規模障害時に発生するオペレーションは、正直すべて自動化できるようなものでは無いと感じています。障害が発生している現場では、Stop->Startも正常に動作しない中で、試行錯誤をしているような状況に陥っていました。そんな環境下でも取得したバックアップからリストアが必要になった際に迷いなく操作できるように事前にテストして操作に慣れ、手順を残しておきましょう。EBSスナップショットからのレストアSingleAZでしか動作しない前提のシステムで障害発生時にできること障害発生直後に、多数のお客様よりお問い合わせをいただきましたが、我々も障害が悪化しているのか、復旧の目処が立っているのか、等の情報をほとんど持ち合わせていない中でお問い合わせ対応を行っていましたが、実際には復旧を待つ以外にできることがほとんどありませんでした。今回の障害も半日程度で(完全ではなかったものの)ほぼ自動復旧したことになります。ユーザからすると、自分から動くことができないのは何とももどかしい時間とはなりますが、オンプレ環境で保守ベンダーを手配して修理を依頼することを考えれば、待つだけで自然に復旧に向かうというのはありがたい限りです。SingleAZでのみ動作すれば良いと割り切ったシステムであれば、ユーザ側で取れる対応は概ね以下となると思います。stop->startを試す(※こちらを試しても正常に動作しないケースが多数発生し、結果待つことになりました)EBSディスク差し替えでのリストアを試すとにかく待ついくつか注意点もありますが、EBSディスク差し替えによるリストアは、インスタンスIDもプライベートIPも既存設定をそのまま流用することができ、オンプレでディスクを抜き差しするのとほぼ同じような操作感覚でリストアすることができますので、ディスク不調による障害の際に試すことができるようにしておくと良いと思います。その際、ブロックデバイスマッピングにてデバイス名だけ間違えないように注意しましょう。EC2インスタンスをインスタンスIDを変えずに復元する別AZへのリストアを想定してテストしておく平時はSingleAZ構成で運用しているシステムも、別AZへのリストアが可能な状態になっていれば、復旧を早めることのできる可能性が一気に広がります。障害が発生しているAZを捨てて、新しい環境をすぐに用意することができます。DevelopersIO実際には、サブネットを変更してリストアをしても問題なく稼働するのかもしれませんが、テストをしたことが無いためにその決断ができないようなケースも多いのではないかと思います。事前にテストを行い、実現可能かどうか把握しておくことも重要です。その他、リストア時の注意事項その他、EC2のリストアを行う際に注意したい点について、思いつく範囲で記載しておきます。DevelopersIOまとめ当初考えていたよりも内容が薄くなってしまったという反省もありますが、少しは頭が整理されたように思います。今回の東京リージョン障害の経験を糧に、より良い設計、運用指針をお客様と一緒に考えて行きたいと考えています。どこかの誰かのお役に立てば嬉しいです。リモート参加もOK〜クラスメソッドでは、AWS・AI・ビッグデータ・モバイルなどの技術職や営業のメンバーとして一緒にお仕事をする仲間を大募集しています。〜ITエンジニアのお仕事とホンネ〜1月30日に新卒向けの会社説明会〜ITエンジニアのお仕事とホンネ〜を開催します。クラスメソッドの関連会社であるアノテーション株式会社の研修として依頼を受け、チームと心理的安全性、それに礼節というテーマで話をしてきました。濱田孝治268「ふわわぁ、眠いな。藤井元貴90Gitリポジトリ内を検索する機会はよくあると思います。grepコマンドを使えば、git管理下のファイルのみを対象としてgrepができます。シンプルなコマンドですが、利便性はとても高いと思います。記事2020年01月20日かずえ81速報です。先程大阪リージョン開設予定がアナウンスされました!!以前から大阪ローカルリージョンという色々と制限がついた特殊なリージョンが存在していましたが、それが拡張され、東京リージョンなどと同じ通常のリージョンになります!2021年初頭開設予定です。武田隆志1143このエントリは、2018年、2019年に公開したAWS全サービスまとめの2020年版です。これまではいくつかに分割して公開していましたが、1エントリにまとめてほしいという要望をもらっていたため、今年は1エントリに集約してみました。クラスメソッドの関連会社であるアノテーション株式会社の研修として依頼を受け、チームと心理的安全性、それに礼節というテーマで話をしてきました。CAFEのサービスが「LINEアプリ」として利用できるようになりました。これまではLINEのトークから利用する形でしたが、LINEサービス内から利用できるようになりました。これまでより便利に、シームレスにご利用いただけます。Cafe326件のシェア(そこそこ話題の記事)インフラ未経験の私が内定から入社までに読んだ技術書11冊ブログ記事2020年01月16日Yui326インフラ未経験で入社した私がインフラを勉強するために読んだ技術書11冊を感想とともにまとめました。濱田孝治268「ふわわぁ、眠いな。クラスメソッド株式会社が運営するAWS・iOS・HTML5に関する技術情報サイトです。