ThingWorx 高可用性 > ThingWorx Foundation のクラスタ設定 > ThingWorx HA のプラットフォームの設定
ThingWorx HA のプラットフォームの設定
ThingWorx のすべての展開と同様に、ThingWorx クラスタ展開では platform-settings.json ファイルが ThingworxPlatform の保存場所に存在する必要があります。各サーバーには、独自の ThingworxPlatform フォルダがあり、サーバーによって platform-settings.json ファイルには若干の違いがあります。
platform-settings.json の設定の詳細および一般的な platform-settings.json ファイルのサンプルについては、platform-settings.json コンフィギュレーションの詳細を参照してください。
クラスタ化されたシステムの、ほとんどの関連設定について以下で説明しています。
基本設定
基本設定
デフォルト
説明
EnableClusteredMode
false
ThingWorx をクラスタとして実行するか (設定は true)、スタンドアロンサーバーとして実行するか (設定は false) を指定します。
拡張パッケージのインポートポリシーの設定
拡張パッケージのインポートポリシーの設定
デフォルト
説明
haCompatibilityImportLevel
WARN
クラスタモードで ThingWorx を実行している場合、拡張機能のメタデータで haCompatibility フラグが true に設定されている拡張機能だけをインポートするように制限できます。デフォルト設定は WARN であり、インポートは可能ですが、警告メッセージが生成されます。この設定を DENY に変更できます。その場合、インポートは失敗し、エラーが生成されます。
クラスタモードの設定
クラスタモードでの ThingWorx の実行に固有の設定。上記の EnableClusteredMode 設定が false に設定されている場合、すべての設定が無視されます。
クラスタモードの設定
デフォルト
説明
PlatformId
none
クラスタ内の各ノードの一意の識別子。この ID は集約されたログに表示されます。これは 32 文字以内の英数字でなければなりません。これは "^[a-zA-Z0-9]{1,32}$" というパターンと一致していなければなりません。
CoordinatorHosts
none
ThingWorx リーダーの選択を調整するために使用される Apache ZooKeeper サーバーのコンマ区切りリスト。文字列パターンは IP:ポートです(例: "127.0.0.1:2181, 127.0.0.2:2181")。
ZKNamespace
ThingWorx
* 
ThingWorx 9.3.0 以降では、クラスタモードの設定が none に変わります。
ZooKeeper でのクラスタの情報の追跡に使用されるルートノードのパス。これは同じ ZooKeeper を使用して複数のクラスタを実行する場合に必要です。ZooKeeper での命名の制約の適用については、http://zookeeper.apache.org/doc/current/zookeeperProgrammers.html#ch_zkDataModel を参照してください。
ModelSyncPollInterval
100
クラスタ内のサーバー間でモデルが同期化される頻度 (単位: ミリ秒)。各サーバーはこの頻度でモデルの変更がないかチェックし、検出された変更をすべて適用します。
ModelSyncWaitPeriod
3000
WebSocket を介して通信している場合、トラフィックはラウンドロビン方式でサーバー間をルーティングされます。WebSocket を介してモデルの変更が行われた場合、次のリクエストは、そのモデルがいずれかのランディングサーバーと同期化するため、指定された時間 (ミリ秒) が経過するまで待機します。タイムアウトの前に同期化されなかった場合、リクエストはタイムアウトエラーによって失敗します。
ModelSyncTimeout
120000
各再試行の待機時間 (ミリ秒単位)。
ModelSyncMaxDBUnavailableErrors
10
サーバーがシャットダウンするまでに許容される、データベース接続が失われたことによって同期が連続して失敗する回数。ModelSyncPollInterval とこの値を掛け合わせた値がおおよその時間 (ミリ秒) になります。
ModelSyncMaxCacheUnavailableErrors
10
サーバーがシャットダウンするまでに許容される、キャッシュ接続が失われたことによって同期が連続して失敗する回数。ModelSyncPollInterval とこの値を掛け合わせた値がおおよその時間 (ミリ秒) になります。
CoordinatorMaxRetries
3
コーディネータとの通信に失敗した場合、失敗する前に n 回再試行します。
CoordinatorSessionTimeout
90000
ThingWorx の優先度を調整する Apache ZooKeeper サービスからの "ハートビート" を受信せずに、ThingWorx が待機する時間 (ミリ秒単位)。
CoordinatorConnectionTimeout
10000
システムがコーディネータと接続するまで待機する時間 (ミリ秒)。
MetricsCacheFrequency
60000
判定基準はサーバーごとに追跡され、クラスタレベルの判定基準として集約されます。この値は、クラスタ判定基準が更新される頻度 (ミリ秒) です。
IgnoreInactiveInterfaces
true
オプション。クラスタモードが有効になっているときに、ThingWorx サーバーをサービスとしてサービス検出プロバイダに登録します。これを行うには、使用可能なすべてのアダプタとそのアドレスを確認し、サイトローカルアドレスを見つけます。1 つも見つからない場合は、最初に見つけたサイトローカルではないアドレスを使用します。この設定はこのロジックに影響します。この設定が true の場合、非アクティブなインタフェースは無視されます。
IgnoreVirtualInterfaces
true
オプション。この設定が true の場合、仮想インタフェースは無視されます。詳細については、上記の IgnoreInactiveInterfaces の説明を参照してください。
HostAddressFilter
none
オプション。指定されている場合、正規表現に基づいてアドレスをフィルタします。指定されていない場合、フィルタは適用されません。たとえば、10 で始まるアドレスをフィルタするには “10\\\\..” と指定し、: が含まれているアドレスをフィルタするには “^.:.*$” と指定します。詳細については、上記の IgnoreInactiveInterfaces の説明を参照してください。
キャッシュの設定
このセクションでは複数のコンフィギュレーションを使用できますが、一般的には、環境に応じてチューニングする場合を除き、以下のみを変更します。
設定
デフォルト
説明
basePath
/services
Ignite は、サービス検出用の Ignite ノードエントリを格納する Ignite フォルダを basePath の下に作成します。複数のクラスタインスタンスに 1 つの ZooKeeper を使用している場合、Ignite クライアントコンフィギュレーションと Ignite サーバー側でデフォルトを /clusterXX/services に変更します。詳細については、「中央 ZooKeeper クラスタの設定」を参照してください。
* 
basePath の設定は、ThingWorx 9.3.0 以降のみに適用されます。
client-mode
true
埋め込みの Ignite をクライアント (デフォルト) として実行するかサーバーとして実行するかを指定します。サーバーモードでは、これはデータの保存に関与するので、メモリ使用量が増えます。
connection
none
address-resolver typezookeeper である場合、ThingWorx リーダー選出の調整に使用される Apache ZooKeeper サーバーのコンマ区切りリスト。文字列パターンは IP:port です (例: 127.0.0.1:2181, 127.0.0.2:2181)。
default-cache-mode
none
REPLICATED または PARTITIONED に設定できます。PARTITIONED に設定した場合、データはクラスタ内で分散され、backups の設定に基づいてほかのサーバーにレプリケーションされます。REPLICATED に設定した場合、すべてのキャッシュのすべてのデータが Ignite クラスタ内のすべてのサーバーに保存されます。
システムの HA 要件および動作している Ignite サーバーの数によって設定は異なります。
default-atomicity-mode
ATOMIC
キャッシュ原子性モードでは、完全なトランザクションセマンティックを維持するか、軽量の原子動作を追加するかを決定します。トランザクションおよび明示的なロックが不要な場合は、ATOMIC モードを使用する必要があります。ATOMIC モードでは、キャッシュはすべてのキャッシュノードにわたって完全なデータ整合性を維持します。
default-backups
none
この設定は cache-modePARTITIONED に設定されている場合にのみ適用されます。これはデータのコピーが保持されるサーバーの数を定義します。HA 環境の場合、1 以上に設定する必要があります。
default-read-from-backup
false
埋め込みモードで実行している場合 (client-modefalse に設定されている場合)、default-read-from-backuptrue に設定して、キャッシュがローカルで読み取られ、パフォーマンスが向上するようにします。分散モードで実行している場合は、常にネットワークを経由して別のノードに移動する必要があるので、この設定を使用しても利点はありません。その場合は、false に設定する必要があります。
default-write-sync-mode
PRIMARY_SYNC
この設定を以下に変更できます。
FULL_ASYNC
Ignite は参加しているノードからの書き込み応答またはコミット応答を待機しません。このため、キャッシュの書き込みメソッドが完了した後、または Transaction.commit() メソッドが完了した後で、リモートノードの状態が更新されることがあります。
FULL_SYNC
Ignite はすべてのノードからの書き込み応答またはコミット応答を待機します。
PRIMARY_SYNC
この設定は CacheMode.PARTITIONED モードと CacheMode.REPLICATED モードでのみ使用できます。
FULL_ASYNC
推奨されていません。システム失敗時にデータが失われる可能性はありませんが、書き込みパフォーマンスは低下します。
provider-type
none
"com.thingworx.cache.ignite.IgniteCacheProvider" に設定する必要があり、これによって分散キャッシュが有効になります。
ThingWorx Flow の設定
ThingWorx Flow インストールマシンから platform-settings.json ファイルの OrchestrationSettings セクションをコピーします。
QueueHost 設定で、localhost の値を、RabbitMQ がインストールされたときの ThingWorx Flow インストールの実際のホストの値に置き換えます。ThingWorx Flow のその他の設定については、platform_settings.json コンフィギュレーションの詳細を参照してください。
Ubuntu 22.04 以降に HA をインストールする場合は、ブロック内の platform-settings.json ファイルに “basePath” : “/services” パラメータを追加します。
"cache": {
"provider-type": "com.thingworx.cache.ignite.IgniteCacheProvider",
"ignite": {
{
"PlatformSettingsConfig": {
"BasicSettings": {
"BackupStorage": "/ThingworxBackupStorage",
"EnableBackup": false,
"EnableClusteredMode": true,
"EnableSystemLogging": true,
"Storage": "/ThingworxStorage"
},
"ExtensionPackageImportPolicy": {
"importEnabled": true,
"allowJarResources": true,
"allowJavascriptResources": true,
"allowCSSResources": true,
"allowJSONResources": true,
"allowWebAppResources": true,
"allowEntities": true,
"allowExtensibleEntities": true
"haCompatibilityImportLevel":"WARN"
},
"OrchestrationSettings": {
"EnableOrchestration": true,
"QueueHost": "<RabbitMQ_Host>",
"QueuePort": 5672,
"QueueName": "256mb",
"QueueUsername": "flowuser",
"QueuePassword": "encrypt.queue.password",
"QueueVHost": "orchestration"
"TurnOffScopesApprovalPopup": true
},
"ClusteredModeSettings": {
"PlatformId": "platform1",
"CoordinatorHosts": "localhost:2181",
"ModelSyncPollInterval": 100
},
"AdministratorUserSettings": {
"InitialPassword": "YOU MUST SET A DEFAULT PASSWORD"
}
},
"PersistenceProviderPackageConfigs": {
"PostgresPersistenceProviderPackage": {
"ConnectionInformation": {
"jdbcUrl": "jdbc:postgresql://localhost:5432/thingworx",
"password": "thingworx",
"username": "thingworx"
}
}
},
"cache": {
"provider-type": "com.thingworx.cache.ignite.IgniteCacheProvider",
"ignite": {
"instance-name": "twx-core-server",
"default-cache-mode": "PARTITIONED",
"default-atomicity-mode": "ATOMIC", // never change
"default-backups": 1, // set based on failure tolerance
"default-write-sync-mode": "PRIMARY_SYNC", // never change
"default-read-from-backup": false, // only change to true if running 2 node embedded
"client-mode": true, // only false for embedded mode
"metrics-log-frequency": 0,
"address-resolver" : {
"type": "zookeeper",
"connection": "localhost:2181"
},
"ssl-active": "true",
"igniteKeyStoreFilePath": "/certs/ignite.pfx",
"igniteKeyStorePassword": "mykeystorepassword"
}
}
}
これは役に立ちましたか?