ThingWorx 高可用性 > ThingWorx HA での ThingWorx 拡張機能の管理
ThingWorx HA での ThingWorx 拡張機能の管理
ThingWorx HA 構成では、ThingWorx 拡張機能はデータベースに保管され、ローカルファイルシステムにキャッシュされます。これにより、新規 ThingWorx リーダーはデータベースに保管されている最新の拡張機能を使用してオペレーションをレジュームできます。
起動時に、ThingWorx リーダーは拡張機能の更新がないかデータベースをチェックし、更新をローカルに適用します。データベース内の拡張機能とローカル ThingworxStorage/extensions ディレクトリ内の拡張機能に相違がある場合、ThingWorx はデータベースバージョンを最新と見なし、ローカル ThingworxStorage/extensions バージョンを古いものと見なします。
拡張機能のインポートプロセス
拡張機能がインポートされると、システムは以下の処理を行います。
1. 拡張機能の ZIP ファイルに対して Checksum を実行し、ThingworxStorage/extensions/<拡張機能名> ディレクトリに <拡張機能名>.chk ファイルとして保存します。
2. ThingworxStorage/extensions/<拡張機能名> ディレクトリに ZIP を解凍します。
3. ExtensionPackage エンティティ (およびその他の任意のエンティティ) を作成、展開し、データベースに永続化します。
4. ZIP ファイルおよび Checksum をデータベースに永続化します。
これらのステップ中にシステムが失敗した場合、インポートの取り消しが試みられます。ZIP は最後に永続化されるので、拡張機能の展開に失敗した場合、拡張機能はデータベースに展開されず、ほかのスタンバイノードで選択されて悪影響が生じることはありません。
ThingWorx リーダーによる拡張機能のレビュープロセス
ThingWorx リーダーが起動すると、各拡張機能について以下のステップが実行されます。
1. 拡張機能が展開解除されます。
2. その Checksum の値が ThingworxStorage/extensions/<拡張機能名>/<拡張機能名>.chk という名前の Checksum ファイルから読み取られます。
3. 拡張機能の Checksum の値が永続レイヤーから読み取られます。
4. この 2 つの Checksum の値が比較されます。
a. Checksum の値が同じである場合
a. ThingWorx はデータベースの拡張機能とローカルの拡張機能が一致しているものと見なします
b. 変更は行われません。
b. Checksum の値が一致しない場合
a. 拡張機能の ZIP のコピーが永続レイヤーから読み取られます。
b. これが ThingworxStorage/extensions/temp/<拡張機能名><ランダム> などのテンポラリディレクトリに抽出されます。
c. 古いバージョンの拡張機能が ThingworxStorage/extensions/<拡張機能名> から削除されます
d. 抽出された ZIP のコピーが古い拡張機能のディレクトリ ThingworxStorage/extensions/<拡張機能名> にコピーされます
e. 新規 Checksum ファイルが拡張機能のディレクトリ ThingworxStorage/extensions/<拡張機能名>/<拡張機能名>.chk に作成されます
f. 拡張機能が展開されます。
上記のいずれかのステップ中にシステムが失敗した場合、可能なかぎりクリーンアップを試みます。拡張機能の古いコピーを永続レイヤーからのコピーに置き換えることができない場合、古いコピーがロードされます。
拡張機能の除去プロセス
拡張機能が削除された場合、以下の処理が行われます。
1. 拡張機能が展開解除されます。
2. ZIP がデータベースから削除されます。
3. ExtensionPackage エンティティがデータベースから削除されます。
4. ThingworxStorage/extensions/<拡張機能名> ディレクトリが Checksum とともに削除されます。