10 Stimmen

Direkter Zugriff auf Azure Worker unter Umgehung des Load Balancers

Normalerweise erfolgt der Zugriff auf Azure Worker über Endpunkte, die in der Service-Definition definiert sind. Diese Endpunkte, bei denen es sich um TCP oder HTTP(S) handeln muss, werden durch einen Load Balancer geleitet und dann mit der tatsächlichen IP/Port der Azure-Maschinen verbunden.

Meine Anwendung würde von der Verwendung von UDP erheblich profitieren, da ich eine Verbindung von Mobilfunkgeräten aus herstelle, bei denen Bytes für die Abrechnung gezählt werden und der Overhead von SYN/ACK/FIN die 8-Byte-Pakete, die ich sende, in den Schatten stellt. Ich habe sogar erwogen, meine Daten direkt in die ICMP-Nachrichtenheader zu schreiben. Nichts davon wird jedoch vom Load Balancer unterstützt.

Ich weiß, dass Sie ping auf virtuellen Azure-Maschinen aktivieren können und sie dann anpingen können. http://weblogs.thinktecture.com/cweyer/2010/12/enabling-ping-aka-icmp-on-Windows-azure-roles.html .

Gibt es irgendetwas, das mich daran hindert, einen TCP-basierten Dienst (der über den Load Balancer bereitgestellt wird) zu verwenden, der einfach eine IP-Adresse und einen Port einer Azure-VM-Adresse ausgibt, und dann die Anwendung direkt mit diesem Worker kommunizieren zu lassen? Wenn der Worker heruntergefahren oder verschoben wird, ist meine Anwendung intelligent genug, um sich erneut mit dem TCP-Endpunkt zu verbinden und nach einem neuen Ort zum Senden von Daten zu fragen.

Funktioniert dieses Konzept, oder gibt es etwas, das einen solchen direkten Zugang verhindert?

3voto

David Makogon Punkte 66908

Sie müssten einen eigenen Router betreiben, der einen (externen) Eingangsendpunkt bereitstellt und dann zu einem internen Endpunkt Ihres Dienstes weiterleitet, entweder auf derselben oder einer anderen Rolle (so funktioniert eigentlich auch Remote Desktop). Sie können sich nicht direkt mit einer bestimmten Instanz verbinden.

Es gibt eine 2-teilige Blogserie von Benjamin Guinebertière, die das IIS Application Request Routing zur Bereitstellung von Sticky Sessions beschreibt ( Teil 1 , Teil 2 ). Dies könnte ein guter Ausgangspunkt sein.

Ryan Dunn sprach in der Cloud Cover Show auch über das Routing der http-Sitzung, zusammen mit einem Follow-up Blog-Beitrag .

Mir ist klar, dass diese beiden Beispiele nicht genau das sind, was Sie tun, da es sich um Routing http handelt, aber sie haben eine ähnliche Prämisse.

1voto

Tim Lovell-Smith Punkte 14066

Es gibt eine Funktion namens InstanceInputEndpoint, die Sie verwenden können, um Ports auf der öffentlichen IP zu definieren, die an einen lokalen Port auf einer bestimmten VM-Instanz geleitet werden sollen. So haben Sie eine bestimmte Port+IP-Kombination, die direkt auf eine bestimmte VM zugreifen kann.

  <InstanceInputEndpoint name="HttpInstanceEndpoint" protocol="tcp" localPort="80">
    <AllocatePublicPortFrom>
      <FixedPortRange max="8089" min="8081" />
    </AllocatePublicPortFrom>
  </InstanceInputEndpoint>

Mehr Informationen: http://msdn.microsoft.com/en-us/library/windowsazure/gg557552.aspx

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X