ページの先頭行へ戻る
Symfoware Server V10.1.0 解説書

5.4.3 ロードシェア

インターネットビジネスは、ユーザにとって使い易さ、コストパフォーマンスの良さから、適用業務の範囲を次第に広げ、さまざまな形態で使われるようになってきました。また適用業務が多様化するとともに、クライアントの数も急増しています。

このため、多クライアントへのサービス拡大に向けて、情報システムは、優れた性能はもちろんのこと、業務拡大に柔軟に対応するスケーラビリティ(高拡張性)と、利用したい時にいつでも利用できる高可用性が重要となります。

Symfoware Serverでは、高拡張性や高可用性を実現するために、クラスタシステム上で、複数ノードでトランザクションを並列に処理するロードシェアを用意しています。

なお、Symfoware Serverのロードシェアが対応するクラスタシステムは、PRIMECLUSTERのみです。

参照

ロードシェアについての詳細は、“クラスタ導入運用ガイド”を参照してください。

ロードシェアの概要について、以下に示します。

図5.27 ロードシェア

ロードシェア機能を適用すると、複数ノードに分散配置したデータベースを並列に処理することで、単一ノードに比べて高性能な処理能力を発揮します。また、処理能力が不足した場合には、ノードを追加することで、システムを再構築することなく、ノード数に比例した処理能力を実現できます。

一般的に、クラスタシステムでの並列トランザクション技術には、以下の2つの方式があります。

Shared Everything方式は、クラスタシステムのノード数が増えると、ロック機構のオーバヘッドが大きくなり、処理能力に一定の限界が発生します。

Symfoware Serverでは、Shared Nothing方式を採用し、ノード台数の増加に比例した性能を実現することができます。

Shared Everything方式とShared Nothing方式の差によるロードシェアの適用効果について、以下に示します。

図5.28 ロードシェアの適用効果

ロードシェアについて、以下の機能を説明します。

スケーラブル・パーティショニング

ロードシェアでは、パーティショニングを採用することにより、このパーティショニングした単位をそれぞれクラスタの各ノードに分散して配置することができます。表やインデックスをパーティショニングして分散配置することにより、ノードごとで自立性の高い運用が可能となります。

2フェーズコミット制御

ロードシェアでは、表やインデックスをノード間で共用するのではなく、表やインデックスを細分化した単位で管理します。したがって、複数の細分化された表をアクセスするトランザクションは、ノードをまたぐことがあります。このようなトランザクションは自動的に2フェーズコミット制御が行われるので、アプリケーションが意識する必要はありません。

ノード間の排他制御

Symfoware Serverでは、トランザクションを並列に処理する技術として、Shared Nothing方式を採用しています。この方式では、排他処理はすべてデータを管理するノードごとに行われます。そのため、ノードをまたがったデータアクセスであっても、そのことを意識した排他制御が不要です。また、ノードをまたがったデッドロックを自動検出し、デッドロックの原因となっているトランザクションをキャンセルします。

デッドロックの原因となっているアプリケーションが不明でも、デッドロック発生をモニタするコマンドによって、アプリケーション名と実行ノードを特定することができます。

システム拡張への対応

表やインデックスをノード間で共用せずに、各ノードで管理する(Shared Nothing方式)ので、ノード間のロック・オーバヘッドが最小になり、性能スケーラブルなシステム拡張が可能です。 またデータ操作は管理ノードでのリモートアクセス方式を取るため、データベース・バッファの活用効果が最大になります。

業務の拡大やトランザクション量の増加、利用者の増加などによりシステムの処理能力が不足しても、サーバを追加することで、システムを拡張することができます。

図5.29 システム拡張

縮退運転

何らかの原因でノードダウンが発生した場合でも、生存している別のノードに処理を引き継ぐため、業務継続が可能です。ダウンしたノードが管理していた表やインデックスに対するアクセスは、あらかじめ設定している縮退のルールに従い、別のノードに処理が引き継がれます。

生存しているノードが最後の1ノードになるまで縮退するため、二重故障が発生した場合でも、業務の継続が可能なシステムを構築することができます。

運用形態

ロードシェアの運用形態には、以下があります。

図5.30 ロードシェア運用

レオープン

プレオープンとは、引継ぎ先ノードでデータベースを事前にオープンする機能です。

ロードシェア運用では、引継ぎ先ノードに、あらかじめ引継ぎ元ノードと同等の業務動作環境を展開します。これにより、縮退時に速やかな業務再開が可能です。

キャッシュ・リカバリ

Symfoware Serverでは、引継ぎ先ノードにあらかじめ引継ぎ元ノードと同様にデータベース読込み用のバッファプールを定義しておくことが可能です。縮退時のダウンリカバリではその大容量のバッファプールが使用可能であるため、オンバッファ効果の向上により、データベースの入出力効率がシステムデフォルトのバッファプールを使用する場合と比較して格段に向上します。さらに、リカバリ後はユーザ定義のバッファプールをそのまま運用に使用できるため、速やかな業務再開が可能となります。

パラレル・ダウンリカバリ

Symfoware Serverでは、ダウンリカバリ処理においても並列化技術を導入しています。ログの読込みを行う専用スレッドが先行して起動し、ログの読込みを開始します。それに追随してログをデータベースに適用するリカバリスレッドがパーティショニングされた表やインデックスの数に応じて最適な個数が起動します。それぞれのリカバリスレッドが先に読み込まれたログに従って、並列にログ適用処理を実施します。これによりログの読込み、データベースのリカバリ処理すべてが並列に動作し、リカバリ時間が短縮されます。

フラッシュトリートメントリカバリ

ノード数の増加に従って、スケーラブルに処理能力は増大しますが、その分ノードダウンの確率も増えるのは必然です。そのためノードダウン時には少しでも早い切替え速度が要求されます。Symfoware Serverでは、そのような要件に応えるべくフラッシュトリートメントリカバリ機能を提供しています。引継ぎ元ノードから引継ぎ先ノードへ、最適な間隔で更新ログを送信することで、ノードダウンが発生しても、常に更新ログはメモリ上に存在します。このため、ログの読込みはほとんど不要です。