Composer での ThingWorx モデルの定義 > モデル化 > 統合コネクタ > 統合コネクタの前提条件 > 統合コネクタの Integration Runtime Service の初期設定
統合コネクタの Integration Runtime Service の初期設定
ThingWorx のインストール後、ThingWorx ランタイムサービスをダウンロードして設定するには、次の手順に従います。Docker 環境の場合、インストーラを使用して統合コネクタの基本設定を行うことができます。インストーラにはログファイルが含まれており、次のようにいくつかの設定を修正できます。
Integration Runtime のダウンロード
Integration Runtime サービスは、support.ptc.com「ソフトウェアのダウンロード」 > 「ソフトウェアアップデートのご注文またはダウンロード」 > 「ThingWorx Foundation」 > 「Release <バージョン>」 > 「ThingWorx Integration Runtime」 > 「最新の製造コード」 > 「ThingWorx-Integration-Runtime-<バージョン>」から入手できます。
Integration Runtime の設定
* 
IntegrationRuntime Thing Template から Thing を作成しないでください。
1. Integration Runtime が ThingWorx Platform への通信に使用するための ThingWorx のアプリケーションキーを作成します。
2. 次のオプションのいずれかを使用し、Java プロセスとして統合サービスを起動します。
* 
-Dorg.apache.camel.jmx.createRmiConnector の設定を有効にしないでください。
接続パラメータを指定した外部コンフィギュレーションファイル。
java -DconfigFile=<IntegrationRuntime 設定へのパス>-jar <IntegrationRuntime-x.x.x へのパス>.jarx.x.x は使用するバージョンに置き換えてください。
3. (オプション) カスタム Logback 設定ファイルを作成し、次の記述を使用してコマンドラインにそのファイルへのパスを指定します。-Dlogs.includedLogback=<path to logback include>
4. コンフィギュレーションファイル integrationRuntime-settings.jsonエントリを暗号化しているかコンフィギュレーションファイル全体を暗号化している場合、コマンドラインで以下を使用して security-common 暗号化コンフィギュレーションへのパスを指定しなければなりません。
* 
以下の例で、コンフィギュレーションファイル全体を暗号化している場合には -Dencrypted.config.file=true を必ず指定する必要があり、暗号化されている Integration Runtime コンフィギュレーションファイルへのパスを指していなければなりません。ファイル内のエントリだけを暗号化している場合、この設定を省略するか false に設定します。
java -Dsecret.management.config.file=<encryption.conf へのパス> -Dencrypted.config.file=true -DconfigFile=<暗号化されている integrationRuntime-settings.json.encrypted へのパス>
コマンドの例を以下に示します。
java -Dsecret.management.config.file=C:\Integ_runtime\encryption.conf -Dencrypted.config.file=true -DconfigFile=integrationRuntime-settings.json.encrypted -jar C:\Integ_runtime\integration-runtime-x.x.x-bXXX.jar
5. ThingWorx 高可用性 (HA) クラスタを実行している場合、すべての WebSocket 接続が ThingWorx Connection Server を介してルーティングされなければなりません。
統合コネクタは Websocket を使用して ThingWorx と通信します。一般的な HA 環境では、複数の接続サーバーを使用し、接続サーバーの前にロードバランサーを配置します。HA 環境では、統合ランタイムは設定済みのロードバランサーを介して接続サーバーにルーティングされなければなりません。
サンプルコンフィギュレーションファイル (integrationRuntime-settings.json)
{
"traceRoutes": "false",
"OutboundTimeout": "1",
"Thingworx": {
"appKey": "1234abcd-xxxx-yyyy-zzzz-5678efgh",
"host": "localhost",
"port": "8443",
"basePath": "/Thingworx",
"sslEnable": "true",
"ignoreSSLErrors": "false"
},
"Performance": {
"minPoolSize":"4",
"maxPoolSize":"10",
"maxThreadLife":"10000",
"maxQueueSize":"1000"
},
"Proxy": {
"host":"localhost",
"port":"8888",
"user":"<proxy username>",
"pass":"<proxy password>"
},
"SSL": {
"verbose": "true",
"Keystore": {
"path": "/usr/security/keystore.jks",
"password": "encrypt.keystore.password"
},
"Truststore": {
"path": "/usr/security/truststore",
"password": "encrypt.truststore.password"
}
},
"RetryPolicy": {
"MaximumRetries": 2,
"RetryDelay": 2000,
"BackoffMultiplier": 1
},
"RedirectPolicy": {
"MaximumRedirects": 3,
"EnableRedirect": true
}
}
コンフィギュレーションファイルの設定
説明にあるように、一部のコンフィギュレーション設定を指定するか、Java システムプロパティ (例: -D<name>=<value>) を使用してコンフィギュレーションファイルの設定をオーバーライドできます。
Integration Runtime 設定
設定
デフォルト
説明
traceRoutes
false
ルートの実行で、ルートの各プロセッサが呼び出されるたびにメッセージをログ記録するかどうかを指定します。
Thingworx
ThingWorx Platform (単一サーバーモード) または接続サーバーのロードバランサー (クラスタモード) に接続するために必要な設定を JSON フォーマットで指定します。
SSL
JSON フォーマットで Secure Sockets Layer (SSL) 設定を指定します。
ThingWorx の設定
設定
デフォルト
説明
appKey
この Integration Runtime を使用できるように設定されている、ThingWorx Platform からアプリケーションキーを指定します。この設定は、Java システムプロパティを使用してオーバーライドできます。
* 
暗号化の手順については、以下のセクションを参照してください。
basePath
/Thingworx
ThingWorx Platform (単一サーバーモード) または接続サーバーのロードバランサー (クラスタモード) への URI の基本パスを指定します。この設定は、Java システムプロパティを使用してオーバーライドできます。
OutboundTimeout
WSCommnucationSubsystem のアイドル接続タイムアウト
待機状態のサードパーティリクエストに対する Integration Runtime のタイムアウトを指定します。値が指定されていない場合、Integration Runtime は WSCommunicationSubsytem のアイドル接続タイムアウトから値をとります。
Integration Runtime は起動すると、integrationRuntime-settings.json ファイルで指定されている値と WSCommunictaionSubsystem のアイドル接続タイムアウトを比較します。この 2 つの値のうちの小さい方が Integration Runtime に渡されます。
デフォルト値は 30 で、必要に応じて設定できます。
host
localhost
ThingWorx Platform (単一サーバーモード) または接続サーバーのロードバランサー (クラスタモード) への URI のホストを指定します。この設定は、Java システムプロパティを使用してオーバーライドできます。
port
443
ThingWorx Platform (単一サーバーモード) または接続サーバーのロードバランサー (クラスタモード) への URI のポートを指定します。この設定は、Java システムプロパティを使用してオーバーライドできます。
sslEnable
true
WebSocket を介して ThingWorx Platform に接続するために SSL を使用するかどうかを指定します。true の場合、URI に "wss" プロトコルが使用されます。その他の場合、"ws" プロトコルが使用されます。
ignoreSSLErrors
false
SSL エラーを無視するかどうかを指定します。本番環境では、この値を true に設定しないでください。
パフォーマンス設定
設定
デフォルト
説明
minPoolSize
4
イベントの処理プールに割り当るスレッドの最小数。
maxPoolSize
10
イベントの処理プールに割り当るスレッドの最大数。
maxThreadLife
10000
スレッドの最大応答待機時間。
maxQueueSize
1000
新しい作業スレッドの追加前におけるキューの最大エントリ数。
[オプション] プロキシ設定
設定
デフォルト
説明
host
該当なし
プロキシホストの名前。
port
該当なし
プロキシホストのポート番号。
User
該当なし
プロキシホストのユーザー名。
Pass
該当なし
プロキシホストのパスワード。
SSL の設定
設定
デフォルト
説明
verbose
false
Java ハンドシェイクプロトコルで詳細メッセージを出力するかどうかを指定します。true の場合、Java システムプロパティ javax.net.debugssl:handshake: verbose に設定されます。
Keystore
JSON フォーマットで SSL キーストアの設定を指定します。
Truststore
JSON フォーマットで SSL トラストストアの設定を指定します。
キーストアの設定
設定
説明
path
SSL キーストアファイルのパスを指定します。この設定を使用することは、Java システムプロパティ javax.net.ssl.keyStore を設定するのと同等です。
password
SSL キーストアファイルのパスワードを指定します。この設定を使用することは、Java システムプロパティ javax.net.ssl.keyStorePassword を設定するのと同等です。パスワードをプレーンテキストとして保存することを避けるため、値 encrypt.keystore.password を使用します。この後の「暗号化パスワードの設定」セクションを参照してください。
トラストストアの設定
設定
説明
path
SSL トラストストアファイルのパスを指定します。この設定を使用することは、Java システムプロパティ javax.net.ssl.trustStore を設定するのと同等です。
password
SSL トラストストアのファイルのパスワードを指定します。この設定を使用することは、Java システムプロパティ javax.net.ssl.trustStorePassword を設定するのと同等です。パスワードをプレーンテキストとして保存することを避けるため、値 encrypt.truststore.password を使用します。この後の「暗号化パスワードの設定」セクションを参照してください。
再試行ポリシーの設定
設定
デフォルト
説明
MaximumRetries
2
システムの可用性が理由で失敗したリクエストを再試行する回数を指定します。
HTTP リクエストの場合、サーバーからの 503 レスポンスで再試行が発生します。
RetryDelay
1000
リクエストが失敗し、再試行が可能な場合、RetryDelay は再試行する前に待機する時間をミリ秒単位で表します。RetryDelay は、その後の再試行を決定するときに BackoffMultiplier とともに使用されます。
BackoffMultiplier
1
その後の再試行で RetryDelay を乗算する期間を指定します。たとえば、BackoffMultiplier2 に設定され、MaximumRetries3 に設定されている場合、最初の再試行は 1 秒で、2 回目の再試行はその 2 秒後、3 回目の再試行はその 4 秒後というように行われます。
UnauthorizedRetries
2
未承認のリクエストが理由で失敗したリクエストについて、再試行する回数を指定します。この設定は、サーバーからの 401 レスポンスで HTTP リクエストに適用されます。
リダイレクトポリシーの設定
設定
デフォルト
説明
MaximumRedirects
3
リダイレクトを再試行する回数を指定します。
EnableRedirect
true
リダイレクトステータスコード 3xx のリクエストに対し、リダイレクトを有効にするかどうかを指定します。
コンフィギュレーションファイルの暗号化
セキュリティを向上させるため、コンフィギュレーションファイル全体を暗号化し、オプションで、ファイル内の個々の値を暗号化できます。この機能は Integration Runtime のバージョン 8.0.4+ で提供されています。Integration Runtime のインストールには security-common ライブラリが含まれています。このライブラリの JAR は Integration Runtime のインストールに含まれています。これはコンフィギュレーションファイルの暗号化と解読行うバックエンドツールを提供します。
コマンドラインインタフェース (CLI) を使用してセキュリティライブラリを操作でき、コンフィギュレーションファイルの暗号化などを実行できます。この CLI の詳細については、セキュリティ管理ツールを参照してください。このトピックでは、このツールを取得して使用する方法について説明しています。参考までに、Integration Runtime に固有の手順を以降のセクションに記載しています。CLI は PTC サポートサイトからダウンロードできます。
1. security-common ライブラリには専用のコンフィギュレーションファイルが必要です。テキストエディタを使用して、以下のファイルを作成し、encryption.conf として保存します。
{
security {
secret-provider = "com.thingworx.security.provider.keystore.KeyStoreProvider"
default-encryption-key-length = 128
keystore {
password-file-path = "/ThingworxPlatform"
password-file-name = "keystore-password"
path = "/ThingworxStorage"
name = "keystore"
}
}
}
2. encryption.conf ファイルで指定されているディレクトリ password-file-path および path を作成します。上記の例では、password-file-path ディレクトリは /ThingworxPlatform です (Linux)。Windows コンピュータでは、C:\\ThingworxPlatform になります。
* 
暗号化されたコンフィギュレーションファイルは任意の場所に保管できます。暗号化コンフィギュレーションファイルおよび環境変数のパスが正しく設定されていることを設定します。
3. CLI ディストリビューションをダウンロードして抽出していることを前提として、コンフィギュレーションファイルを暗号化できます。コマンドプロンプトまたはシェルを開き、securitycommon-cli-x.x.x.xx/bin ディレクトリに移動します (ここで x.x.x.xx はツールのバージョンを表します)。
4. お使いのオペレーティングシステムに適した CLI を実行します。
Linux - security-common-cli
Windows - security-common-cli.bat
5. プロンプトが表示された場合、初期化するセキュリティコンフィギュレーションファイルの名前を入力します。Linux でのシーケンスの例を以下に示します。
../security-common-cli-1.x.x.xx/bin$ ./security-common-cli
Not initialized, use 'init <config-file>' to initialize
> init [pathTo]encryption.conf
Loading config from file encryption.conf
Secret Provider: com.thingworx.security.provider.keystore.KeyStoreProvider
KeyStore
Path: /ThingworxPlatform/keystore
Password File: /ThingworxStorage/keystore-password
Keystore Password: 336974503775017XXXX
>
6. 引き続きセキュリティ CLI から、Integration Runtime のコンフィギュレーションファイルを暗号化します。この例では、以下に示すように、encryptFile コマンドを使用して integrationRuntime-settings.json を暗号化しています。
encryptFile C:\Integ_runtime\integrationRuntime-settings.json C:\Integ_runtime\integrationRuntime-settings.json.encrypted
integrationRuntime-settings.json.encrypted が暗号化されたコンフィギュレーションファイルです。
7. decryptFile コマンド: decryptFile C:\Integ_runtime\integrationRuntime-settings.json.encrypted C:\Integ_runtime\integrationRuntime-settings.json.decrypted を使用して、正常に暗号化されていることを確認します。
* 
integrationRuntime-settings.json.decrypted のコンテンツが元の integrationRuntime-settings.json ファイルのコンテンツと一致していなければなりません。
* 
暗号化されていないバージョンのファイルを除去します。
8. プロンプトで exit と入力して CLI を閉じます。
コンフィギュレーションファイル内のエントリの暗号化
Integration Runtime 8.0.4+ では、コンフィギュレーションファイル内のパスワードやその他のエントリを暗号化できます。PostgreSQL データベースのパスワードを暗号化するために使用する ThingWorx Platform と同じ暗号化メカニズムを使用します。
パスワードの暗号化の指示に従いますが、値 encrypt.db.password または encrypt.licensing.password の代わりに encrypt.app.key を使用し、platform-settings.json の代わりに integrationRuntime-settings.json を使用します。ThingWorx システムが PostgreSQL データベースのパスワードに対してすでに暗号化を使用している場合、新しいパスワードが同じキーストアファイルに追加されます。その他の場合は、新しいキーストアファイルが作成されます。
キーストアおよびキーストアパスワードのマイグレーション
キーストアを使用して値を暗号化した後にマイグレーションを実行している場合は、キーストアファイルとパスワードファイルで以下の手順を実行します。
1. Integration Runtime がキーストアファイルとして引き続き twx/config および /ThingworxStorage/keyStore を使用している場合は、以下の操作を行います。
/twx/config/ThingworxPlatform/keystore-password にコピーします
/ThingworxStorage/keyStore/ThingworxStorage/keystore.jks にコピーします
2. ThingWorx 8.5 より、キーストアのフォーマットが .jks から .pfx に変わりました。キーストアをマイグレーションする必要があります。詳細については、セキュリティ管理ツールのトピックの「ThingWorx 8.5 での変更」を参照してください。
3. この手順は、Integration Runtime がキーストアファイルを 8.5 以降の ThingWorx サーバーのキーストアと共有しているかどうかによって異なります。
キーストアファイルを 8.5 以降の ThingWorx Platform のキーストアと共有している場合、Upgrading ThingWorx ガイドに従って、ThingWorx サーバーが以前の ".jks" から新しい ".pfx" フォーマットにキーストアファイルを自動的にマイグレーションするように設定します。
キーストアファイルを Platform と共有していない場合、以下の手順に従います。
a. 最新バージョンの security-common-cli をダウンロードします。詳細については、セキュリティ管理ツールのトピックの「使用法」のセクションを参照してください。
b. CLI を開始すると、キーストアが自動的にマイグレーションされます。例:

./security-common-cli encryption.conf
c. encryption.conf ファイルで、すべての keystore.jkskeystore に変更します。ファイル拡張子 .pfx は付けないでください。
d. 以前の keystore.jks を安全な場所にバックアップし、ThingworxStorage ディレクトリから除去します。
SSL 用の設定
デフォルトでは、Integration Runtime は SSL を使用して ThingWorx に接続します。次の表では、ThingWorx Platform のコンフィギュレーションと、正常に接続するために必要な関連する Integration Runtime コンフィギュレーション設定について説明しています。ThingWorx Platform に接続するには、キーストアの設定は必要ありません。双方向 SSL ネゴシエーションで、Integration Runtime からクライアント証明書が提供されます。
ThingWorx のコンフィギュレーション
Integration Runtime 設定
ThingWorx が SSL 用に設定されていない
Java システムプロパティを使用して ThingworxUri を指定して ws プロトコルを使用するか、SSL 設定で sslEnable=false を指定します。
ThingWorx が自己署名証明書を使用した SSL 用に設定されている
SSL 設定で sslEnable=true および ignoreSSLErrors=true を指定します。
ThingWorx が自己署名証明書を使用した SSL 用に設定されており、その証明書が信頼できる。
ThingWorx は証明機関 (CA) によって署名された証明書を使用した SSL 用に設定されており、CA 証明書チェーン全体を提供するようには設定されていない。
キーストアファイルから証明書をエクスポートし、トラストストアファイルにインポートします。
SSL 設定で enable=true および Trustore を指定します。
トラストストアのパスワードを暗号化できます。
または、証明書を Integration Runtime JVM のデフォルトのトラストストア (通常は $JAVA_ホーム/lib/security/cacerts に配置されている) に追加します。この場合、SSL 設定でトラストストアを明示的に指定する必要はありません。
ThingWorx は証明機関 (CA) によって署名された証明書を使用した SSL 用に設定されており、CA 証明書チェーン全体を提供するように設定されている。
SSL 設定で enable=true を指定します。これはデフォルトの設定です。
SSL コンフィギュレーション例: 非本番コンフィギュレーション
ThingWorx が自己署名証明書を使用した SSL 用に設定されている場合、次の integrationRuntime-settings.json を使用します。
{
"Thingworx": {
"appKey": "1234abcd-xxxx-yyyy-zzzz-5678efgh",
"host": "localhost",
"port": "8443",
"sslEnable": "true",
"ignoreSSLErrors": "true"
}
}
SSL コンフィギュレーション例: 本番コンフィギュレーション
ThingWorx が自己署名証明書を使用した SSL 用に設定されている場合、次の手順を使用してトラストストアを作成します。
1. サーバーの自己署名証明書を取得します。次の手順で、Integration Runtime に強制的にこれを信頼させます。
これは、ローカルに保存された証明書がない場合に、ThingWorx Platform の自己署名証明書を取得する方法の 1 つです。
openssl s_client -connect your-ThingWorx-platform:8443< /dev/null| sed -ne'/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p'twx-platform-public.crt
2. サーバーの自己署名証明書を信頼するために Integration Runtime が使用するトラストストアのローカルコピーを作成します。
JVM のストックトラストストアに欠落した証明書を直接追加する代わりに、まずコピーを保存し、そのコピーに欠落した証明書を追加します。
cp $JAVA_HOME/jre/lib/security/cacerts /etc/opt/java/security/cacerts-customized
$JAVA_HOME/bin/keytool -importcert -alias somealias -keystore /etc/opt/java/security/cacerts-customized -file twx-platform-public.crt
3. トラストストアのパスワードを変更します。
JVM cacerts ファイルのデフォルトパスワードは changeit です。ほかのキーストアのパスワードを変更する場合と同様に、次を実行して cacerts-customized のパスワードを変更できます。
keytool storepasswd keystore /etc/opt/java/security/cacerts-customized
Enter keystore password: changeit
New keystore password: new-password
Re-enter new keystore password: new-password
4. 次の integrationRuntime-settings.json を使用します。
{
"Thingworx": {
"appKey": "1234abcd-xxxx-yyyy-zzzz-5678efgh",
"host": "localhost",
"port": "8443",
"sslEnable": "true",
"ignoreSSLErrors": "false"
}
"SSL": {
"Truststore": {
"path": "/etc/opt/java/security/cacerts-customized",
"password": "new-password"
}
}
}
サンプルログコンフィギュレーションファイル (integrationRuntime-logback.xml)
<?xml version="1.0"?>
<included>
<property name="logs.dir" value="/ThingworxStorage/IRlogs" />
<property name="logs.uniqueId" value="${processId}" />
<property name="logs.maxFileSize" value="1MB" />
<property name="logs.maxIndex" value="5" />
<logger name="com.twx.integration" level="DEBUG" />
<logger name="org.apache.camel" level="DEBUG" />
</included>
ログコンフィギュレーションファイルの設定
IntegrationRuntime.jar には標準の logback.xml コンフィギュレーションファイルが含まれています。Logback の設定の詳細については、Logback Project を参照してください。このファイルにより、コンソールへのログを行うルートロガーと、ローリングログファイルが設定されます。Java システムプロパティ logs.includedLogback を使用して、オプションの include ファイルを指定できます。この include ファイルを使用して、ほかのロガーを有効にし、プロパティを指定します。ローリングログファイルでは、固定ウィンドウとサイズに基づいたトリガポリシーが設定され、次に示すプロパティを設定することでカスタマイズできます。
設定
デフォルト
説明
logs.dir
ログファイルが生成される場所を指定します。デフォルトは、現在のワーキングディレクトリです。
logs.maxFileSize
5MB
新しいログファイルへのロールオーバーをトリガする、ログファイルの最大サイズを指定します。
logs.maxIndex
9
固定サイズのロールオーバーウィンドウの最大インデックスを指定します。初期インデックスは 1 から始まります。
logs.timestampPattern
yyyy-dd-MM HH:mm:ss.SSS
各ログイベントに使用するタイムスタンプパターンを指定します。
logs.uniqueId
<processId>
ログファイルの名前に追加される値を指定します。これを使用して、一意のファイル名が生成されます。デフォルト値は、JVM のプロセス ID を返す Java コールバックを介して取得されます。
これは役に立ちましたか?