サーバー障害とは?その原因と対策 | 早期検知による影響最小化が重要
システムを動作させるために必須ともいえるサーバー。サーバーに障害が発生した場合、業務の実施やユーザーへのサービス提供において大きな問題に繋がります。一方で、どれだけ対策をしてもコンピューターの宿命として、サーバー障害発生のリスクをゼロにはできないのも事実です。この記事では、サーバー障害の原因や対策に加えて、その影響を最小化するための方法についても解説します。
サーバー障害とは何か
サーバー障害とは、サーバーに何らかのトラブルが発生しその動作を停止してしまう、もしくは適切に動作しなくなってしまうことを指します。
一般的にシステムを運用する上では、ユーザーからのリクエストに対して処理を行い、結果を返すためのサーバーが必要です。システムの運用時間中、サーバーは常に適切に動作し続けることが求められます。
サーバーは物理的なハードウェアやOS、アプリケーションなど様々な要素から構成され、すべてが適切に動作して初めてユーザーが求める処理を実現することができます。サーバーの構成要素のいずれかに問題が発生した場合、サーバーはその動作を停止する、もしくは動作が不安定となることがあります。たとえば、サーバー機器の電源が故障した場合には、サーバーは全ての動作を停止してしまいます。また、何らかの理由でデータベースが動作を停止した場合、データベースを利用するすべての処理は実施できません。
このように、サーバーを構成する様々な要素に問題が発生した場合、その問題に応じてサーバーが本来実施する処理を実現できなくなります。
サーバー障害による影響
サーバー障害の内容にもよりますが、サーバー障害が起きると以下のような影響が発生します。
業務の停止
現代では、業務においてシステムを利用しないケースの方が少ないといえるくらいに、業務とシステムは密接に関係しています。サーバー障害が発生すると、そのシステムを用いる業務が実施できなくなります。
社内で完結する業務はもちろんのこと、取引先も利用するようなシステムである場合、特に影響は大きくなるといえるでしょう。
ユーザーへのサービス提供の停止
Webサイトなど、ユーザーへサービスを提供するようなシステムにおいては、サーバー障害によりサービスが提供できなくなります。自社のコーポレートサイトなど単純な情報提供を行うサイトであれば比較的影響は軽微かもしれませんが、たとえばECサイトが停止した場合にはその期間中の売上が発生しないこととなり、影響は甚大なものとなるでしょう。サブスクリプションでの課金提供の場合、大きなクレームの発生や、停止時間によっては返金等の大きな問題に発展することも十分ありえます。
このように、サーバー障害が発生するとビジネス機会の大きな損失になりかねません。サーバー障害が発生する原因を理解しつつ、適切に対策を行うことが求められます。
サーバー障害が起きる原因とは
それでは、サーバー障害はどのような原因により起きるのでしょうか。サーバー障害の原因は多く存在しますが、ここでは主なものを取り上げてご紹介します。
負荷の集中
ひとつは、負荷の集中によるものです。たとえばWebサイトを提供するためのWebサーバーにおいては、大量のアクセスが発生した場合に処理しきれず、サービスを停止してしまうことがあります。この場合、アクセス数が減るか、もしくはサーバーの処理能力を向上させ対応できる処理量を増やすかしないかぎり、Webサーバーは安定して動作を行うことができません。このようなサービス停止はサーバー障害の主な原因のひとつです。
サーバーのCPUやメモリ、ディスクなどのリソース不足もサーバー障害を引き起こします。たとえば、大量の処理を行ったことによりCPUのリソースが不足してしまい、サーバーが不安定となることがあります。また、想定されている量を超えた大量のデータを取り扱った際には、データベースサーバーやストレージの応答が著しく遅延することもあります。
ハードウェア・ソフトウェアの不具合
電源ケーブルの断線やディスクの故障など、ハードウェアが故障した場合にはサーバー障害が発生してしまいます。求める可用性の水準にもよりますが、このような単純故障によるサーバー障害を防ぐためにも、複数の電源やディスクを用意することにより冗長化することも検討できるでしょう。
また、OSやミドルウェア、アプリケーションにおいて致命的なバグがある場合なども、サーバー障害につながるケースがあります。既知のバグであれば適切な更新プログラムやアップデートの適用により対応することができますが、利用者が少ないミドルウェアなどで発生した未知のバグについては即座に対応することが難しいケースもあり、問題が長期化しやすいといえます。
サイバー攻撃
悪意のある攻撃者がサーバーに対して攻撃を行うことで、サーバー障害が発生してしまうこともあります。たとえば過剰な負荷をかけるDoS・DDoS攻撃や、不正アクセスによるWebサイトの書き換え、SQLインジェクションによるデータの破壊など、サーバーは様々な攻撃を受ける可能性があります。
特にDMZ(DeMilitarized Zone:非武装地帯)に設置しているWebサーバーなど、外部からアクセスしやすいサーバーには注意が必要です。このようなサーバーは悪意のある攻撃者にとってもアクセスしやすいため、十分にセキュリティ対策を行う必要があります。
作業ミス
新機能のリリース作業や手作業による運用作業において作業ミスが発生してしまい、結果としてサーバー障害につながってしまうケースもあります。たとえば、Webサーバーを誤って設定してしまったことにより、利用者にサービスを提供できなくなってしまうことも。
また、現代ではほぼすべてのWebサイトがHTTPS対応を行っていますが、HTTPS化するために必要となるSSL証明書の更新漏れもよくあるミスです。SSL証明書には有効期限があり、期限を過ぎてしまうと、利用者からはSSL証明書を偽造した悪意のあるサイトと見分けがつかない状態となり、アクセスを避けられてしまいます。
サーバー障害を防ぐための対策
それでは、このようなサーバー障害が発生する原因に対してはどのような対策を行うべきなのでしょうか。
インフラ増強
負荷の集中によるサーバー障害を防ぐためには、インフラを増強するという方法があります。たとえば、ロードバランサの導入による負荷分散はその一つです。オンプレミスでサーバーを利用しており、サーバーの保守期限を迎える場合は、よりスペックの高いサーバーに入れ替えることも検討できるでしょう。このようなリソース増強は一つの選択肢です。
また、スケーラブルなクラウド環境を利用することで、コンピューティングリソースやストレージの増加に対応しやすくする方法も考えられるでしょう。クラウド環境を利用することで、リソースを拡張しやすくなります。
冗長化
ハードウェアの不具合への対策としては、各種部品の冗長化が有効です。たとえば電源・ケーブルの冗長化や、RAIDによるディスクの冗長化などが考えられます。
また、特に重要度の高いシステムについては、待機系の構築による障害発生時の切り替えなども有効な手段といえます。広域災害を念頭に、遠隔地に待機系を構築するいわゆるDR(Disaster Recovery)も選択肢となります。
セキュリティ強化
サイバー攻撃への対策としては、セキュリティの強化が必要です。たとえばIPS/IDSなどのセキュリティ対策機器を導入したり、定期的なペネトレーションテストを実施したりすることが有効となります。
セキュリティ対策においては「弱いところを作らない」ということが重要です。悪意のある攻撃者は、システムの弱いところを狙って内部に侵入することができてしまいます。一度内部に入ってしまえば、そこから先はあたかも内部のユーザーとして適切な権限を持っているように振る舞えるため、攻撃者は機密情報を盗んだり、証跡となるログデータを削除したりと「やりたい放題」できてしまいます。
よって、自社でセキュリティ基準を設定し、各システムのセキュリティ水準を底上げしていくことが重要です。
マニュアル化
作業ミスを防ぐためには、作業のマニュアル化が有効です。作業手順書を詳細に作成することで、作業の属人性を排除し、確実な作業を実現します。また、作業の実施者とは別に確認者を設けるなど、ダブルチェックを行うことも効果的です。
特に定常的な作業については、自動化が有効な手段となります。近年では、RPA(Robotic Process Automation)やRBA(Run Book Automation)など自動化の手法も発展しています。自動化により、人的なミスによる障害を減らすことができます。
サーバー障害による影響を最小化するためには早期の検知が重要に
一方で、これらの対策を行ったとしてもサーバー障害を完全に防ぐのは難しいのが現実です。それはなぜでしょうか?
サーバー障害を完全に防ぐのは難しい
サーバー障害を防ぐための各種対策を行うことで、サーバー障害の発生率を下げることはできるものの、サーバー障害をゼロにすることはできません。一例をあげると、たとえばどれだけ丁寧にマニュアル化を行ったとしても作業ミスは起きてしまうでしょう。
また、サーバー障害の発生率を下げる対策にはコストがかかります。たとえば冗長化を行えば行うほど故障時のリスクは下げられますが、その分コストは高くなってしまいます。
加えて、OSやミドルウェアなど自社で開発していない領域においてバグが発生することは避けられません。
このように、サーバー障害を完全に防ぐことは難しく、また発生率を下げようとすればするほどコストがかかってしまうという問題があります。
影響を最小化するための取り組みが必要
サーバー障害をゼロにすることはできない以上、サーバー障害の影響を最小化するための取り組みが重要となります。
サーバー障害の影響を最小化するためには、早期検知・早期復旧が基本です。システムの監視により早期に障害を検知し、その障害原因を速やかに把握します。その後、障害の原因を取り除き、システムを再稼働させます。
このような取り組みを行うためには、性能の良い運用監視ツールの導入が必要です。運用監視ツールでは、適切なアラーティングによりサーバー障害の発生を早期に検知しつつ、ログ可視化機能などによりその原因を特定することができます。近年では、予兆検知としてサーバー障害が発生する兆候を事前に捉え、未然防止を図る仕組みも登場しています。
運用監視ツールを適切に選ぶことで、サーバー障害の影響をできるだけ抑えることができるでしょう。
サーバー障害によるビジネス影響を最小化するLogicMonitorとは
SaaS型のIT統合運用監視サービスであるLogicMonitorは、サーバー障害のビジネス影響を最小化するために活用できます。
LogicMonitorは死活監視、リソース監視、プロセス・サービス監視など様々な観点での監視により、サーバー障害を早期検知します。さらに、AIOpsの考えを用いた予兆検知により、過去のデータを基に障害が発生する傾向を把握し、サーバー障害の発生リスクを分析することも可能です。
各種条件設定によるアラーティングにおいては、サーバー障害につながる根本的な原因のみを通知できます。これにより、運用担当者の負荷も軽減することができるでしょう。
まとめ
この記事では、サーバー障害の原因や対策を紹介しました。様々な原因で発生するサーバー障害を完全に防ぐことはできません。運用管理体制の構築や、高機能な運用監視ツールの採用により、サーバー障害発生時の影響を最小化するための取り組みが必要です。
DXの潮流もあり、システムと業務はますます不可分なものとなっています。サーバー障害によるシステム停止がビジネスにできるだけ影響を与えないように、運用監視体制を強化していく必要があるでしょう。