Question

Nous utilisons BigIP pour équilibrer la charge entre nos deux serveurs IIS. Nous avons récemment déployé un service WCF hébergé par IIS 6 sur ces deux serveurs Windows Server 2003R2.

Chaque serveur est configuré avec deux en-têtes d’hôte: un pour l’adresse de l’équilibreur de charge, puis un deuxième en-tête d’hôte pointant uniquement sur ce serveur. De cette façon, nous pouvons référencer un serveur spécifique du groupe à équilibrage de charge pour le débogage.

Donc, quand nous courons, nous avons immédiatement eu l'erreur:

  

Cette collection contient déjà une adresse avec le schéma http. Il peut y avoir au plus une adresse par schéma dans cette collection.   Nom du paramètre: élément

J'ai fait des recherches et nous pouvons implémenter un filtre pour lui dire d'ignorer celui des hôtes, mais nous ne pouvons pas accéder au serveur à partir de cette adresse.

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

Quelle est la meilleure solution dans ce scénario qui nous permettrait d'accéder à un service WCF via http: // domaine .com / service.svc et http://server1.domain.com/service.svc ?

Si nous devons créer notre propre ServiceFactory, comme le suggèrent certains sites, est-ce que quelqu'un a un exemple de code à ce sujet?

Toute aide est très appréciée.

EDIT: nous devrons pouvoir accéder au service WCF à partir de l’une ou l’autre des deux adresses, si possible.

Merci.

Était-ce utile?

La solution

Sur votre bigIP Créez 2 nouveaux serveurs virtuels http://server1.domain.com/ http://server2.domain.com/

créez un pool pour chaque VS contenant uniquement le serveur spécifique. Par conséquent, il n'y aura pas d'équilibrage de charge réel et vous y accéderez ainsi. Si vous manquez d’adresses IP externes, vous pouvez toujours utiliser la même adresse IP que votre nom de domaine de production et simplement utiliser une irule pour diriger le trafic vers le pool approprié

J'espère que cela vous aidera

Autres conseils

L'URL qu'il utilise est basé sur les liaisons dans IIS. Le site Web a-t-il plus d'une liaison? Si c'est le cas, ou le service WCF est-il utilisé par plusieurs sites? Si c'est le cas, alors vous êtes SOL AFAIK. Nous avons rencontré ce problème. Fondamentalement, il ne peut y avoir qu'une seule liaison IIS pour HTTP, sinon elle bombarde.

De plus, voici les informations sur implémentant un ServiceHostFactory . Cela fonctionnera s'il est possible que votre service WCF ne soit accessible que via 1 adresse (malheureusement pour nous, cela n'était pas possible).

Lorsque vous avez besoin de tester une machine spécifique, vous pouvez "contourner". l'équilibrage de la charge et assurez-vous que l'en-tête d'hôte correct est envoyé à Keeep WCF Happy en modifiant l'option "hôtes". fichier sur la machine à partir de laquelle vous testez, par exemple:

10.0.0.11 à 10.0.0.16 sont les six hôtes qui se trouvent dans le cluster "cluster.mycompany.local", avec une adresse IP à charge équilibrée de 10.0.0.10. Lors du test, vous pouvez ajouter une ligne au fichier hôtes de la machine indiquant "10.0.0.13 cluster.mycompany.local". pour pouvoir frapper directement la troisième machine du cluster.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top