4 スクリプト・ベースのノード・マネージャの構成
この章の内容は次のとおりです。
概要
スクリプト・ベースのノード・マネージャは、WL_HOME
/common/bin/
にあるシェル・スクリプトwlscontrol.sh
です。wlscontrol.sh
ファイルは、ノード・マネージャを使用して制御するサーバー・インスタンスをホストするマシンごとに存在していなければなりません。このスクリプトは、サイト固有の要件を満たすようにカスタマイズできます。
ノード・マネージャまたはノード・マネージャ・クライアントを実行するマシンごとにSSHクライアントが実行可能でなければなりません。また、このスクリプトはスクリプトを実行するユーザーIDのパス内になければなりません。通常、SSHクライアントはUNIXまたはLinuxインストールの標準的な一部です。
ステップ1: ユーザー・アカウントの作成
ノード・マネージャを実行する前に、ノード・マネージャ機能の実行専用のUNIXユーザー・アカウントを作成します。このユーザーを、スクリプト・ベースのノード・マネージャをホストするすべてのマシンと、ノード・マネージャ・クライアント(これには管理サーバーも含む)をホストするすべてのマシンに追加します。
ノート:
UNIXプラットフォームでは、ノード・マネージャのrootユーザーとしての実行はお薦めしません。ただし、バインド後のグループIDを取得するには、ノード・マネージャをrootユーザーとして実行する必要があります。バインド後のグループIDを使用すると、ご使用のマシンで稼働するサーバーが、すべての権限のある起動アクションの実行後に、UNIXグループID (GID)にバインドできるようになります。
たとえば:
-
各ホスト・マシンで、ルート・ユーザーとして、2つの新しいオペレーティング・システム(OS)ユーザー(beaおよびndmgr)を作成し、これらをbeaという新しいグループに関連づけます。
-
beaはOracle 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
ステップ2: ノード・マネージャのセキュリティの構成
ノード・マネージャのSSHシェル・スクリプトは、異なるマシン上のユーザー間のセキュアな信頼関係を提供する、SSHユーザー・ベースのセキュリティに依存します。通常、ノード・マネージャのコマンドおよびスクリプトを実行するためにドメインごとに1つのUNIXユーザー・アカウントを作成します。このユーザーとしてログインしたユーザーは、ユーザー名とパスワードを指定しなくてもノード・マネージャ・コマンドを発行できます。
ノート:
ノード・マネージャ・コマンドとOracle 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
Oracle 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
ファイルが適切に構成されていることを確認します。「キーと値のペアの生成と配布」を参照してください。
ステップ3: Oracle WebLogic Serverのインストール
Oracle WebLogic Serverを実行するすべてのマシンで、Oracle WebLogic Serverインスタンスをベース・ディレクトリORACLE_HOME
/wlserver
内にインストールします。ここで、ORACLE_HOMEは、Oracle WebLogic Serverのインストール時にOracleホームとして指定するディレクトリを表します(C:\Oracle\Middleware\Oracle_Home
など)。
たとえば:
> java -jar wls_jrf_generic.jar
『Oracle WebLogic ServerおよびCoherenceのインストールと構成』のインストール・プログラムの起動に関する項を参照してください。
ステップ4: WebLogicドメインの作成
管理サーバーのみをホストするマシンで構成ウィザードを使用してWebLogicドメインを作成します。
このドメイン・ディレクトリのconfig
サブディレクトリにある構成は、後で管理サーバーを起動する際、管理サーバーとドメインの設定を特定するために使用されます。
多くの場合、管理対象サーバー・インスタンスは、管理サーバーに対してリモートに実行されます。したがって、これらの管理対象サーバーは、管理サーバーのドメイン構成ディレクトリに直接アクセスすることはありません。かわりに、管理対象サーバーは、個々のマシンのndmgrホーム・ディレクトリにあるスケルトン・ドメイン・ディレクトリから実行され、起動時に、リモートに実行されている管理サーバーからネットワークを介して構成を取得します。
ndmgrユーザーとして、WebLogicドメインを作成します。
たとえば:
- 構成ウィザードを実行します。
> ORACLE_HOME/wlserver/common/bin/config.sh
- デフォルトのOracle 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
に保存します。
ステップ5: nodemanager.domainsファイルの構成
nodemanager.domains
ファイルには、ノード・マネージャ・インスタンスが制御するドメインを指定します。スタンドアロンのクライアントではドメイン・ディレクトリを明示的に指定する必要はありません。nodemanager.domains
ファイルでは、ノード・マネージャ・クライアントのアクセスがこのファイル内に表示されたドメインに制限されるので、セキュリティがさらに強化されます。クライアントは、nodemanager.domains
に表示されたドメインに対してのみコマンドを実行できます。
このファイルには、ノード・マネージャ・インスタンスが制御する各ドメインのドメイン・ディレクトリを次の形式で指定するエントリが含まれている必要があります。
domain-name=domain-directory
ユーザーがドメインに対してコマンドを発行すると、ノード・マネージャはnodemanager.domains
からドメイン・ディレクトリをルックアップします。
スクリプト・ベースのノード・マネージャでは、このファイルのデフォルトの場所はWL_HOME
/common/nodemanager
になります。WL_HOME
はOracle WebLogic Serverのインストール先ディレクトリ(ORACLE_HOME
/wlserver
など)です。
スクリプト・ベース実装のノード・マネージャを使用する場合は、NodeManagerHome
に、ノード・マネージャ・インスタンスで制御するドメインを指定するnodemanager.domains
ファイルを作成またはコピーする必要があります。あるいは、WLSTコマンドnmEnroll
を使用して、WebLogicドメインをスクリプトベースのノード・マネージャに登録することも可能です。「nodemanager.domainsファイルの構成」を参照してください
ステップ6: 管理サーバーの起動
管理サーバーを起動する標準的な方法は、用意されているstartWebLogic
スクリプトを実行するというものですが、かわりにスクリプト・ベース実装のノード・マネージャで管理サーバーを監視して高可用性を保証することもできます。wlscontrol.sh
ノード・マネージャ・スクリプトを実行して、管理サーバーをローカルで起動します。
本番ドメインを使用する場合は、正常に起動できるように管理サーバーの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
ステップ7: 管理対象サーバーでのノード・マネージャの構成
管理対象サーバーをホストする各マシンでは、スケルトン・ドメインを作成し、構成します。
-
ローカルのターミナルから、各管理対象サーバー・ホスト・マシンおよびバックアップ・マシンの
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ドメインを登録する必要があります。
ステップ8: 管理対象サーバーの起動によるノード・マネージャの設定と構成のテスト
管理対象サーバーを起動して、ノード・マネージャの設定および構成をテストします。
- 管理サーバーのドメイン
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
)の起動を試行してこのプロセスを繰り返します。正常に起動する度に、そのサーバーを停止してください。
ステップ9: UNIXマシンの構成
UIDまたはGIDの構成の詳細は、Oracle WebLogic Server管理コンソール・オンライン・ヘルプのUnixマシン構成に関する項を参照してください。
表4-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 |
サーバー |
< |
ステップ10: マシンへのサーバーの割当
すべてのUNIXマシンが作成されたら、WebLogic Server管理コンソールを使用して各サーバーの「マシン」プロパティを設定し、各サーバーが対応するUNIXマシンに関連付けられるようにします。
Oracle WebLogic Server管理コンソール・オンライン・ヘルプのサーバー・インスタンスのマシンへの割当てに関する項を参照してください。
ステップ11: 管理対象サーバーの起動
WebLogic Server管理コンソールを使用して管理対象サーバーを起動します。
Oracle WebLogic Server管理コンソール・オンライン・ヘルプの管理コンソールからの管理対象サーバーの起動に関する項を参照してください。
各管理対象サーバーの/
home
/ndmgr/
clustdomain
/servers/
managed_server_name
/logs
ディレクトリにあるサーバー・ログで、サーバーがエラーなく起動していることを確認します。
スクリプト・ベースのノード・マネージャのセキュリティの構成
スクリプトベースのノード・マネージャのセキュリティを構成するには、デフォルトのSSHポートをオーバーライドするステップを実行し、Oracle WebLogic Serverスクリプトのセキュリティを構成し、リモート・サーバーの起動セキュリティを構成し、キーと値のペアを生成して配布します。
この項には次のトピックが含まれます:
デフォルトのSSHポートのオーバーライド
ノード・マネージャで使用されるデフォルトの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ポートを編集できます。
Oracle WebLogic Serverスクリプトのセキュリティの構成
サーバーの移行などのタスクを実行するには、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
個々のキーと値のペア
ノード・マネージャ・クライアントをホストするマシンごとに、次の手順を行います。
- 前の項のステップ1の説明に従って、ノード・マネージャ・ユーザーの個々のRSAキー値ペアを生成します。「共有のキーと値のペア」を参照してください。
- 前の項のステップ2の説明に従って、マシン上の
~/.ssh/authorized_keys
ファイルに公開キーを追加します。「共有のキーと値のペア」を参照してください。