サービスを止めないためのHAクラスタ

5.3. HAクラスタの技術 |

5.4. HAクラスタ事例紹介

5.4.1. 事例システムの概要

対象システム:

  • 社内のPC(編集端末)からデータを加工して、インターネットで特定の利用者にデータを配信するシステム
  • データ加工サービスを提供する編集サーバとデータ配信を行う配信サーバから構成される
  • 編集サーバ、配信サーバ共に、Webアプリケーションでサービスを提供
  • データの種類はデータベースとそれ以外の電子データ(PDFやJPEGなどの電子ファイル)の二種類
  • 配信サーバでは、配信用のデータベース(サービス用DB)の他に、利用者毎のデータダウンロード履歴を記録するダウンロードログDBを配置
  • サービス用DBの更新は、編集サーバからのみ行い、配信サーバでは参照のみ

ソフトウェア要件:

コストを抑えるために、可能な限りフリーのソフトウェアを使用する

  • WebサーバにはApacheを利用
  • WebアプリケーションはPHPを利用
  • データベースにはPostgreSQLを利用
  • データベースのレプリケーションにはpgpool-IIを利用
  • HAクラスタソフトはHeartbeatを利用

5.4.2. 最小構成設計とクラスタ化設計

非クラスタで構成(最小構成)する場合、以下のような構成となります。

最小構成では、編集サーバと配信サーバは1台ずつです。編集サーバで編集時に、配信サーバ上のデータベースも同時に書き換えます。配信サーバは配信要求を受けた時に、自サーバ上のDBからデータを読み出します。

図5-2 最小構成の構成図

サービス用DBは、編集サーバのpgpool-IIで、編集サーバ/配信サーバで同期をとる格好です。

このシステムを以下のような構成でクラスタ化します。

クラスタ化構成では、編集サーバと配信サーバは2台ずつとなります。実際の編集サービス、配信サービスを行なうのは、それぞれのマスター側ですが、データ更新時にはスレーブ側のデータベースも同時に更新します。

図5-3 クラスタ化構成の構成図

5.4.3. クラスタ化における設計のポイント

本事例のクラスタ化における設計ポイントを紹介します。

  • 編集サーバ、配信サーバは、それぞれ2台で冗長化しています。エントリモデルのPCサーバを利用したため、電源、冷却ファンは冗長化せず、ハードディスクはRAID1でミラーリングしています。
  • ファイルサーバを別途用意して、編集サーバのデータベース(データのみ)をこちらに配置しています。これにより、編集サーバ間でのデータ同期による複雑さを回避すると同時に、編集サーバに障害が発生した時でもデータソースの一元化を実現しています。ハードディスクはRAID1でミラーリングし、ディスク障害によるデータ障害に備えています。
  • 稼働系のHeartbeatで以下を定期的に監視し、いずれか一つでもダウンした時は、フェイルオーバーさせます。
    • ネットワークインタフェースのICMP死活
    • Apacheデーモンの死活
    • 死活監視用httpリクエストに対する応答
    • pgpool-IIデーモンの死活
    • PostgreSQLデーモンの死活
    • 死活監視用SQL発行に対する応答
  • フェイルオーバー方式は、編集サーバではウォームスタンバイ、配信サーバではホットスタンバイを採用しています。編集サーバをウォームスタンバイとしている理由は、ファイルサーバにデータを保管しているため、稼働系と待機系のPostgreSQLで同時にファイルサーバに対してアクセスできないためです。
  • 上記のフェイルオーバーを実現するため、編集サーバ、配信サーバに仮想IPアドレスを設定しています。仮想IPアドレスとは、一つのアドレスを複数のコンピュータで共有する仕組みです。通常運用時に稼働系に割り当てられているIPアドレスを、障害発生時に待機系に引き継いで運用を継続します。
  • 待機系に障害が発生した場合は、待機系を切り離して稼働系のみで稼働します。
  • フェイルバックは手動切り替えです。予め利用者に通知した場合に限り、一定時間のサービス停止が許されるため、システムの導入/運用コストを抑えています。

5.4.4. システム全体の監視と管理

上述のとおり、HAクラスタではサーバやアプリケーションの構成が複雑になります。フェイルオーバーの発生や待機系ダウンを監視する必要もあります。有償のHAクラスタソフトでは、フェイルオーバーや待機系ダウン時にメール通知する機能を持っているソフトもありますが、システム全体を管理できる仕組みがあるとベターでしょう。世の中には多くの監視ソフトが存在しますので、導入を検討されると良いかと思います。

本事例では、弊社開発のネットワーク監視システム「isNetSentry」を組み合わせることで、システム全体の管理を実現しています。具体的には、以下を監視しています。

  • サービスの死活
  • フェイルオーバーの検出
  • 待機系ダウンの検出
  • 編集サーバから配信サーバへのデータ公開およびエラー履歴

無料小冊子のお申込みはこちら

株式会社システム計画研究所のオフィシャルサイトはこちら

当サイトへのご質問及び安全・安心・信頼のシステム開発に関するご相談はこちら

通信・ネットワークシステムの開発マネージメント情報サイト「通信・ネットワークシステム開発.COM」はこちら

サーバ監視・ネットワーク監視ツール isNetSentry-S のサイトはこちら