クラウド環境でサーバーの冗長化を実現する方法

    システムを安定的に稼働させることは、システムを運用するうえで非常に重要な要素です。システム停止が発生してしまうと業務に支障をきたすことはもちろん、外部まで巻き込んだ重大な問題に発展する可能性もゼロではありません。

    そのような事態を防ぐために、冗長化を実現しておくことが必要です。この記事では、冗長化についての基本的な考え方やメリット、冗長化を実現するためのサービスなどについて解説します。

    冗長化とは?

    冗長化とは、同じ機能や役割を持つシステムを複数用意しておく構成のことをいいます。あらかじめ同じ環境を複数用意しておくことで、一方に異常が起きたときにもう一方が処理を引き継いでシステム停止を防ぐことが可能です。

    用意するマシンや整備する環境が増えるため、冗長化にはコストがかかりますが、システム停止時間を最小限にするためには必要不可欠で、企業の重要なシステムはほとんどの場合冗長化されています。
    冗長化のための仕組みにはいくつかの種類があります。システム停止を一瞬も起こさないために常に2組のシステムで同じ処理を行うデュアルシステム、メイン系と待機系の2系列からなるデュプレックスシステム、複数のサーバーを連携させて1つのシステムのように扱うクラスタシステムなどが、冗長化構成の代表例です。

    デュアルシステムは、一瞬のシステム停止が大損害に繋がる可能性のある金融機関や交通機関のシステムなどで主に使われています。一方、デュプレックスシステムではメインで稼働するシステムに何らかの問題が発生した場合、自動もしくは手動で待機系に処理を引き継ぐため、一定時間システムの停止が発生する場合があります。クラスタシステムは、障害発生時のシステム停止を防ぐ目的で使われるものと、処理を複数台のシステムに振り分けて1台にかかる負荷を軽減させる目的で使われるものがあります。冗長化構成を実現するための仕組みは、その種類によって導入にかかるコストや運用負荷などが異なるため、求める要件や目的に応じて適切なものを選択することが大切です。

    冗長化の検討はオンプレミスだけでなく、クラウドサービスを利用する場合でも必要です。クラウドサービスの中にはSLAとして月間の稼働率を含んでいるものがありますが、この保証された稼働率が、冗長化していること前提の数値になっている場合があるためです。例えば、AmazonのクラウドサービスであるAWSでは月間稼働率99.95%というSLAが含まれていますが、これは複数のデータセンターに冗長構成をとっていることが前提とされています。

    冗長化によるメリット

    システムを冗長化構成することには、様々なメリットがあります。ここでは、冗長化が必要となる背景や冗長化することによるメリットについて解説します。

    システムに冗長化が必要な背景

    冗長化の目的は、システムの可用性を向上させることです。可用性とは「システムが停止せずに稼働するための能力」のことで、可用性が高いほどシステムはトラブルなく長時間稼働し続けられます。可用性が高い構成のことを「高可用性」「HA(High Availability)」と呼びます。企業でシステム停止が起こると業務に影響があるだけでなく、取引先や顧客に迷惑をかけてしまうケースも少なくないため、重要なシステムにおいては冗長化が不可欠といえるでしょう。

    システム障害の原因は様々で、ディスクなどの物理的な故障から自然災害によるもの、そしてウィルス感染やサイバー攻撃によるものなど、多岐にわたります。このように様々な要因からシステムに障害が発生するリスクが高まっているため、被害を最小限に抑えるための冗長化が必要とされています。

    クラウドサービスでも、この考え方は同じです。クラウドサービスは自社で運用やメンテナンスを行わないためあまり意識していないかもしれませんが、実際に稼働しているのは物理的なマシンです。100%の稼働率を持つハードウェアは存在しないため、冗長化のオプションサービスなどが提供されている場合は積極的に利用すべきでしょう。

    冗長化によるメリット

    冗長化によるメリットは、システム障害が発生しても利用者に大きな影響を与えることがないということです。冗長化を行うことにより、一方の環境に何らかの問題が発生しても、もう一方のシステムに切り替えてシステムの利用を継続することができます。構成によっては数秒で切り替えを完了させることができ、利用者はシステム障害が発生したことにも気づかないということもあります。

    冗長化はシステム障害発生時だけでなく、そもそも障害を起こさせないためにも有効な手段です。負荷分散クラスタなどの構成をとることにより、アクセス集中や重い計算処理などが発生した場合でも、サーバーが処理落ちすることなく継続して稼働できます。負荷を分散させることによって処理速度が上がり、Webサイトであれば表示速度が速くなるなど、ユーザビリティの向上にもつながります。

    システムの運用負荷が下がるという点も、冗長化のメリットです。冗長化されていないシステムで障害が発生した場合、原因の特定やシステムの切り替えなど、システムを復旧させるための作業が発生します。対応に時間がかかるとそれだけシステムを利用できない時間が長くなるため、作業の緊急度や負荷は高くなります。冗長化しておけばシステム停止を免れるため、このようなシステムトラブルの際の運用負荷も軽減することが可能です。

    冗長化を実現するためのサービス・特徴

    ひとことで冗長化といっても、そのレベルや実現方法は様々です。求めるレベルに応じて、システム構成や利用するサービスを検討しましょう。ここでは、冗長化を実現するためのサービスを紹介します。

    DRBD

    DRBDは、ディスクを冗長するためのソフトウェアです。複数のサーバーに同じデータをリアルタイムに書き込むことで、障害などによるデータの損失を防ぎます。ハードディスクの冗長化手法であるRAID1と似ている機能ですが、DRBDはTCP/IPネットワークを通じて複数のサーバーのストレージを使うという特徴があります。

    DRBDとPacemakerというOSSを組み合わせると、高可用性のクラスタ環境を構築することも可能です。DRBDを使用しない構成では、データ領域を複数のサーバーで共有する共有ストレージを使って実現されているケースが多いです。一方、DRBDは複数のサーバーにミラーリングを行います。前者では共有ストレージに障害が発生するとシステム停止やデータの損失につながる可能性がありますが、共有ストレージを使用しないDRBDの場合はその心配がありません。

    LifeKeeper

    LifeKeeperは、クラスタ環境を実現するソフトウェアです。システムを監視し、稼働しているシステムに障害が発生すると自動で待機系に切り替えることで、システムの停止時間を短縮させることが可能です。

    LifeKeeperはGUIベースでの構築が可能で、エディタを使った複雑なスクリプト修正は不要です。ウィザードに対して必要な入力をするだけでクラスタリソースの作成が可能なため、構築の手間が軽減されます。計画的なメンテナンスでシステムを止めないために、待機系にあらかじめ切り替えておくことでダウンタイムを短くするということも可能です。

    まとめ

    冗長化とは、システムに何らかの障害が発生した際に、システムを停止させることのないように同じ環境を複数用意しておくことをいいます。システムを冗長化しておくことで、メインで稼働しているシステムに問題が発生しても、待機しているもう一方のシステムに切り替えることで、利用者への影響を最小限に止めることができます。企業の重要なシステムにおいて、この冗長化は必要不可欠ともいえるでしょう。

    LifeKeeperは、システムの稼働状態を監視し、障害が発生した場合は自動的に待機系に切り替えを行えるHAクラスタソフトウェアです。LifeKeeperは、AWSやAzureなどのクラウド環境でも高可用性を実現することが可能という特徴もあります。システムの可用性を高めたいと検討している人は、ぜひ一度下記ページもご参照ください。

    SNSでもご購読できます。