2015-05-20 3 views
6

Ich habe das OWIN-Hosting-Tutorial durchlaufen und die Dinge laufen lassen, aber wenn ich den InstanceCount auf -1 setze, scheint jede Instanz des Dienstes beim Aufruf von WebApp Port 80 in der OpenAync-Methode anzuhören .Anfang.Wie führen Sie mehrere Instanzen eines von OWIN gehosteten Diensts auf einem Entwicklungscluster aus?

Ich nahm an, dass Service Fabric Ports dynamisch verwalten würde, während es Dienste umlief, um Portkollisionen zu vermeiden, aber es scheint nicht so zu sein.

Antwort

8

Ein InstanceCount von -1 ist nur für statusfreie Dienste sinnvoll, die auf einem Cluster mit mehreren Computern ausgeführt werden. In diesem Fall wird jeder Knoten auf einer eigenen Maschine ausgeführt, sodass Sie keine Portkonflikte haben. Außerdem können Sie den Azure Load Balancer so konfigurieren, dass der Datenverkehr über die Rechner, auf denen diese Instanzen gehostet werden, round-robining ist.

In einem lokalen Cluster befinden sich alle Knoten auf demselben Computer. Wenn sie also versuchen, ein gemeinsames HTTP-Präfix zu verwenden, treten Konflikte auf. Um dies zu vermeiden, setzen Sie InstanceCount für Ihre statusfreien Dienste für lokale Bereitstellungen auf 1.

All dies ist nur erforderlich, wenn Sie mit Ihren Diensten über einen vordefinierten Port kommunizieren möchten. Wenn Sie im Service-Manifest keinen Port angeben, weist die Plattform beim Starten des Service automatisch einen Port zu. Es ist jedoch Aufgabe der Kunden, Ihre Endpunkte mithilfe der Namensauflösungs-APIs der Plattform dynamisch zu ermitteln, was oft nicht wünschenswert ist.

Daher besteht das übliche Muster darin, ein statusloses Front-End für Ihre Anwendung zu haben, das auf einem vordefinierten Port abhört, der dann eine Namensauflösung durchführt, um Anforderungen an andere Dienste weiterzuleiten. Diese Dienste der zweiten Ebene können auf einem Port lauschen, der von der Plattform dynamisch zugewiesen wird.

Verwandte Themen