Edge プロキシサーバーでロードバランサーを使用する
ロードバランサーを使用して、エッジ暗号化プロキシ設定のプロキシサーバー間の負荷を分散することができます。 ロードバランサーとプロキシサーバーが異なるポートを使用している場合は、ユーザーがブラウザで応答を表示できるように、ロードバランサーのホスト名と HTTPS ポートを指定します。
重要:
すべての本番環境で、冗長性のためにエッジ暗号化プロキシサーバーを少なくとも 2 つ用意してください。
ロードバランサーを使用しない Edge 要求の処理
ロードバランサーを使用していない場合、要求は次のように処理されます。
- ユーザーがブラウザーから要求を出します。
- ブラウザーが Edge プロキシサーバーに要求を送信します。
- プロキシサーバーが ServiceNow インスタンスに要求を送信します。
- ServiceNow インスタンスがプロキシサーバーに応答を返します。
- プロキシサーバーは、ユーザーのブラウザーに応答を返す前に、応答ヘッダーに自分自身のポート番号を追加します。
ユーザーは、応答ヘッダーで指定されたポート番号でプロキシサーバーからの応答を表示できます。これで、要求は正常に完了します。
ロードバランサーを使用した Edge 要求の処理
これに対して、ロードバランサーを使用している場合、ユーザーのブラウザーはプロキシサーバーと通信するのではなくロードバランサーと直接通信します。要求は次のように処理されます。
注:
この例では、プロキシサーバーのポート番号として 1025 を使用しています。
- ユーザーがブラウザーから要求を出します。
- ブラウザーが要求をロードバランサー仮想 IP (VIP) (仮想サーバーとも呼ばれます) に送信します。
- VIP は、プロキシサーバーを指し示すように設定されています (10.2.200.148:1025 など)。そのため、ロードバランサーは要求をプロキシサーバーに転送します。
- プロキシサーバーが ServiceNow インスタンスに要求を送信します。
- ServiceNow インスタンスがプロキシサーバーに応答を返します。
- プロキシサーバーは、応答内のロケーション ヘッダーを、risk-servicenow.dev.echonet:1025 のプロパティで設定された値に書き換えます。
- ホスト:edgencryption.proxy.host
- HTTP ポート:edgeencryption.proxy.http.port
- HTTPS ポート:edgeencryption.proxy.https.port
- プロキシサーバーは、プロキシサーバー ポートを指し示しているロケーション ヘッダーを使用して、応答をロードバランサーに転送します。
この結果は、ロードバランサーとプロキシサーバーが同じポートを使用しているかどうかによって異なります。
- ロードバランサーとプロキシサーバーが同じポートを使用している場合、ユーザーは応答ヘッダーで識別される同じポートから応答を受け取るため、要求は成功します。
- ロードバランサーとプロキシサーバーが異なるポートを使用している場合、ユーザーのブラウザーはロードバランサーとのみ通信しますが、応答はプロキシサーバー上にあるため、要求は失敗します。
解決策
この問題は、単にロードバランサーとすべての Edge プロキシサーバーを同じポート上で使用して解決できます。ただし、これは理想的な解決策ではありません。より良い解決策として、ロードバランサーがどのポートを使用しているかをシステムが認識できるようにします。
プロキシサーバーとロードバランサーが異なるポートを使用している場合、次のプロパティを使用すると、Edge プロキシサーバーが応答メッセージをロードバランサーに再ルーティングできます。
- edgeencryption.proxy.rewrite.location.host は、ロードバランサー経由で ServiceNow にアクセスするために使用するホスト名を指定します。
- edgeencryption.proxy.rewrite.location.https.port は、ロードバランサー経由で ServiceNow にアクセスするために使用する HTTPS ポートを指定します。
ロードバランサーの設定を行う
ロードバランサーとプロキシサーバーが異なるポートを使用している場合は、ユーザーがブラウザで応答を表示できるように、ロードバランサーのホスト名と HTTPS ポートを指定します。
始める前に
- Windows ホストでのローカルアドミニストレーターまたはドメインアドミニストレーター
- Linux ホスト上のファイルシステムへのフルアクセス権限があるサービスユーザー
手順
タスクの結果
これで、ユーザーはブラウザーでレスポンスを表示できるようになり、要求を完了できます