2020 年 08 月 24 日
クラウドを使っても障害対策って必要なの?
はじめに
最近ではさまざまなサービスで AWS や Azure などのクラウドサービスが使われています。クラウドサービスは、電源やネットワークなどのインフラの管理、サーバーなどの物理的な機器の管理を任せることができ、気軽にシステムを構築できるとても便利なものとなっています。しかし、クラウドサービス上にシステムを構築していくため、どうしてもクラウドサービスが正常に動いている前提での構築となってしまう場合もあります。クラウドサービスは落ちないものと思われるかもしれませんが、実際には違います。システムの障害を完全に防ぐことは出来ませんが、それぞれの原因に対して対策を講じることは可能です。
本ブログのシリーズでは、クラウドサービス上に構築したシステムの障害対策を紹介していきます。まず本記事では、クラウドサービス上にシステムを構築した時に起きる障害の原因や、障害に対する対策を確認してみましょう。
障害の原因
クラウドサービス上に構築したシステムに起きる障害には、クラウドサービスが原因のものと、ユーザーの構築したシステムが原因のものに分けれられます。それぞれの原因について確認してみましょう。
クラウドサービスが原因の障害
クラウドサービスが原因の障害として、データセンターにある機器の、電源の喪失やネットワークの断絶、物理的な故障などが挙げられます。クラウドサービスを利用しているとどうしても忘れてしまいますが、構築したシステムは実際のデータセンター上の物理的なサーバー上で動いています。そのため、何らかの出来事によって機器に異常が発生し、システムが停止することがあります。クラウド サービス提供側は、サービスのダウンタイムが発生しないように様々な対策を行っています。しかし、データセンターで物理的な機器が動作している以上、物理的な原因の障害が完全になくなることはありません。
実際に様々なクラウドサービスで、クラウドサービス側が原因の障害が発生しています。2019 年 8 月に AWS の東京リージョンで起きた障害は、データセンターの冷却システムの障害によりオーバーヒートが発生したことが原因でした。他にも、Azure や IBM Cloud などのサービスでも過去に障害が発生しています。
これらのクラウドサービスが原因の障害には、クラウドサービス提供側が対応を行います。そのため、起きてしまったらどうしようもないものと思われるかもしれません。しかし、クラウドサービスが原因の障害に対しても事前に対策を行うことが出来ます。実際の対策については記事の後半で説明します。
ユーザーの構築したシステムが原因の障害
ユーザーの構築したシステムが原因の障害として、システムのバグや、システムで使用しているサービスのクラッシュなどが挙げられます。これらの障害は、オンプレミスで構築した場合にも起こりえる障害です。そのため、ユーザー自身で対処する必要があります。
障害への対策
どちらの原因の障害も完全に防ぐことは不可能です。しかし、障害が起きることを事前に考慮し、影響を最小限に抑えることは可能です。そのためには、障害に強いシステムの構築や、事前の対策が重要になってきます。それでは実際に行える障害対策の例を確認してみましょう。
システムを複数のデータセンターに分散させる
まずは、クラウドサービスで提供されている機能を使い、複数のデータセンターに分散してシステムを構築するという対策です。複数のデータセンターに分散させることで、あるデータセンターで障害が発生しても、別のデータセンターに構築しているシステムでサービスを継続することができます。これらは、AWS ではアベイラビリティゾーン、Azure では可用性ゾーンといった名前で提供されています。SLA (Service Level Agreement) に、その機能を使った場合のサービス稼働率が定義されているほど、推奨されている機能です。
システムの監視を行う
次に、構築したシステムの監視を行う方法です。安定したサービスを提供するために、システムに障害が起きていないか監視を行います。クラウドサービスの上にユーザーが構築するシステムは、ユーザーごとに異なります。そのため、クラウドサービスで提供されている機能のみでは監視が難しい場合もあります。その場合、ユーザーが独自に監視ソフトの導入を行うこともできます。
障害発生時に自動で復帰させる
最後に、障害発生時に自動でシステムを復帰出来るように設定を行う方法です。これは、クラウドサービスで提供されている機能でも行うことができ、障害発生時は別のデータセンターでシステムを起動し直すなどの設定を行うこともできます。また、独自にソフトを導入することで、システム内で動いているサービス単位での再起動を行うこともできます。
おわりに
本記事では、障害の原因と障害への対策方法を紹介しました。障害を完全に防ぐことは不可能なため、対策を行い影響を最小限に抑えることが重要となります。
次回以降は、本記事で紹介した対策方法を実際に AWS 上で構築していきます。クラウドサービスの機能を使用した可用性の向上だけでなく、独自にソフトを導入したシステムの監視と自動復帰などの、クラウドサービスの機能のみでは難しいことも行います。他にも、HA クラスタの構築などを行っていきますので、どうぞご期待ください!