この章には次の項が含まれます:
スクリプト・ベースのノード・マネージャは、WL_HOME
/common/bin/
にあるシェル・スクリプトwlscontrol.sh
です。wlscontrol.sh
ファイルは、ノード・マネージャを使用して制御するサーバー・インスタンスをホストするマシンごとに存在していなければなりません。このスクリプトは、サイト固有の要件を満たすようにカスタマイズできます。
ノード・マネージャまたはノード・マネージャ・クライアントを実行するマシンごとにSSHクライアントが実行可能でなければなりません。また、このスクリプトはユーザーIDが実行するパス内になければなりません。通常、SSHクライアントはUNIXまたはLinuxインストールの標準的な一部です。
ノード・マネージャを実行する前に、ノード・マネージャ機能の実行専用のUNIXユーザー・アカウントを作成する必要があります。このユーザーを、スクリプト・ベースのノード・マネージャをホストするすべてのマシンと、ノード・マネージャ・クライアント(これには管理サーバーも含まれます)をホストするすべてのマシンに追加します。
注意:
UNIXプラットフォームでは、ノード・マネージャのrootユーザーとしての実行はお薦めしません。ただし、バインド後のグループIDを取得するには、ノード・マネージャをrootユーザーとして実行する必要があります。バインド後のグループIDを使用すると、ご使用のマシンで稼働するサーバーが、すべての権限のある起動アクションの実行後に、UNIXグループID (GID)にバインドできるようになります。
例:
各ホスト・マシンで、ルート・ユーザーとして、2つの新しいオペレーティング・システム(OS)ユーザー(beaおよびndmgr)を作成し、これらをbeaという新しいグループに関連づけます。
beaはWebLogic Serverのインストールにのみ使用します。
ndmgrは、WebLogicドメインの作成や、管理サーバーとリモート管理対象サーバーの起動をノード・マネージャで実行するために使用します。
ndmgrでWebLogicスクリプトおよび実行可能ファイルを実行できる適切な許可が与えられるよう、どちらのOSユーザーのOSグループも同じ(bea)にする必要があります。
例:
> groupadd bea
> useradd -g bea -m bea
> passwd bea
> useradd -g bea -m ndmgr
> passwd ndmgr
ノード・マネージャのSSHシェル・スクリプトは、異なるマシン上のユーザー間のセキュアな信頼関係を提供する、SSHユーザー・ベースのセキュリティに依存します。認証は必要ありません。ノード・マネージャのコマンドおよびスクリプトを実行するためのUNIXユーザー・アカウントを作成します(通常はドメインごとに1つ)。このユーザーとしてログインしたユーザーは、ユーザー名とパスワードを指定しなくてもノード・マネージャ・コマンドを発行できます。
注意:
ノード・マネージャ・コマンドとWebLogic Serverコマンドが、コマンドの実行に使用されるUNIXユーザーIDのパスで使用可能になっていることを確認する必要もあります。ユーザーの環境ファイルを変更し、WL_HOME
/common
/bin
/またはDOMAIN_HOME
/bin
/server_migration
へのパスが含まれるようにします。
例:
PATH=/usr/bin:/bin:ORACLE_HOME/user_projects/domains/domain_name/bin/server_migration
WebLogic Serverインスタンスを実行する各マシン上のndmgrユーザーと、同じマシン上の同じndmgrユーザー、さらに他の各マシン上の対応するndmgrユーザーの間でSSHによる信頼関係を構成します。
すなわち、あるマシン上の任意のndmgrユーザーは、同じマシンまたは異なるマシン上の同じ名前のndmgrユーザーと、セキュリティ資格証明を求められることなくSSHセッションを確立できる必要があります。これは、管理対象サーバーが移行可能なサーバーのクラスタ・マスターになり、SSHを使用してクラスタ内の他のリモート管理対象サーバーを起動するコマンドを発行できるために必要です。ndmgrユーザーがSSHを使用してwlscontrol.sh
スクリプトを実行できさえすれば、管理対象サーバーの移行は機能します。詳細は、「WebLogic Serverスクリプトのセキュリティの構成」を参照してください。
たとえば、SSH version2で、ユーザーのあるインスタンスが別のインスタンスを信頼するように構成するには:
ターミナルからndmgrユーザーとしてログインします。
> ssh-keygen -t dsa
プロンプトが表示された場合はデフォルトの場所を受け入れ、パスフレーズに対して「Enter」を押し、パスフレーズを指定しないようにします。
ndmgrユーザーの公開鍵を、同じマシンおよびその他すべてのマシン上のndmgrユーザーのホーム・ディレクトリにコピーします。
> scp .ssh/id_dsa.pub ndmgr@192.168.1.101:./
ndmgrユーザーとしてターゲット・マシンとSSHセッションを確立し、リモートndmgrユーザーの信頼関係を設定します。
> ssh -l ndmgr 192.168.1.101 (you should be prompted for password)
> mkdir .ssh
> chmod 700 .ssh
> touch .ssh/authorized_keys
> chmod 700 .ssh/authorized_keys
> cat id_dsa.pub >> .ssh/authorized_keys
> rm id_dsa.pub
> exit
パスワードを要求せずに、リモート・マシン上のndmgrユーザーとSSHセッションを確立できるかどうかをテストします。
> ssh -l ndmgr 192.168.1.101
すべてのマシンの組み合わせでこのプロセスを繰り返します。
あるいは、各マシンでキーと値のペアを生成し、すべての公開鍵を1つのauthorized_keys
ファイルに連結し、そのファイルをすべてのマシンにコピー(scp
)しても、同じ結果が得られます。すべてのマシンの組み合わせでSSHセッションの確立を試行し、~/.ssh/known_hosts
ファイルが適切に構成されていることを確認します。詳細は、「キーと値のペアの生成と配布」を参照してください。
beaユーザーとして、WebLogic Serverを実行するすべてのマシンで、WebLogic Serverインスタンスをベース・ディレクトリORACLE_HOME
/wlserver
内にインストールします。ORACLE_HOMEは、WebLogic Serverのインストール時にOracleホームとして指定するディレクトリを表します(C:\Oracle\Middleware\Oracle_Home
など)。
例:
> java -jar wls_jrf_generic.jar
詳細は、『Oracle WebLogic ServerおよびCoherenceのインストールと構成』のインストール・プログラムの起動に関する項を参照してください。
ndmgrユーザーのホーム・ディレクトリで、管理サーバーのみをホストするマシン上にWebLogicドメインを作成します。
このドメイン・ディレクトリのconfig
サブディレクトリにある構成は、後で管理サーバーを起動する際、管理サーバーとドメインの設定を特定するために使用されます。
多くの場合、管理対象サーバー・インスタンスは、管理サーバーに対してリモートに実行されます。したがって、これらの管理対象サーバーは、管理サーバーのドメイン構成ディレクトリに直接アクセスすることはありません。代わりに、管理対象サーバーは、個々のマシンのndmgrホーム・ディレクトリにあるスケルトン・ドメイン・ディレクトリから実行され、起動時に、リモートに実行されている管理サーバーからネットワークを介して構成を取得します。
ndmgrユーザーとして、WebLogicドメインを作成します。
例:
構成ウィザードを実行します。
> ORACLE_HOME/wlserver/common/bin/config.sh
デフォルトのWebLogic Serverテンプレートに基づき、WebLogicドメインを新たに作成します。
管理サーバーには、固定IPアドレス(192.168.1.100
など)を指定します。
「環境とサービスの設定のカスタマイズ」で「はい」を選択します。
「管理対象サーバーの構成」で、2つの管理対象サーバー、MS1
およびMS2
を追加します。
管理対象サーバーには、浮動IPアドレス(192.168.1.201
および192.168.1.202
など)を指定します。
クラスタの構成で、クラスタCLUST
を追加し、このクラスタにMS1
およびMS2
を割り当てます。
マシンやUNIXマシンの指定は後で手動で行うため、ここでは実行しません。
ドメインの名前をclustdomain
として、ORACLE_HOME/clustdomain
に保存します。
nodemanager.domains
ファイルには、ノード・マネージャ・インスタンスが制御するドメインを指定します。このため、スタンドアロンのクライアントではドメイン・ディレクトリを明示的に指定する必要はありません。
このファイルには、ノード・マネージャ・インスタンスが制御する各ドメインのドメイン・ディレクトリを次の形式で指定するエントリが含まれている必要があります。
domain-name=domain-directory
ユーザーがドメインに対してコマンドを発行すると、ノード・マネージャはnodemanager.domains
からドメイン・ディレクトリをルックアップします。
このファイルではノード・マネージャ・クライアントのアクセスがファイル内に表示されたドメインに制限されるので、セキュリティがさらに強化されます。クライアントは、nodemanager.domains
に表示されたドメインに対してのみコマンドを実行できます。
スクリプト・ベースのノード・マネージャでは、このファイルのデフォルトの場所はWL_HOME
/common/nodemanager
になります。WL_HOME
はWebLogic Serverのインストール先ディレクトリ(ORACLE_HOME
/wlserver
など)です。
スクリプト・ベース実装のノード・マネージャを使用する場合は、NodeManagerHome
に、ノード・マネージャ・インスタンスで制御するドメインを指定するnodemanager.domains
ファイルを作成またはコピーする必要があります。あるいは、WLSTコマンドnmEnroll
を使用して、WebLogicドメインをスクリプトベースのノード・マネージャに登録することも可能です。詳細は、「nodemanager.domainsファイルの構成」を参照してください
管理サーバーを起動する標準的な方法は、用意されているstartWebLogic
スクリプトを使用するというものですが、かわりにスクリプト・ベース実装のノード・マネージャで管理サーバーを監視して高可用性を保証することもできます。本番ドメインを使用する場合は、正常に起動できるように管理サーバーのboot.properties
を作成します。ndmgrユーザーとして、wlscontrol.sh
ノード・マネージャ・スクリプトを使用してターミナルからローカルに管理サーバーを起動します。
例:
> ORACLE_HOME/wlserver/common/bin/wlscontrol.sh -d clustdomain -r ORACLE_HOME/clustdomain -c -f startWebLogic.sh -s AdminServer START
標準出力に冗長ロギングするには、コマンドに-v
パラメータを追加します。
注意:
管理サーバーが正常に起動し、boot.properties
ファイルの作成が完了した後は、管理サーバーをリモート起動できます。ノード・マネージャのスクリプトstopWebLogic.sh
を使用して管理サーバーを停止します。その後で、SSHを使用して管理サーバーをリモート起動します。
例:
> ssh -l ndmgr -o PasswordAuthentication=no 192.168.1.100 ORACLE_HOME/wlserver/common/bin/wlscontrol.sh -d clustdomain -r /home/ndmgr/clustdomain -c -f startWebLogic.sh -s AdminServer START
管理対象サーバーをホストする各マシンでは、スケルトン・ドメインを作成し、構成します。
ローカルのターミナルから、各管理対象サーバー・ホスト・マシンおよびバックアップ・マシンのndmgrユーザーのホーム・ディレクトリに、空のディレクトリ(clustdomain
)を新たに作成します。例:
> mkdir clustdomain
各管理対象サーバー・ホスト・マシンおよびバックアップ・マシンで、ndmgrユーザーとしてWLSTを使用し、サーバーのリモート実行用およびノード・マネージャ用のベース・ディレクトリとしてユーザーのホーム・ディレクトリを登録します。
例:
> ORACLE_HOME/wlserver/common/bin/wlst.sh
> connect('weblogic','weblogic','t3://192.168.1.100:7001')
> nmEnroll('/home/ndmgr/clustdomain','/home/ndmgr')
> exit()
nmEnroll
は、各リモート・マシンに対して実行してください。このコマンドにより、プロパティ・ファイル/home/ndmgr/nodemanager.domains
が生成され、ドメイン名がホーム・ディレクトリにマップされ、必要なドメイン構成とセキュリティ情報が作成されるため、管理対象サーバーは管理サーバーと通信できるようになります。
このnodemanager.domains
ファイルにより、wlscontrol.sh
の起動時に-r
を使用してドメイン・ホーム・ディレクトリを指定せずに済みます。ただし、ノード・マネージャのホーム・ディレクトリを変更したため、-n /home/ndmgr
を指定する必要があります。ノード・マネージャのデフォルトのホーム・ディレクトリはORACLE_HOME/wlserver/common/nodemanager
ですが、このディレクトリは製品のインストール・ディレクトリ内にあり、他のユーザーが所有するため、使用しないことをお薦めします。
注意:
デフォルトでは、任意のディレクトリからノード・マネージャを起動できます。nodemanager.domains
ファイルが見つからない場合、警告が発行されます。ノード・マネージャ・インスタンスで制御するドメインを指定するnodemanager.domains
ファイルを、NodeManagerHome
に作成またはコピーするか、WLSTコマンドnmEnroll
を使用してWebLogicドメインを登録する必要があります。
管理サーバーのドメインbin
ディレクトリのスクリプトを、各ノード・マネージャ・マシン上の対応するドメインbin
ディレクトリ(/home/ndmgr/bin
など)にコピーします。例:
> scp ndmgr@192.168.1.100:"~/clustdomain/bin/*" ndmgr@192.168.1.101:~/clustdomain/bin
バックアップ・マシンを含む各ノード・マネージャ・マシンで、bin
ディレクトリ内のシェル・スクリプトを編集し、ローカル・ドメイン・ホームの適切なパスとリモート管理サーバーのIPアドレスを反映させます。
例:
setDomainEnv.shスクリプト内の
DOMAIN_HOMEおよびLONG_
DOMAIN_HOME
変数を編集し、このリモート・ホーム・ディレクトリを適切に反映させます:
DOMAIN_HOME
=/home/ndmgr/clustdomain
LONG_
DOMAIN_HOME
=/home/ndmgr/clustdomain
同様に、startWebLogic.sh
内のDOMAIN_HOME
変数を編集します。
startManagedWebLogic.sh
内のDOMAIN_HOME
およびADMIN_URL
変数(t3://192.168.1.100:7001
など)を編集します。
バックアップ・マシンを含む各管理対象サーバー・ホスト・マシンに対し、ndmgrユーザーとして、ドメイン・ディレクトリにserver/security
サブディレクトリを作成します。
たとえば、管理対象サーバーがMS1
の場合は次のように指定します。
> mkdir -p ~/clustdomain/servers/MS1/security
注意:
バックアップ・マシンでは、すべての移行可能管理対象サーバー(たとえば、MS1
とMS2
)のサーバー・ディレクトリを作成します。
適切なユーザー名変数とパスワード変数が指定されたboot.properties
ファイルを、各管理対象サーバーのsecurity
ディレクトリ(/home/ndmgr/clustdomain/servers/MS1/security
など)に新たに作成します。
例:
username=weblogic
password=password
注意:
このファイル内の値は、スクリプト・ベースのノード・マネージャで管理対象サーバーを初めて起動するときに暗号化されます。
各管理対象サーバー・マシンについて、ndmgrユーザーとして、wlscontrol.sh
ノード・マネージャ・スクリプトを使用してターミナルからローカルに管理対象サーバーを起動します。
たとえば、管理対象サーバーMS1
を起動するには、次のように指定します。
> ORACLE_HOME/wlserver/common/bin/wlscontrol.sh -d clustdomain -n /home/ndmgr -c -f startManagedWebLogic.sh -s MS1 START
標準出力に冗長ロギングするには、コマンドに-v
パラメータを追加します。
正常に起動したら、その管理対象サーバーを停止してから、ndmgrユーザーとしてSSHを使用してリモートからの再起動を試みます。
たとえば、MS1
を起動するには、次のように指定します。
> ssh -l ndmgr -o PasswordAuthentication=no -p 22 192.168.1.101 ORACLE_HOME/wlserver/common/bin/wlscontrol.sh -d clustdomain -n /home/ndmgr -c -f startManagedWebLogic.sh -s MS1 START
正常に起動したら、その管理対象サーバーを再び停止し、バックエンド・マシン上の各管理対象サーバー(MS1
)の起動を試行してこのプロセスを繰り返します。正常に起動する度に、そのサーバーを停止してください。
WebLogic Server管理コンソールを使用して、管理サーバーまたは管理対象サーバーをホストするマシンごとに(バックアップ・マシンも含む)新しいUNIXマシンを追加し、次の設定を含めます。
表5-1 UNIXマシンの設定
プロパティ | 値 |
---|---|
OSの種類 |
UNIX |
ノード・マネージャの種類 |
SSH |
ノード・マネージャのリスニング・アドレス |
< |
ノード・マネージャのリスニング・ポート |
22 |
ノード・マネージャのホーム・ディレクトリ |
/home/ndmgr |
ノード・マネージャのシェル・コマンド |
ssh -l ndmgr -o PasswordAuthentication=no -p %P %H ORACLE_HOME/wlserver/common/bin/wlscontrol.sh -d %D -n /home/ndmgr -c -f startManagedWebLogic.sh -s %S %C |
ノード・マネージャのデバッグの有効化 |
true |
サーバー |
< |
すべてのUNIXマシンが作成されたら、WebLogic Server管理コンソールを使用して各サーバーの「マシン」プロパティを設定し、各サーバーが対応するUNIXマシンに関連付けられるようにします。Oracle WebLogic Server管理コンソール・オンライン・ヘルプのサーバー・インスタンスのマシンへの割当てに関する項を参照してください。
WebLogic Server管理コンソールで、各管理対象サーバーを起動します。Oracle WebLogic Server管理コンソール・オンライン・ヘルプの管理コンソールからの管理対象サーバーの起動に関する項を参照してください。
各管理対象サーバーの/
home
/ndmgr/
clustdomain
/servers/
managed_server_name
/logs
ディレクトリにあるサーバー・ログで、サーバーがエラーなく起動していることを確認します。
この項には次のトピックが含まれます:
ノード・マネージャで使用されるデフォルトのSSHポートは22です。この設定は、以下の方法でオーバーライドできます。
個々のユーザーのデフォルト・ポートを設定する場合は、~/.ssh/config
ファイルでPort=
パラメータを設定します。
システム全体のデフォルト・ポートを設定する場合は、/etc/ssh_config
ファイルでPort=
パラメータを設定します。
次のシステム・プロパティを使用して、管理サーバーを起動します。
-Dweblogic.nodemanager.ShellCommand="ssh -o PasswordAuthentication=no -p %P %H wlscontrol.sh -d %D -r %R -s %S %C"
サーバーの起動後、管理サーバーの構成ファイルでSSHポートを編集できます。
サーバーの移行などのタスクを実行するには、wlscontrol.sh
などのスクリプトを実行するユーザーIDに十分なセキュリティ・許可が必要です。たとえば、ネットワーク・インタフェースを通じてIPアドレスをオンラインにしたり、オフラインにしたりできる許可などです。
サーバーの移行は、サーバーに障害が発生したことを検出したときに、クラスタ・マスターによって実行されます。クラスタ・マスターはSSHを使用してターゲット・マシンにあるスクリプトを起動し、移行を開始します。ターゲット・マシンにあるスクリプトは、クラスタのマスター上でサーバーを実行しているのと同じユーザーIDで実行されます。
サーバーの移行を実行するために必要なコマンドはwlsifconfig
とarping
です。これらのスクリプトには高度なOS権限が必要になるため、セキュリティ・ホールの可能性を防止できる点に留意することが重要です。sudoを使用すると、高度な権限によるwlsifconfig
とarping
の実行のみを許可するようにSSHを構成できます。
それらのスクリプトは、WL_HOME
/common
/bin
/ディレクトリまたはDOMAIN_HOME
/bin
/server_migration
ディレクトリにあります。「ステップ2: ノード・マネージャのセキュリティの構成」を参照してください。
ノード・マネージャを使用してサーバー・インスタンスを起動するには、リモート起動ユーザーのユーザー名とパスワードが必要です。管理サーバーと管理対象サーバーでは、これらの資格証明の指定方法が異なります。
管理対象サーバーの資格証明 - 管理対象サーバーを起動するためにノード・マネージャを呼び出す場合、リモート起動ユーザーのユーザー名とパスワードはノード・マネージャによって管理サーバーから取得されます。
管理サーバーの資格証明 - 管理サーバーを起動するためにノード・マネージャを呼び出す場合、リモート起動ユーザーのユーザー名はコマンド行で指定することも、管理サーバーのboot.properties
ファイルから取得することもできます。構成ウィザードは、ドメインの作成時に管理サーバーのboot.properties
ファイルおよびstartup.properties
ファイルを初期化します。
ノード・マネージャによって起動されたサーバー・インスタンスでは、自動再起動に使用するために、サーバーの起動に使用された資格証明が暗号化され、サーバー固有のboot.properties
ファイルに保存されます。
スクリプト・ベースのノード・マネージャでは、2種類のキーと値のペアが使用されます。この項では、キーと値のペアをノード・マネージャのクライアントまたはサーバーをホストするマシンに配布する手順について説明します。
このオプションでは、同じキーと値のペアをノード・マネージャのクライアントまたはサーバーをホストするすべてのマシンに配布します。
最も簡単な方法は、ノード・マネージャ・ユーザーのホーム・ディレクトリを各マシンにマウントするようにするようにLANを設定することです。これにより、キーと値のペアがすべてのマシンで使用可能になります。この方法を使用しない場合は、次の手順を行います。
SSHインストールに付属のssh-keygen
コマンドを使用して、ユーザーのRSAキー値ペアを生成します。
秘密鍵と公開鍵のデフォルトの場所はそれぞれ、~/.ssh/id_rsa
と~/.ssh/id_rsa.pub
です。
これらのキーが異なる場所に格納されている場合は、ssh
コマンドにオプションを追加してキーの場所を指定するようにShellCommand
テンプレートを変更します。
ノード・マネージャ・マシン上の~/.ssh/authorized_keys
ファイルに公開鍵を追加します。
例:
command="ORACLE_HOME/wlserver/common/nodemanager/nodemanager.sh" 1024 33 23...2323
ここで、例で示した次の文字列を、id_rsa.pub
に格納されている生成した公開鍵で置き換えます。
1024 33 23...2323
注意:
接頭辞command=
コマンド
は、公開鍵を使用してマシンとのセッションを確立するユーザーがnodemanager.sh
で指定されたコマンドしか実行できないことを保証しています。これによりユーザーはノード・マネージャ機能を実行するだけになり、データ、システム・ユーティリティなどのマシン上のリソースへの権限のないアクセスが防止されます。
ノード・マネージャのサーバー・インスタンスまたはクライアントをホストする各マシンにキーと値のペアを手動で配布します。
クライアント・マシン上で次のコマンドを実行して、ノード・マネージャ・クライアントがノード・マネージャにアクセスできることを確認します。
$ ssh montgomery wlscontrol.sh VERSION
次のレスポンスは、クライアントがノード・マネージャに正常にアクセスしたことを示します。
NodeManager version 12.1