他サーバ上のバッチドメインに対してotxadminコマンドを実行すると、ConnectTimeoutが発生しコマンドが実行できません。
コマンドを実行すると、以下のエラーメッセージが出力されます。
> /opt/WebOTX/bin/otxadmin <サブコマンド> --user <ユーザ名> --password <パスワード>--host <IP> --port 6312 --container container1
Unable to connect to admin-server at given host: [<IP>] and port: [<ポート番号>].
Please check if this server is up and running and that the host and port provided are correct.
Cause : Exception creating connection to: <IP>; nested exception is:
java.net.SocketTimeoutException: connect timed out
CLI137 Command get-bs-container-status failed.
バッチドメインの管理ポート(既定値:6312)の接続プロトコルの既定値はJMX/RMIです。
接続プロトコルがJMX/RMIの場合、otxadminコマンドを実行したノード上のOSがotxadminコマンドプロセスに対して一時ポートを割り当て、バッチドメインはこの一時ポートに対して応答を返します。
SocketTimeoutExceptionによる通信エラーの発生原因は、この一時ポートがバッチドメインを起動しているサーバ側のファイヤーウォール等によってブロックされていることにより発生しています。
対処方法としては概略2つの方法があります。
1.一時ポートに割り当てられうる全てのポートを開放する
2.管理ポートへの接続プロトコルにJMXMPを使用する
対処方法1は、OSが一時ポートとして割り当てるすべてのポート(例:Red Hat Linux の一時ポートの範囲は32768から61000)を開放する必要がある為、セキュリティ要件等によりが採用できない場合があります。
以下、このような場合にも採用可能な対処方法2の手順を記します。
[前提条件]
・バッチドメインが正常に起動していること
・ドメインの定義に JMXMPプロトコル用JMXコネクタ : system-option が存在していること
ドメインの定義に JMXMPプロトコル用JMXコネクタ : system-option が存在しているかどうかは、 以下のコマンドを実行して、属性値を取得することができるかどうかで確認することができます。 system-optionが存在しない場合、コマンドが失敗します。
> otxadmin get <<接続オプション>> server.admin-service.jmx-connector.system-option.*
ドメインの定義に JMXMPプロトコル用JMXコネクタ : system-option が存在していない場合、以下の1 ~ 4の手順により、JMXMPプロトコルのドメイン管理ポートを使用可能にしてください。system-option が存在する場合は [JMXMPコネクタの有効化手順] の項に従って有効化の設定を実施してください。
1.ドメインを停止します。
2.${DOMAIN_HOME}/config/domain.xmlのバックアップを取ります
3.テキストエディタで${DOMAIN_HOME}/config/domain.xmlを編集し、下記の修正を行います。
修正前
<domain >
<configs>
<config name="server-config">
<admin-service >
<jmx-connector accept-all="false" access-log-enabled="true" address="0.0.0.0" auth-realm-name="osuser-realm" enabled="true" name="system" port="6312" protocol="rmi_jrmp" security-enabled="false">
修正後
<domain >
<configs>
<config name="server-config">
<admin-service >
<jmx-connector accept-all="false" access-log-enabled="true" address="0.0.0.0" auth-realm-name="osuser-realm" enabled="true" name="system" port="6312" protocol="rmi_jrmp" security-enabled="false">
<jmx-connector accept-all="false" access-log-enabled="true" address="0.0.0.0" auth-realm-name="osuser-realm" enabled="true" name="system-option" port="6812" protocol="jmxmp" security-enabled="true"/>
4.ドメインを起動します。
[JMXMPコネクタの有効化手順]
1.JMXMPコネクタを有効化します
JMXMPを有効にするために、以下のコマンドを実行してください。
> otxadmin set <<接続オプション>> server.admin-service.jmx-connector.system-option.enabled=true
2.${DOMAIN_HOME}/config/server.policyのバックアップを取ります
3.テキストエディタで${DOMAIN_HOME}/config/server.policyを編集し、下記の修正を行います。
修正前
59 // for JMX Remote API
60 //permission javax.management.MBeanPermission "*", "*";
61 permission javax.management.MBeanServerPermission "*";
修正後
59 // for JMX Remote API
60 permission javax.management.MBeanPermission "*", "*";
61 permission javax.management.MBeanServerPermission "*";
4.ドメインを再起動します
5.otxadminコマンドを実行します
有効化したJMXMPコネクタを利用してドメインに接続します。
otxadminコマンドのオプションに--protocolオプション、--secureオプションを追加し、--portオプションには、JMXコネクタのポート番号を指定します。
変更前
otxadmin <コマンド> --port 6312 ~~
変更後
otxadmin <コマンド> --port 6812 --protocol=jmxmp --secure=true
詳細はマニュアルを参照ください。
WebOTX Manual V8.4 (Batch Server)
[ 運用・利用ガイド > 2.2.1.2. JMXMPプロトコルのドメイン管理ポートを使用する ]
【対象製品】Batch Server
【確認済みのバージョン】V8.4~V9.2
【確認済みのエディション】すべて
【確認済みの対象OS】すべて
【確認済みのJavaバージョン】すべて
【カテゴリー】運用/設定