ThingWorx 高可用性でのロードバランサー
ThingWorx HA 構成では 1 つまたは 2 つのロードバランサーが必要です。
• 1 つのロードバランサーは ThingWorx Connection Servers にトラフィックを転送します。これは ThingWorx Connection Servers が展開に含まれている場合にだけ必要です。
• 1 つのロードバランサーは現在リーダーである ThingWorx サーバーにトラフィックを転送します。このロードバランサーはすべての ThingWorx HA 構成で必要です。
一般的なロードバランサーの要件
• ロードバランサーはその独自の高可用性構成内で動作する必要があります。
• Web ソケットトラフィックをルーティングできます。
• 静的 (スティッキー) セッションを管理できます。
• (オプション) SSL ターミネーションを管理できます。
ThingWorx Connection Server のロードバランサー
接続サーバー用のロードバランサーが必要な場合、すべての ThingWorx トラフィックを受信し、以下の規則に基づいて分散する必要があります。
• このロードバランサーは Connection Servers に Web ソケットトラフィックだけを転送する必要があります。ユーザートラフィックとその他の非 Web ソケットトラフィックは、トラフィックを ThingWorx リーダーにルーティングするもう一方のロードバランサーに転送する必要があります。
• 最適なパフォーマンスを得るには、アセットからの Web ソケットトラフィックはスティッキーセッションを使用して必ず同じ Connection Server に転送されるようにします。
◦ その Connection Server がオフラインになった場合、別の Connection Server にアセットのトラフィックが転送されなければなりません。
◦ アセットと Connection Server の間のセッションが非アクティブになった場合、使用可能な任意の Connection Server との新規セッションを確立できます。
ThingWorx サーバー用のロードバランサー
ThingWorx サーバーへのすべてのトラフィック (ユーザー、アセット、Connection Server など) はこのロードバランサーを経由してルーティングすることで、現在の ThingWorx リーダーに転送されるようにする必要があります。
ロードバランサーは定期的に各 ThingWorx サーバーでサービスを呼び出します。このサービスはそのリーダーのステータスを応答として返します。リーダーコードをロードバランサーに返した ThingWorx サーバーがユーザーとアセットのトラフィックを受信します。スタンバイコードを返した ThingWorx サーバーはトラフィックを受信しません。
以下の基準を満たす任意のロードバランサーを使用できます。
• ロードバランサーは定期的に以下の GET 文を ThingWorx リーダーに送信し、その応答に従って動作します。
GET /Thingworx/Admin/HA/LeaderCheck
HTTP/1.0\r\nAuthorization:\ Basic\ <base64-encoded-string>
• ここで、<base64-encoded-string> は base64 でエンコードされた <ユーザー>:<パスワード>文字列であり、platform-settings.json 内の LoadBalancerBase64EncodedCredentials 設定の値と一致します。
• ロードバランサーは 15-20 秒ごとに各 ThingWorx リーダーにこの呼び出しを送信する必要があります。
• ThingWorx リーダーからの正常な応答は応答コード 200 です。
◦ リーダーが応答コード 200 を送信している間に、スタンバイサーバーは応答コード 400、401、または 503 を返さなければなりません。
• リーダーが応答コード 200 以外の 3 つの応答コードを送信した場合:
◦ ロードバランサーはスタンバイ ThingWorx サーバーからの応答コードが 200 であるかチェックします。
◦ 応答コード 200 を送信しているスタンバイサーバーが新規 ThingWorx リーダーと見なされます。
◦ すべてのトラフィックが新規 ThingWorx リーダーに転送されなければなりません。