2016-07-12 13 views
1

シナリオ1(作業)にリスニングAzureのサービスファブリックサービスロードバランシング:ここでは正常に動作シナリオを:私は2公にアクセスステートレスなサービスを持っているfooとbarURI接頭辞

  • のFoo:2個の場合、リスニングポートで8081
  • はバー:1つのインスタンスは、ポートでリッスン要求を送信8082

はどちらかhttp://clusteruri:8081またはhttp://clusteruri:8082は正常に動作しますd Fooの場合、2つのインスタンスがホストされている2つのノード間で要求がうまく分散されていることがわかります。

シナリオ2(動作しない):ここで私は有効にしたいシナリオ:再び2つのステートレスサービスfooとbar

  • のFoo:2個の場合、URI接頭辞http://+:8080/foo
  • バーに聞いて: 1つのインスタンス、URIプレフィックスに聞いてhttp://+:8080/bar

両方のサービスが同じポートをリッスン、しかしますのでご注意ください異なるパス(WebListenerのようにhttp.sysの上に構築されたホストを使用して実現)

ここで物事は奇妙になり始めます:ASF /ロードバランサは本当にそれを理解せず、3つのノードすべてがポート8080でリッスンすると思って、Fooへのいくつかの要求がバーをホストするノードワンウェイ。

ASF /ロードバランサは、サービスが専用ポートでリッスンするシナリオを自動的に処理できますが、実際には同じポート(ただし異なるパス)でリッスンするサービスはサポートしていないようです。

私の質問

  • (すなわちルーティングを行うカスタムアプリゲートウェイサービスを実装せずに)、それはシナリオ1のために働くようにシナリオ2が「箱から出して、」作業を取得する方法はありますか?
  • シナリオ1を稼働させるためにASFがどのように設定/通信するかについて、誰かが光を当てることができますか?私。 FooへのリクエストがNode0またはNode1のいずれかに送られ、Barへのリクエストは、リクエストが送信されるポートに応じてNode2に移動する必要があるロードバランサをASFが設定したことを「見る」ことができますか?
+0

あなた通信リスナーのコードを共有していただけますか?プロキシを作成する方法 – cassandrad

答えて

2

サービスファブリックにはネットワークロードバランサがありません。サービスファブリックは、一連のVM上で動作するクラスタリング/オーケストレーション/アプリケーションプラットフォームです。 ARM(またはAzureポータル)を介してAzureでクラスタを作成する場合、標準のARMテンプレートで得られるリソースの1つはAzure Load Balancerですが、展開しているVMについてのみ知っている完全に別個のものですサービスを実行しているわけではありません。ロードバランサの設定は、ARMテンプレート(またはAzureポータルから)で行うことです。 Service Fabricはロードバランサについて認識していません。これは、自分のハードウェアにクラスタを設定した場合に期待されるのと同じトポロジです。

アズールロードバランサがレイヤ4ロードバランサであるため、シナリオ1が動作し、2がアズールにない理由は、オープンポートを認識しますが、HTTPやURLなどのアプリケーションプロトコルを理解していないためです。ノード上に異なるアプリケーションがあることを理解してください。開いているポートだけが表示されます。ただし、ALBでは、どのノードにトラフィックを送信するかをALBに指示する​​を設定できます。ここで

は便利かもしれません、もう少し背景情報です:https://azure.microsoft.com/en-us/documentation/articles/service-fabric-connect-and-communicate-with-services/

関連する問題