この章では、Communications Server クラスタの使用法について説明します。次の節で構成されています。
クラスタは、同じアプリケーション、リソース、および設定情報を共有するサーバーインスタンスの集まりに名前を付けたものです。異なるマシン上のサーバーインスタンスを 1 つの論理クラスタにまとめ、それらのインスタンスを 1 つの単位として管理できます。マルチマシンクラスタのライフサイクルは、DAS を使用して容易に制御できます。
インスタンスはクラスタにグループ化できます。アプリケーションを単一配備のクラスタのすべてのインスタンスに分散できます。クラスタは動的です。インスタンスが追加または削除されると、変更は自動的に処理されます。
クラスタにより、水平方向のスケーラビリティー、負荷分散、およびフェイルオーバー保護が使用可能になります。定義により、クラスタ内のすべてのインスタンスに対してリソースとアプリケーションの設定は同じになります。あるサーバーインスタンスまたはクラスタ内のあるマシンに障害が起きると、ロードバランサは障害を検出し、障害の起きたインスタンスからクラスタ内のほかのインスタンスにトラフィックをリダイレクトし、ユーザーセッションの状態を回復します。クラスタ内のすべてのインスタンス上には同一のアプリケーションとリソースがあるため、インスタンスはクラスタ内のほかのどのインスタンスにも処理を継続させることができます。
クラスタインスタンスはリングトポロジの形式に構成されています。リング内の各メンバーは、リング内の次のメンバー (レプリカパートナー) にインメモリー状態データを送信し、前のメンバーから状態データを受信します。いずれかのメンバーで状態データが更新されると、リング全体でレプリケートされます。リングトポロジでメンバーに障害が発生すると、リングは切断されます。グループ管理サービス (GMS) で、メンバーの障害を認識できます。その場合、レプリケーションフレームワークはクラスタのトポロジを作り直して、メンバーにその変更を通知します。メンバーはそのレプリカパートナーが消えたことを認識すると、稼働中のメンバーから新しいパートナーを選択します。
グループ管理サービス (GMS) は、クラスタ内のインスタンスに対して有効になっている基盤コンポーネントです。GMS を有効にすると、クラスタインスタンスで障害が発生した場合にクラスタおよびドメイン管理サーバー (DAS) が障害を認識し、障害発生時に必要な処理を実行することができます。Communications Server の多くの機能は、GMS に依存します。たとえば、GMS は IIOP フェイルオーバー、インメモリーレプリケーション、トランザクションサービス、およびタイマーサービスの各機能によって使用されます。
クラスタ内の複数のサーバーインスタンスが異なるマシンに配置されている場合は、それらのマシンが同じサブネット上にあることを確認してください。
GMS 機能は開発者プロファイルでは利用できません。クラスタプロファイルおよびエンタープライズプロファイルでは、デフォルトで GMS が有効です。
GMS は Shoal フレームワークの中心的なサービスです。Shoal の詳細については、Project Shoal ホームページを参照してください。
ツリーコンポーネントで、「クラスタ」を選択します。
クラスタの名前をクリックします。
「一般情報」で、必要に応じて「ハートビート有効」チェックボックスが選択または選択解除されていることを確認します。
GMS を有効にしており、GMS で使用するデフォルトのポートおよび IP アドレスを変更する必要がある場合は、これらの設定値を変更します。
「保存」をクリックします。
使用環境に合わせて GMS を設定します。これは、GMS が障害を確認する頻度を決定する設定値を変更することによって行います。たとえば、障害検出試行の間のタイムアウト、障害が疑われるメンバーの再試行の回数、または、クラスタのメンバーを確認するときのタイムアウトを変更できます。
次の例では、get コマンドを使用して、cluster-config-name に関連付けられているすべてのプロパティーを取得します。
asadmin get cluster2-config.group-management-service.*
cluster2-config.group-management-service.fd-protocol-max-tries = 3 cluster2-config.group-management-service.fd-protocol-timeout-in-millis = 2000
cluster2-config.group-management-service.merge-protocol-max-interval-in-millis = 10000
cluster2-config.group-management-service.merge-protocol-min-interval-in-millis = 5000
cluster2-config.group-management-service.ping-protocol-timeout-in-millis = 5000
cluster2-config.group-management-service.vs-protocol-timeout-in-millis = 1500
管理コンソールの代わりに、asadmin get および set コマンドを使用できます。
asadmin> list cluster2-config.* cluster2-config.admin-service cluster2-config.admin-service.das-config cluster2-config.admin-service.jmx-connector.system cluster2-config.admin-service.jmx-connector.system.ssl cluster2-config.availability-service cluster2-config.availability-service.jms-availability cluster2-config.availability-service.sip-container-availability cluster2-config.diagnostic-service cluster2-config.ejb-container cluster2-config.ejb-container-availability cluster2-config.ejb-container.ejb-timer-service ... ... ... ... cluster2-config.web-container-availability asadmin> get cluster2-config.group-management-service.* cluster2-config.group-management-service.fd-protocol-max-tries = 3 cluster2-config.group-management-service.fd-protocol-timeout-in-millis = 2000 cluster2-config.group-management-service.merge-protocol-max-interval-in-millis = 10000 cluster2-config.group-management-service.merge-protocol-min-interval-in-millis = 5000 cluster2-config.group-management-service.ping-protocol-timeout-in-millis = 5000 cluster2-config.group-management-service.vs-protocol-timeout-in-millis = 1500 asadmin>set cluster2-config.group-management-service.fd-protocol-max-tries=4 cluster2-config.group-management-service.fd-protocol-max-tries = 4 asadmin> get cluster2-config.group-management-service.* cluster2-config.group-management-service.fd-protocol-max-tries = 4 cluster2-config.group-management-service.fd-protocol-timeout-in-millis = 2000 cluster2-config.group-management-service.merge-protocol-max-interval-in-millis = 10000 cluster2-config.group-management-service.merge-protocol-min-interval-in-millis = 5000 cluster2-config.group-management-service.ping-protocol-timeout-in-millis = 5000 cluster2-config.group-management-service.vs-protocol-timeout-in-millis = 1500 |
ロードバランサを作成したときにクラスタがすでに起動している場合、ロードバランサを起動するには、クラスタを再起動する必要があります。
ツリーコンポーネントで、「クラスタ」ノードを選択します。
「クラスタ」ページで、「新規」をクリックします。
「クラスタの作成」ページが表示されます。または「新しいクラスタ」ページが表示されます。
「名前」フィールドで、クラスタの名前を入力します。
この名前は、次の条件を満たす必要があります。
大文字と小文字、数字、下線、ハイフン、およびピリオド (.) だけで構成される
すべてのノードエージェント名、サーバーインスタンス名、クラスタ名、および設定名の間で一意である
「domain」ではない
「設定」フィールドで、ドロップダウンリストから設定を選択します。
オプションとして、サーバーインスタンスを追加できます。
クラスタ作成後にサーバーインスタンスを追加することも可能です。
サーバーインスタンスは複数のマシンに常駐できます。すべてのサーバーインスタンスは、DAS と通信可能なノードエージェントに関連付ける必要があります。クラスタのサーバーインスタンスを作成する前に、まず 1 つまたは複数のノードエージェントまたはノードエージェントのプレースホルダを作成します。「ノードエージェントのプレースホルダを作成する」を参照してください。
サーバーインスタンスを作成するには、次のようにします。
「了解」をクリックします。
表示される「クラスタを正常に作成」ページで「了解」をクリックします。
create-cluster
クラスタ、サーバーインスタンス、およびノードエージェントを管理する方法の詳細については、「ノードエージェントの配備」を参照してください。
クラスタのサーバーインスタンスを作成する前に、まずノードエージェントまたはノードエージェントのプレースホルダを作成します。「ノードエージェントのプレースホルダを作成する」を参照してください。
ツリーコンポーネントで、「クラスタ」ノードを開きます。
クラスタのノードを選択します。
「インスタンス」タブをクリックして、「クラスタ化されたサーバーインスタンス」ページを表示します。
「新規」をクリックして、「クラスタ化されたサーバーインスタンスの作成」ページまたは「新しいクラスタ化されたサーバーインスタンス」ページを表示します。
「名前」フィールドで、サーバーインスタンスの名前を入力します。
「ノードエージェント」ドロップダウンリストからノードエージェントを選択します。
「了解」をクリックします。
create-instance
ツリーコンポーネントで、「クラスタ」ノードを開きます。
クラスタのノードを選択します。
「一般情報」ページで、次のタスクを実行できます。
「クラスタの起動」をクリックして、クラスタ化されたサーバーインスタンスを起動します。
「クラスタの停止」をクリックして、クラスタ化されたサーバーインスタンスを停止します。
「EJB タイマーを移行」をクリックして、停止されたサーバーインスタンスからクラスタ内の別のサーバーインスタンスに EJB タイマーを移行します。
start-cluster、stop-cluster、migrate-timers
ツリーコンポーネントで、「クラスタ」ノードを開きます。
サーバーインスタンスを含むクラスタのノードを開きます。
「インスタンス」タブをクリックして、「クラスタ化されたサーバーインスタンス」ページを表示します。
このページで、次のタスクを実行できます。
インスタンスのチェックボックスを選択して「削除」、「起動」、または「停止」をクリックし、指定したすべてのサーバーインスタンスに対して選択したアクションを実行します。
インスタンスの名前をクリックして、「一般情報」ページを表示します。
ツリーコンポーネントで、「クラスタ」ノードを開きます。
サーバーインスタンスを含むクラスタのノードを開きます。
サーバーインスタンスノードを選択します。
「一般情報」ページでは、次の操作を行えます。
「インスタンスを起動」をクリックして、インスタンスを起動します。
「インスタンスの停止」をクリックして、実行するインスタンスを停止します。
「JNDI ブラウズ」をクリックして、実行中のインスタンスの JNDI ツリーをブラウズします。
「ログファイルを表示」をクリックして、サーバーのログビューアを開きます。
「ログをローテーション」をクリックして、インスタンスのログファイルをローテーションします。このアクションは、ログファイルのローテーションをスケジュールします。実際のローテーションは、次にログファイルがエントリに書き込まれたときに行われます。
「トランザクションの回復」をクリックして、未完了のトランザクションを回復します。
「プロパティー」タブをクリックして、インスタンスのポート番号を変更します。
「監視」タブをクリックして、監視プロパティーを変更します。
ツリーコンポーネントで、「クラスタ」ノードを開きます。
クラスタのノードを選択します。
「アプリケーション」タブをクリックして、「アプリケーション」ページを表示します。
このページで、次のタスクを実行できます。
「配備」ドロップダウンリストから、配備するアプリケーションのタイプを選択します。表示される「配備」ページで、アプリケーションを指定します。
「フィルタ」ドロップダウンリストから、リストに表示するアプリケーションのタイプを選択します。
アプリケーションを編集するには、アプリケーション名をクリックします。
アプリケーションの横にあるチェックボックスを選択して、「有効」または「無効」を選択し、クラスタのアプリケーションを有効または無効にします。
ツリーコンポーネントで、「クラスタ」ノードを開きます。
クラスタのノードを選択します。
「リソース」タブをクリックして、「リソース」ページを表示します。
このページで、次のタスクを実行できます。
クラスタ用の新規リソースを作成します。「新規」ドロップダウンリストから、作成するリソースのタイプを選択します。リソースを作成するときには、必ずクラスタをターゲットとして指定します。
リソースをグローバルに有効または無効にします。 リソースの横にあるチェックボックスを選択して、「有効」または「無効」をクリックします。このアクションはリソースを削除しません。
特定のタイプのリソースのみを表示します。 「フィルタ」ドロップダウンリストから、リストに表示するリソースのタイプを選択します。
リソースを編集します。 リソース名をクリックします。
delete-cluster
サーバーインスタンスが異常に、または突然実行を停止した場合、そのサーバーインスタンス上にインストールされた EJB タイマーを、クラスタ内の実行中サーバーインスタンスに移動する必要があります。このためには、次の手順を実行します。
ツリーコンポーネントで、「クラスタ」ノードを開きます。
クラスタのノードを選択します。
「一般情報」ページで、「EJB タイマーを移行」をクリックします。
「EJB タイマーを移行」ページで、次の操作を行います。
送信先サーバーインスタンスを停止して再起動します。
ソースサーバーインスタンスが実行中の場合、または送信先サーバーインスタンスが停止中の場合は、管理コンソールにエラーメッセージが表示されます。
migrate-timers
EJB タイマーサービスの設定に関する管理コンソールオンラインヘルプ