Das Affinitätsfeature von Dispatcher ordnet eine Client-IP-Adresse einem Back-End-Server zu. Die Affinität wird hergestellt, wenn die Ziel-IP-Adresse eines Pakets mit dem Cluster übereinstimmt,
der Zielport mit dem Load-Balancer-Port übereinstimmt und die
Quellen-IP-Adresse passt.
Informationen zu diesem Vorgang
Bei bestehender Affinität werden alle Pakete an denselben Back-End-Server gesendet. Wenn die Affinität durch das Herunterfahren oder Entfernen eines Servers unterbrochen wird, kommt es zu einer Unterbrechung der gesamten Affinität und damit aller Verbindungen
zu diesem Server. In der Befehlszeile oder auf GUI-Clients werden auch keine Verbindungsinformationen ausgegeben. Es wird nur die Anzahl der aktiven Affinitätssätze verwendet.
Mit dieser Herangehensweise wird eine feste Affinität etabliert, die für Load Balancer effizienter ist. Die
Affinitätsmethode bewirkt, verglichen mit der Verbindungsweiterleitung, eine geringere Speicherbelegung und CPU-Belastung.
Avoid trouble: Da
beim Entfernen eines Affinitätsdatensatzes auch Verbindungen unterbrochen werden,
sollte bei einer Migration von
Load Balancer for IPv4 auf Load Balancer for IPv4 and IPv6 der maximale Wert für "staletimeout" auch als neuer
Wert für die Einstellung "stickytime"
für Load Balancer for IPv4 and IPv6
verwendet werden.
gotcha
Wählen Sie einen Auswahlalgorithmus aus, je nachdem, wie
Load Balancer Verbindungen weiterleiten soll. Folgende Auswahlalgorithmen sind verfügbar:
- affinity
- Legt fest, dass beim nächsten ankommenden
Paket von demselben Client, von dem das vorherige Paket gesendet wurde,
die Anforderung an denselben Server weitergeleitet wird, an den auch das vorherige Paket weitergeleitet wurde.
Nach einer gewissen Zeit beendet der Client das Senden von Paketen und
der Affinitätsdatensatz wird
entfernt.
Jeder Affinitätseintrag bleibt nur während der durch den Wert
"stickytime" festlegten Zeit in Sekunden erhalten:
- Wird innerhalb des mit dem Wert
"stickytime" angegebenen Zeitintervalls eine
weitere Verbindungen empfangen,
ist der Affinitätsdatensatz weiterhin gültig und die
Anforderung wird an denselben Server weitergeleitet.
- Wird innerhalb des mit dem Wert
"stickytime" angegebenen Zeitintervalls keine
weitere Verbindungen empfangen,
wird der Datensatz gelöscht.
Für eine Verbindung, die nach Ablauf der mit dem Wert für "stickytime" angegebenen Zeit empfangen wird, wählt
Load Balancer einen neuen Server aus.
Sie können den Befehl
"quiesce" (Stilllegen) verwenden, um einen Server offline zu setzen.
Der Server wird erst nach Ablauf der mit dem Wert "staletimeout" angegebenen Zeit
heruntergefahren. Im Folgenden sehen Sie ein Beispiel für den Befehl "unquiesce":
dscontrol manager quiesce Server
- connection
- Legt fest, dass Load Balancer den Server dann auswählt, wenn er eine
neue TCP-Verbindung von einem Client empfängt,
und die Pakete an diesen Server weiterleitet.
Wird eine weitere Verbindung von demselben Client
empfangen, behandelt Load Balancer diese Verbindung als eine neue Verbindung und
wählt wieder zu diesem Zeitpunkt einen geeigneten Server aus.
- connection+affinity
- Legt fest, dass ein Paket, das über eine vorhandene Verbindung ankommt, an den Server weitergeleitet wird,
der für die betreffende Verbindung ausgewählt wurde.
Wenn das Paket nicht zu einer vorhandenen Verbindung gehört, aber von demselben Client gesendet wurde,
wählt Load Balancer denselben Server aus, der für die vorherige Verbindung gewählt wurde.
Das Verhalten des Algorithmus
"connection+affinity" ist ähnlich wie bei Verwendung des Algorithmus
"affinity". Allerdings wird der Zeitlimitwert für die Affinität
ab dem Start jeder Verbindung berechnet.
Wenn daher die Zeit zwischen dem Start von zwei Verbindungen von demselben Client niedriger ist als der Wert für "stickytime",
werden folglich
beide Verbindungen an denselben Server weitergeleitet.