9.10 システムをスケールアウトする
業務処理量の増加が判明した場合や、将来予測される業務処理量に備える場合などに、増設したマシン(新設サーバ)にApplication Serverを構築して、システムをスケールアウトします。システムをスケールアウトするには、新設サーバにApplication Serverをインストールし、新設サーバのローカルホストから既存サーバのリモートホストへ接続するための設定をしたあと、Application Serverのセットアップを実施します。
前提条件
-
クラスター構成で、既存のサーバインスタンスがクラスターに含まれている
-
既存サーバでドメイン管理サーバが起動している
-
既存サーバにApplication Serverがセットアップされている
-
新設サーバが稼働している
想定ユーザー
- システム構築者
操作手順
-
新設サーバにApplication Serverをインストールします。
-
Windows環境のリモートホストおよび新設サーバに対応するローカルホストのそれぞれに対して、DCOMを有効にする設定をします。
-
スタートメニューの[ファイル名を指定して実行]にdcomcnfg.exeと入力して、[OK]ボタンをクリックします。
-
[コンポーネントサービス]画面で[コンポーネントサービス]-[コンピューター]をクリックして、ツリーを展開します。
-
[マイコンピューター]を右クリックして、[プロパティ]を選択します。
-
[マイコンピューターのプロパティ]画面の[既定のプロパティ]タブで、[このコンピュータ上で分散COMを有効にする]をチェックします。
-
リモートホストの場合は、[COMセキュリティ]タブで[アクセス許可]の[制限の編集]ボタンをクリックして、リモートホストに接続するユーザー、またはユーザーが属するグループについて、[リモートアクセス]の[許可]をチェックします。
-
リモートホストの場合は、[COMセキュリティ]タブで[起動とアクティブ化のアクセス許可]の[制限の編集]ボタンをクリックして、リモートホストに接続するユーザー、またはユーザーが属するグループについて、[リモートからの起動]と[リモートからのアクティブ化]の[許可]をチェックします。
-
[OK]ボタンをクリックして、マシンを再起動します。なお、すでにDCOMが有効だった場合、再起動は不要です。
-
-
リモートホストで、WindowsのサービスのWindows Management Instrumentation、およびRemote Registryを自動起動するように設定します。また、それぞれのサービスが起動していない場合は起動します。
-
リモートホストでnet shareコマンドを実行して、管理共有が有効になっていることを確認します。
net share
コマンドの実行結果を次に示します。次のように共有名に 「ドライブ名$」 の行が表示されていれば、管理共有は有効になっています。
共有名 リソース 注釈 ------------------------------------------------------------------------------- : C$ C:\ Default share D$ D:\ Default share :
リモートホストの管理共有が無効になっている場合は、次のレジストリーキーの値を変更します。レジストリーキーの値の変更後は、マシンを再起動します。
Windows 7、Windows 8、Windows 8.1の場合 キー: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Lanmanserver\parameters 値:AutoShareWks=0 (無効) 値:AutoShareWks=1 (有効)
Windows Server 2008 R2、Windows Server 2012、Windows Server 2012 R2の場合 キー: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Lanmanserver\parameters 値:AutoShareServer=0 (無効) 値:AutoShareServer=1 (有効)
-
リモートホストで、次のポートを開放してファイアウォールの設定をします。
-
DCOM のポート(135または139)
-
Windows Shares のポート(445)
-
動的ポート
-
コントロールパネルから[Windowsファイアウォール]を起動して、[詳細設定]を選択します。
-
[セキュリティが強化されたWindowsファイアウォール]画面で、[受信の規則]の[新しい規則...]を選択します。
-
[新規の受信の規則ウィザード]画面の[規則の種類]で、[ポート]を選択します。また、[プロトコルおよびポート]で、[TCP]を選択し、[特定のローカルポート]に開放するポート番号を入力します。
開放するポートの範囲を指定する場合は、ハイフンをつけて
5000-5010のように入力します。
-
[操作]で、[接続を許可する]を選択します。
-
[プロファイル]で、 環境に応じて、適用するプロファイルを[ドメイン]、[プライベート]、[パブリック]の中から選択します。
-
[名前]で、任意の名前を入力して、[完了]ボタンをクリックします。
なお、動的ポートを確認する場合は、次のコマンドを実行します。
IPv4の場合:netsh int ipv4 show dynamicport tcp
IPv6の場合:netsh int ipv6 show dynamicport tcp
-
-
リモートホストで、asadminユーティリティーコマンドのsetup-local-dcomサブコマンドを実行して、DCOMを有効にします。
asadmin setup-local-dcom
- 重要
-
setup-local-dcomサブコマンドはWindowsのレジストリー情報を更新するため、コマンド実行前にレジストリーのバックアップを取得しておくことを推奨します。
コマンドの実行結果を次に示します。
Command setup-local-dcom executed successfully.
-
Windows 8、Windows 8.1、Windows Server 2012、またはWindows Server 2012 R2の場合は、リモートホストでWindowsのサービスのRemote Registryを再起動します。
-
リモートホストで、ドメイン管理サーバ(ローカルホスト)のホスト名を解決できるようにhostsファイルを編集します。
-
ローカルホストで、asadminユーティリティーコマンドのcreate-password-aliasサブコマンドを実行して、DCOM 接続するためのパスワードに対するエイリアスを設定します。
asadmin create-password-alias パスワードエイリアス名
パスワードが求められた場合は、リモートホストのパスワードを入力してください。
コマンドの実行結果を次に示します。
Command create-password-alias executed successfully.
-
ドメイン管理サーバを再起動します。
asadmin restart-domain
コマンドの実行結果を次に示します。
Command restart-domain executed successfully.
-
ローカルホストで、接続するノード上にあるホストのWindowsパスワードを記述したパスワードファイルを作成します。
AS_ADMIN_WINDOWSPASSWORD=${ALIAS=パスワードエイリアス名}
-
ローカルホストで、asadminユーティリティーコマンドのvalidate-dcomサブコマンドを実行して、DCOM経由でリモートホストに接続できるかどうかを確認します。
asadmin --user ドメイン管理サーバのユーザー名 --passwordfile パスワードファイルのパス validate-dcom --windowsuser リモートホストのユーザー名 リモートホスト名
ドメイン管理サーバのユーザー名のデフォルト値は、adminです。
コマンドの実行結果を次に示します。
Command validate-dcom executed successfully.
-
新設サーバにApplication Serverをセットアップするため、asadminユーティリティーコマンドのcreate-node-dcomサブコマンドを実行して、リモートホストに対するノードを追加します。
asadmin --user ドメイン管理サーバのユーザー名 --passwordfile パスワードファイルのパス create-node-dcom --windowsuser リモートホストのユーザー名 --installdir Application Serverのインストールディレクトリー/javaeeの絶対パス --nodehost リモートホストのホスト名 --nodedir Application Serverのノードディレクトリーのパス リモートホストのノード名
リモートホストのノード名には、リモートホストに構築するノード名(ノードを識別するための任意の名称)を指定します。
コマンドの実行結果を次に示します。
Command create-node-dcom executed successfully.
-
新設サーバにApplication Serverをセットアップするため、asadminユーティリティーコマンドのcreate-prfサブコマンドを実行して、パフォーマンストレーサーを構築します。
asadmin create-prf --node リモートホストのノード名 パフォーマンストレーサー名
コマンドの実行結果を次に示します。
Command create-prf executed successfully.
-
新設サーバにApplication Serverをセットアップするため、asadminユーティリティーコマンドのcreate-instanceサブコマンドを実行して、Java EEサーバ(サーバインスタンス)を構築します。
asadmin create-instance --node リモートホストのノード名 --prf パフォーマンストレーサー名 --cluster クラスター名 サーバインスタンス名
クラスター名には、構築済みのクラスター名を指定します。
コマンドの実行結果を次に示します。
Command create-instance executed successfully.
-
ハードウェアロードバランサーを使用している場合は、asadminユーティリティーコマンドのcreate-webserverサブコマンドを実行して、新設サーバにWebサーバを構築します。
ソフトウェアロードバランサーを使用している場合は、
手順20の操作に進んでください。
asadmin create-webserver --node リモートホストのノード名 Webサーバ名
コマンドの実行結果を次に示します。
Command create-webserver executed successfully.
-
ハードウェアロードバランサーを使用している場合は、asadminユーティリティーコマンドのcreate-relationサブコマンドを実行して、新設サーバにサーバ間関連を設定します。
asadmin create-relation --relationtype redirect --from Webサーバ名 --to サーバインスタンス名 --properties サーバ間関連のプロパティー名=サーバ間関連のプロパティーの値 サーバ間関連の関連名
リダイレクト関連の関連づけを設定する場合、静的コンテンツをWebサーバで処理し、静的コンテンツ以外のリクエストをJava EEサーバで処理するために、--propertiesオプションにpath、およびnetwork-listenerを指定します。
(例)
path=/apserver/:network-listener=http-listener-1
pathには、スラッシュ(/)から始まるURLのパスを指定します。スラッシュだけの指定(path=/)はしないでください。この例では、http://xxxxxxxxxxx/index.htmlのようにURLのパスの先頭にapserverを含まないリクエストは、Webサーバの静的コンテンツにアクセスされます。また、http://xxxxxxxxxxx/apserver/sample/index.jspのようにURLのパスの先頭にapserverを含むリクエストは、http://yyyyyyyyyyy/sample/index.jspというURLでJava EEサーバにリダイレクトされます。
network-listenerには、リダイレクト先のJava EEサーバのHTTPリスナー、またはHTTPSリスナーを示すネットワークリスナー名を指定します。Java EEサーバには、デフォルトでHTTPリスナーにhttp-listener-1、HTTPSリスナーにhttp-listener-2というネットワークリスナーが定義されています。
コマンドの実行結果を次に示します。
Command create-relation executed successfully.
-
ハードウェアロードバランサーを使用している場合で、かつ、性能を考慮して静的コンテンツをWebサーバに配置する場合は、Webサーバのドキュメントルートディレクトリーに静的コンテンツを格納します。
Webサーバのドキュメントルートディレクトリーは、
Application Serverインストールディレクトリー/javaee/glassfish/nodes/ノード名/Webサーバ名/root/htdocsです。
-
ハードウェアロードバランサーを使用している場合は、ハードウェアロードバランサーに対してリクエストの振り分けを設定します。
リクエストを振り分ける設定については、使用しているハードウェアロードバランサーのマニュアルを参照してください。
-
ソフトウェアロードバランサーを使用している場合は、asadminユーティリティーコマンドのcreate-relationサブコマンドを実行して、新設サーバにサーバ間関連を設定します。
asadmin create-relation --relationtype redirect --from Webサーバ名 --to クラスター名 --properties サーバ間関連のプロパティー名=サーバ間関連のプロパティーの値 サーバ間関連の関連名
リダイレクト関連の関連づけを設定する場合、静的コンテンツをWebサーバで処理し、静的コンテンツ以外のリクエストをJava EEサーバで処理するために、--propertiesオプションにpath、およびnetwork-listenerを指定します。
(例)
path=/apserver/:network-listener=http-listener-1
pathには、スラッシュ(/)から始まるURLのパスを指定します。スラッシュだけの指定(path=/)はしないでください。この例では、http://xxxxxxxxxxx/index.htmlのようにURLのパスの先頭にapserverを含まないリクエストは、Webサーバの静的コンテンツにアクセスされます。また、http://xxxxxxxxxxx/apserver/sample/index.jspのようにURLのパスの先頭にapserverを含むリクエストは、http://yyyyyyyyyyy/sample/index.jspというURLでJava EEサーバにリダイレクトされます。
network-listenerには、リダイレクト先のJava EEサーバのHTTPリスナー、またはHTTPSリスナーを示すネットワークリスナー名を指定します。Java EEサーバには、デフォルトでHTTPリスナーにhttp-listener-1、HTTPSリスナーにhttp-listener-2というネットワークリスナーが定義されています。
コマンドの実行結果を次に示します。
Command create-relation executed successfully.