IIS 6 でホストされる WCF サービスの負荷を分散するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/122688

  •  02-07-2019
  •  | 
  •  

質問

BigIP を使用して 2 つの IIS サーバー間の負荷分散を行います。最近、IIS 6 によってホストされる WCF サービスをこれら 2 台の Windows Server 2003R2 サーバーに展開しました。

各サーバーは 2 つのホスト ヘッダーで構成されます。1 つはロード バランサー アドレス用で、2 番目のホスト ヘッダーはそのサーバーのみを指します。こうすることで、デバッグのために負荷分散グループ内の特定のサーバーを参照できます。

したがって、実行するとすぐにエラーが発生しました。

このコレクションには、スキーム http のアドレスがすでに含まれています。このコレクション内のスキームごとに最大 1 つのアドレスが存在できます。パラメータ名:アイテム

いくつか調査したところ、ホストの 1 つを無視するようにフィルターを実装することはできますが、そうするとそのアドレスからサーバーにアクセスできなくなります。

<serviceHostingEnvironment>
    <baseAddressPrefixFilters>
        <add prefix="http://domain.com:80"/>
    </baseAddressPrefixFilters>
</serviceHostingEnvironment>

このシナリオで、WCF サービスにアクセスできるようにする最善の解決策は何ですか? http://domain.com/service.svc そして http://server1.domain.com/service.svc?

いくつかのサイトが示唆しているように、独自の ServiceFactory を作成する必要がある場合、これに関するサンプル コードを持っている人はいますか?

ご協力をよろしくお願いいたします。

編集:可能であれば、2 つのアドレスのいずれかから WCF サービスにアクセスできる必要があります。

ありがとう。

役に立ちましたか?

解決

bigIP 上に 2 つの新しい仮想サーバーを作成しますhttp://server1.domain.com/ http://server2.domain.com/

特定のサーバーのみを含む各 VS のプールを作成します。そのため、実際の負荷分散は行われず、そのようにアクセスされます。外部 IP が不足している場合でも、運用ドメイン名と同じ IP を使用し、irule を使用してトラフィックを適切なプールに送信することができます。

お役に立てれば

他のヒント

使用する URL は IIS のバインドに基づいています。Web サイトには複数のバインディングがありますか?使用されている場合、それとも WCF サービスは複数のサイトで使用されていますか?もしそうなら、あなたはSOL AFAIKです。この問題に遭遇しました。基本的に、HTTP に対する IIS バインディングは 1 つだけです。それ以外の場合は爆弾が発生します。

また、こちらの情報も ServiceHostFactoryの実装. 。WCF サービスに 1 つのアドレス経由でのみアクセスできる可能性がある場合、これは機能します (残念ながら、これは不可能でした)。

特定のマシンをテストする必要がある場合は、テスト元のマシン上の「hosts」ファイルを編集することで、負荷分散を「バイパス」し、正しいホスト ヘッダーが確実に送信されるようにして、WCF の動作を維持できます。たとえば、次のようになります。

10.0.0.11 ~ 10.0.0.16 は、クラスタ「cluster.mycompany.local」内にある 6 つのホストで、負荷分散された IP アドレスは 10.0.0.10 です。テスト時に、マシンのホスト ファイルに「10.0.0.13 cluster.mycompany.local」という行を追加して、クラスター内の 3 番目のマシンに直接アクセスできるようにすることができます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top