Wie richte ich ARR im Aktiv/Passiv-Modus (auch Failover-Modus genannt) ein?

Wie richte ich ARR im Aktiv/Passiv-Modus (auch Failover-Modus genannt) ein?

Das Problem

Ich versuche, mehrere Webfarmen (für verschiedene Websites) zu konfigurieren, und zwar nach demNLB+ARR-Architektur. Nehmen wir an, ich habe 6 VMs:

  1. ARR+NLB-Cluster mit 2 VMs. Er empfängt Datenverkehr und leitet ihn an Inhaltsserver weiter. URL-Umschreibregeln mit HTTP-Host-Header-Bedingungen werden verwendet, um Anforderungen an die richtigen Inhaltsserver weiterzuleiten.
  2. Site 1 Inhaltsserver: 2 VMs. Hostinghttp://www.mysite1.com/
  3. Site 2 Inhaltsserver: 2 VMs. Hostinghttp://www.mysite2.com/

Alles funktioniert einwandfrei. Ich habe getestet, dass auf beiden Ebenen eine hohe Verfügbarkeit besteht.

Aus einem bestimmten Grund muss Site 2 nun im Aktiv-/Passivmodus arbeiten, sodass nur eine VM Datenverkehr empfängt, während die andere für das Failover zuständig ist. In gewisser Weise möchte ich etwas Ähnliches wie den Einzelhostmodus des NLB, aber für den ARR.

Wie kann dies erreicht werden?

Problemumgehungen

Ich habe mehrere indirekte Ansätze ausprobiert, um das gewünschte Verhalten zu erreichen.

  1. Algorithmus zum Lastausgleich.Habe versucht, Round- und Robin-Gewichte auf 1/0 zu setzen. Das Problem ist, dass Sie nicht 0 setzen können. Es muss mindestens 1 sein. Sie können 4 Milliarden + so etwas / 1 setzen, aber ich bin nicht sicher, ob dies garantiert, dass nie eine zufällige Anfrage an den zweiten Knoten geht.
  2. Hostname zur Server-Affinität.In den erweiterten Einstellungen der Hostnamenaffinität kann ich nur 1 Server konfigurieren, der Site 2 zugewiesen wird. Das funktioniert, aber das Problem besteht darin, dass die Routingtabellen zwischen den beiden ARR-VMs nicht synchronisiert sind. Daher ordnet ARR1 den Datenverkehr von Zeit zu Zeit einem Knoten zu, während ARR2 den Datenverkehr dem anderen zuordnet, was nicht aktiv/passiv ist.
  3. Hostnamenaffinität + NLB-Einzelhost.Als Modifikation des vorherigen Ansatzes kann ich den NLB auch in den Einzelhostmodus schalten, um das Problem mit der Routingtabellensynchronisierung zu lösen. Das Problem in diesem Fall besteht darin, dass ich auch den ARR-Lastausgleich für Site 1 ausschalte.
  4. Hostnamenaffinität + NLB-Einzelhost + 2 IP-Adressen.Wenn ich der vorherigen Lösung die zweite IP-Adresse hinzufüge und zwei NLB-Cluster erstelle, die in unterschiedlichen Modi arbeiten, sollte alles problemlos funktionieren. Das Problem ist, dass ich für die zweite öffentliche IP nicht bezahlen möchte.

Keine der Lösungen ist perfekt.

Das Bild der Ideallösung

Ich wüsste wirklich gern, wie man den ARR in den Einzelhostmodus versetzen kann, wie es für den NLB möglich ist. Und wie man das Routing zwischen den Knoten synchronisiert.

Weiß jemand, wie das geht? Oder kennt jemand alternative Vorgehensweisen?

Antwort1

Ich habe einen Weg gefunden, der zu funktionieren scheint, wenn auch nicht vollständig. Er wird beschriebenHier. Die Idee besteht darin, den Lastausgleichsalgorithmus „Server Variable Hash“ und „HTTP_HOST“ als Variable zu verwenden. Auf diese Weise ordnen alle Instanzen von ARR einen bestimmten Host demselben Inhaltsserver zu. Ich habe getestet, dass sie auf einen anderen verfügbaren Server zurückgreifen, wenn der zugeordnete nicht funktioniert.

Das Problem mit dieser Lösung besteht jedoch darin, dass Sie nicht steuern können, auf welchen Inhaltsserver ein Host abgebildet wird. Dies wird durch eine Hash-Funktion bestimmt. In gewisser Weise ist dies jedoch richtig – wenn Sie Angst haben, einen beliebigen Knoten zum aktiven Knoten zu machen, wie können Sie dann ein zuverlässiges Failover erwarten? Sie müssen bei allen Ihren Inhaltsservern gleichzeitig sicher sein.

Ein weiteres Problem besteht darin, dass Sie nicht mehrere Hostnamen für jede Site verwenden können, da diese wahrscheinlich unterschiedlichen Servern zugeordnet werden.

verwandte Informationen