ThingWorx 高可用性 > ThingWorx 高可用性でのロードバランサー
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 リーダーに転送されなければなりません。
上記の要件を満たす任意のロードバランサーを ThingWorx HA 展開で使用できます。ロードバランサーの設定例が HAProxy の例に示されています。この例は HAProxy ( http://www.haproxy.org) に基づいています。