概要
TDV Studioのマネージャ > サーバの概要画面からは、リモートのTDV Serverのステータス確認、およびサービスの開始 / 停止 / 再開操作が可能です。
しかし、TDV Studio(例:利用者のWindows PC)からTDV Server(例:クラウドの仮想マシン)へ接続するにあたり、ロードバランサを経由する環境や、ファイアウォールによる通信制限がある環境において、ステータスが「不明サーバステータス (Unknown server status)」となり、操作ボタンが非アクティブになる事象が発生する場合があります。
本記事では、本機能を利用するために必要なネットワークポートの要件と、TDV Studioからの操作時にTDV Server側で発生するプロセスの挙動について解説します。
挙動と必要なポート要件
データ通信ポートのみを許可した場合の挙動
TDV Studioを利用した一般的な開発業務(データソース作成やSQL実行等)においては、以下のデータ通信用ポートの許可が必要です。
| ポート |
ポート (暗号化通信用) |
用途 |
|---|---|---|
| 9400 (TCP) | 9402 (TLS) | Webサービス・Studio主要通信 |
| 9401 (TCP) | 9403 (TLS) | JDBC / ODBC通信 |
上記のポートは、暗号化通信用に 9402 / 9403 の組み合わせのみが許可されていれば問題ありません。また、暗号化通信ではなく平文で接続したい場合は 9400 / 9402 の組み合わせのみで問題ありません。
上記ポートのみが許可されている環境下では、通常の開発作業自体は可能ですが、サーバの概要画面におけるTDV Serverのステータス取得や開始・停止・再開操作は実行できません。
リモート管理機能に必要な追加ポート要件
TDV Studioからのステータスの取得および起動・停止操作を行うには、TDV Server上で稼働するMonitorプロセス(Linux版)またはMonitorサービス(Windows版)との通信が必要です。通信経路(ロードバランサやファイアウォール等)において、以下のTCPポートを追加で許可してください。
| ポート | 用途 |
|---|---|
| 9406 (TCP) | Monitorデーモン (Monitor Request Port) |
| 9409 (TCP) | Monitor RMIレジストリ / JMX-RMI |
上記ポートを追加許可することで、正常なステータスが表示され、ボタンがアクティブになります。
リモート管理機能のメカニズム
TDV Studioからの「開始」「停止」操作が機能する背景には、TDV Serverのアーキテクチャが「Monitor (親)」と「Serverプロセス (子)」の2階層構造となっている仕様が関係しています。
以下に、OSごとのプロセス挙動を解説します。
Linux版 (RHEL 9 想定) の場合
Linux上で正常にTDV Serverが稼働している際、主要なJavaプロセスとして以下の2つが実行されています。
| プロセス | 用途 |
|---|---|
Monitorプロセス
(MonitorBoot)
|
OSから起動される親プロセスです。 ポート 9406, 9409 のリッスンを担当します。 |
TDV Serverプロセス (ServerBoot)
|
Monitorプロセスから起動される子プロセスです。 ポート 9400-9403 をリッスンし、実際のデータ仮想化処理を担当します。 |
MonitorプロセスとTDV Serverプロセスは、それぞれ以下のようにpsコマンドで確認することができます。
$ ps auxww | grep MonitorBoot tibco 1374 0.3 2.7 4606220 210528 ? Sl 22:01 0:12 /opt/TIBCO/TDV_Server_8.8/jdk/bin/java -Dlog4j2.configurationFile=/opt/TIBCO/TDV_Server_8.8/conf/monitor/log4j2.properties -Djava.security.properties=/opt/TIBCO/TDV_Server_8.8/conf/server/security/java.security -Dzookeeper.jmx.log4j.disable=true -Dapps.install.dir=/opt/TIBCO/TDV_Server_8.8 -Dconf.install.dir=/opt/TIBCO/TDV_Server_8.8 -classpath /opt/TIBCO/TDV_Server_8.8/apps/base/lib/csbase.jar:/opt/TIBCO/TDV_Server_8.8/apps/base/lib/bcprov-jdk18on-1.73.jar:/opt/TIBCO/TDV_Server_8.8/apps/base/lib/bcpkix-jdk18on-1.73.jar com.compositesw.base.boot.MonitorBoot start serverstarthook echo Server Start Hook serverstophook echo Server Stop Hook log /opt/TIBCO/TDV_Server_8.8/logs/cs_monitor.log
$ ps auxww | grep ServerBoot tibco 1745 2.9 15.5 5056964 1204772 ? Sl 22:02 1:47 /opt/TIBCO/TDV_Server_8.8/jdk/bin/java -Ddrill.java.home=/opt/TIBCO/TDV_Server_8.8/jdk -server -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/opt/TIBCO/TDV_Server_8.8/logs -XX:MaxGCPauseMillis=200 -Xmx2048m -Djava.library.path=/opt/TIBCO/TDV_Server_8.8/apps/server/lib/svn/lin64 --add-opens=java.xml/com.sun.org.apache.xerces.internal.dom=ALL-UNNAMED --add-opens=java.xml/com.sun.org.apache.xerces.internal.parsers=ALL-UNNAMED --add-exports=java.base/sun.security.provider=ALL-UNNAMED --add-opens java.base/java.lang=ALL-UNNAMED --add-opens=java.base/sun.util.calendar=ALL-UNNAMED --add-opens=java.xml.crypto/com.sun.org.apache.xml.internal.security=ALL-UNNAMED --add-opens=java.xml.crypto/com.sun.org.apache.xml.internal.security.algorithms=ALL-UNNAMED --add-opens=java.xml.crypto/com.sun.org.apache.xml.internal.security.keys=ALL-UNNAMED --add-opens=java.xml.crypto/com.sun.org.apache.xml.internal.security.utils=ALL-UNNAMED --add-opens=java.xml.crypto/org.jcp.xml.dsig.internal=ALL-UNNAMED --add-opens=java.xml.crypto/org.jcp.xml.dsig.internal.dom=ALL-UNNAMED --add-opens=java.xml/com.sun.org.apache.xerces.internal.jaxp=ALL-UNNAMED --add-exports=java.security.jgss/sun.security.krb5=ALL-UNNAMED --add-opens=java.base/sun.nio.ch=ALL-UNNAMED --add-opens=java.base/jdk.internal.misc=ALL-UNNAMED --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=jdk.management/com.sun.management.internal=ALL-UNNAMED --add-exports=java.naming/com.sun.jndi.ldap=ALL-UNNAMED --add-exports=java.base/sun.nio.ch=ALL-UNNAMED --add-exports=java.base/jdk.internal.ref=ALL-UNNAMED --add-exports=java.base/sun.net.www.protocol.file=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.xml/com.sun.org.apache.xerces.internal.util=ALL-UNNAMED --add-opens=java.base/sun.util.calendar=ALL-UNNAMED -Dfile.encoding=UTF-8 -Dorg.apache.commons.logging.log.com.sun.xml.rpc=error -Dorg.apache.commons.logging.Log=org.apache.commons.logging.impl.Log4JLogger -Dlog4j2.configurationFile=/opt/TIBCO/TDV_Server_8.8/conf/server/log4j2.properties -Djava.security.properties=/opt/TIBCO/TDV_Server_8.8/conf/server/security/java.security -Dorg.eclipse.jetty.xml.XmlParser.Validating=false -Dorg.eclipse.jetty.servlet.SessionCookie=JSESSIONID:9400 -Dorg.apache.xml.dtm.DTMManager=com.compositesw.xml.dtm.pdtm.ProxyDTMMgrImpl -Dorg.apache.xml.utils.AbstractDOMBuilder=com.compositesw.xml.dtm.pdtm.ProxyDOMBuilder -Dcom.sun.xml.rpc.streaming.XMLReaderFactory=com.compositesw.cdms.webapi.rpc.XMLReaderFactoryImpl -Dzookeeper.admin.enableServer=false -Dcom.sun.org.apache.xml.internal.security.resource.config=resource/config.xml -Djava.specification.version=17 -Dhadoop.metrics.init.mode=standby -Dhadoop.home.dir=/opt/TIBCO/TDV_Server_8.8/apps/server/lib/winutils -Dzookeeper.jmx.log4j.disable=true -Dapps.install.dir=/opt/TIBCO/TDV_Server_8.8 -Dconf.install.dir=/opt/TIBCO/TDV_Server_8.8 -classpath /opt/TIBCO/TDV_Server_8.8/apps/base/lib/bcpkix-jdk18on-1.73.jar:/opt/TIBCO/TDV_Server_8.8/apps/base/lib/bcprov-jdk18on-1.73.jar:/opt/TIBCO/TDV_Server_8.8/apps/base/lib/csbase.jar com.compositesw.base.boot.ServerBoot run
TDV Studioから「停止」を実行した際の動作
TDV Studioからポート9409を経由し、親プロセスであるMonitorBootに「停止」コマンドが送信されると、MonitorBootは、子プロセスであるServerBootのみを終了させます。結果としてServerBootは停止しますが、MonitorBoot自身はバックグラウンドで稼働を継続します。 これによりポート9409のリッスンが維持されるため、「開始」操作を受け付けることが可能です。
TDV Studioから「開始」を実行した際の動作
TDV Studioからポート9409を経由し、バックグラウンドで待機中の親プロセスMonitorBootに「開始」コマンドが送信されると、コマンドを受信したMonitorBootは新たな子プロセスとしてServerBootを起動します。結果として、ServerBootが起動してデータ通信用ポート(9400-9403)のリッスンが再開され、TDV Serverとしてのデータ仮想化処理が再び利用可能となります。
Windows Server版 (Windows Server 2022 想定) の場合
Windows版においても基本的なアーキテクチャは同様です。
| サービス / プロセス | 用途 |
|---|---|
Monitorサービス
(TDV Server 8.x)
|
OS起動時に自動開始され、ポート 9406, 9409 で待機します。 |
Javaプロセス (java.exe)
|
Monitorサービスから起動される、データ処理用のServer Engineです。 |
MonitorサービスとJavaプロセスは、タスク マネージャーで確認することができます。
TDV Studioから「停止」を実行した際の動作
TDV Studioから停止命令を送信すると、タスク マネージャー上で稼働している(java.exe)は終了します。しかし、Windowsのサービス画面上では、Monitorサービス(TDV Server 8.x)のステータスは「実行中」のまま維持されます。 このサービスが稼働を継続しているため、TDV Studioからの「開始」指示を受信可能です。
TDV Studioから「開始」を実行した際の動作
TDV Studioから開始命令を送信すると、実行を継続していたMonitorサービス(TDV Server 8.x)がそれを受信し、新たな Javaプロセス(java.exe)を起動させます。結果として、タスクマネージャー上に再びデータ処理用のJavaプロセスが現れ、システムが利用可能となります。
補足:OSコマンドによる停止操作との差異
前述のメカニズムの通り、「TDV Studioからの停止」と「OS上のコマンドを用いた停止」では影響範囲が異なります。
ここでの「OS上のコマンドを用いた停止」とは、以下のような操作を意味します。
- Linux版:
sudo systemctl stop cis.serverを実行 - Windows版: サービスから「TDV Server」サービスを停止
このような「OS上のコマンドを用いた停止」を実行することで、Linux版ではMonitorプロセス (MonitorBoot)、Windows版ではMonitorサービス(TDV Server 8.x)自体が終了します。
これに伴いポート9406/9409もクローズされるため、TDV Studioからはステータス取得不可(不明サーバステータス)となり、リモートからの「開始」操作も実行できなくなります。
日常的なサービスの再起動等はTDV Studioから実施可能ですが、OSのメンテナンス等に伴うシステム全体の停止・起動の際は、OS側のコマンドまたはサービス管理機能を使用してください。