WEB-DBサーバのクラスタ化
クラスタ化の概要
JBOSS、PHPなどのミドルウェアを使って、WWWサーバシステムを構築することが多くなっています。データを扱う場合には、何らかのリレーショナルデータベースとも連携して動作します。
WEBサーバだけであれば、ロードバランサーやNFSサーバなどを使って容易に冗長化することができます。しかし、データベースのデータ共有は比較的難しく、システム全体のリスクとなっている場合も少なくありません。
OSSのクラスタソフトウェアとデータベースソフトウェアを効果的に組み合わせることで、WEB-DBサーバを冗長化することができます。
クラスタ化のポイント
WEB-DBサーバを冗長化する場合には、次のような点を考慮する必要があります。
システム全体の負荷
最小構成では2台で冗長化することができます。しかし、アクセスが多く負荷が高い場合には、WEBサーバとDBサーバを分離したり、DBサーバをさらに増加するための対策も必要になります。
コンテンツ共有の方法
データベースの共有だけでなく、WWWサーバ上のコンテンツの共有についても考慮する必要があります。
ロードバランシングの方法
WWWサーバへのリクエストを分散する方法についても考慮が必要です。ロードバランサーを使う方法や、LinuxのLVSの仕組みを使う方法があります。
データの冗長性やバックアップ
データベースに重要なデータが保管されている場合には、データの冗長性やバックアップについても考える必要があります。
クラスタシステムの構築例
HA構成以外でWEB-DBサーバを構築する場合には、様々な構成を取ることができます。次は、ややアクセスが高い状況まで対応できるスケーラビリティを意識したシステム構成です。
- 通常は、2台のサーバでWWWサーバが動作し、1台のサーバでNFSサービスとDBサービスが動作します。
- WWWサーバへのアクセスは、Linux LVSの機能を使ってServer1とServer2でロードバランスしますので、ロードバランサーは不要です。
- Server2が故障した場合には、Server1、Server3でサービスを継続します。
- Server1、Server3が故障した場合には、Server 2でサービスを継続します。
- NFSやデータベースは、インターネットに直接接していないセグメントで通信します。
OSSでクラスタ化するメリット
リレーショナルデータベースの製品で、データベースの負荷分散と冗長性確保を行えるものもあります。しかし、非常に高価なため、利用用途が限定されてしまいます。これに対して、OSSを使ってクラスタ化すると、次のようなメリットがあります。
データベースの冗長性を最適なコストで確保できる
OSSのクラスタソフトウェアを使うことで、コストを抑えながらデータベースの冗長性を確保することができます。
データベース以外のデータの冗長化もできる
NFSサービスなどを組み合わせることで、データベース以外の情報も冗長化できます。
ベンダーロックインしない
完全にオープンな技術だけを使って動作します。データベース製品ベンダーの製品戦略に左右されず、安定して使い続けることができます。
クラスタ化の注意事項
WEB-DBのシステムをクラスタ化する場合には、次のような点に注意する必要があります。
- DBの冗長方式
データベースの冗長方式によっては、冗長化の方法によって、アプリケーションからの使い方が変わる場合があります。そのため、十分に検討して、冗長化の方法を決める必要があります。 - 性能
データベースの冗長化の方法によって、得られる性能が異なります。また、クラスタソフトウェアは比較的多くのシステムリソースを必要とします。そのため、十分な性能を確保する必要があります。 - セキュリティ
データベースや内部データに、インターネットから直接アクセスできないように配慮する必要があります。 - ロードバランシング
ロードバランシングはロードバランサーなどの機器を使うこともできますが、クラスタソフトウェアのIPアドレスの付け替えの仕組みとの共存を考えて構成する必要があります。 - クラスタ監視
データベースもWWWサーバも、個別には動作しているように見えても、連携部分で問題が発生する場合があります。WEB-DBシステム全体としての動作を保証するように、クラスタ監視の機能を組み込む必要があります。