yukari
Goto Top

Wie macht man einen Network-Loadbalancing-Funktionstest? (Windows Server 2003)

Ich beschäftige mich nun seit einer Weile mit dem Thema Clustering. Ein Teil davon ist das Loadbalancing unter Windows. Inzwischen habe ich es soweit geschafft den NLB-Cluster mit zwei Servern aufzusetzen und zu konfigurieren. Allerdings kann ich bisher noch nicht so recht nachweisen, ob das Loadbalancing tatsächlich funktioniert.

Ich möchte nun testen, ob der Cluster auch tatsächlich funktioniert, ob also beide Server je nach Last die Anfragen beantworten, oder ob nach wie vor nur alles über einen läuft.
Meine Idee war, dafür ein Stresstest-Tool zu verwenden und gleichzeitig per Ethereal (bzw. Wireshark wie es inzwischen ja heißt o.o") mit zu schneiden, was auf den beiden Servern passiert.
Nun, passieren tut tatsächlich auf beiden Servern etwas, nur habe ich so meine Probleme das Ergebnis auszuwerten.
Daher hier mal zwei Screenshots:

Server 1:
a66528e92dc13aae637e2bf6d7a44801-appserver1

Server2:
2abd73f20e5382ae820a1e074d541b93-appserver2

Was mich vor allem wundert, sind die schwarz markierten "Bad TCP" auf dem ersten Server. Das kommt auf dem zweiten Server so gut wie garnicht vor.
In den Details steht als Fehler dazu meist, dass die Header checksum nicht korrekt wäre. Muss ich mir darüber Gedanken machen?

Und was natürlich die Hauptfrage ist: Wie erkenne ich an dem Mitschnitt nun, ob das Loadbalancing funktioniert oder nicht?

Ich hoffe es kann mir hier vielleicht jemand weiterhelfen oder wenigstens einen Tipp dazu geben. Ich wäre wirklich sehr dankbar dafür.

Grüße,

Yukari
Kommentar vom Moderator Dani am Dec 01, 2009 um 12:56:26 Uhr
Die beiden Bilder habe ich nun in unsere Filebase hochgeladen. Somit ist der Beitrag auch in Zukunft vollständig.

Content-Key: 130677

Url: https://administrator.de/contentid/130677

Printed on: April 19, 2024 at 11:04 o'clock

Member: maretz
maretz Dec 01, 2009 at 14:07:46 (UTC)
Goto Top
Moin,

so wie es aussieht versuchst du ja den Webserver per Cluster laufen zu lassen. Jetzt hast du aber ein Problem: Wenn du ne gute Cluster-SW verwendest dann wird die Anfragen von einer IP auch immer wieder an denselben Server geben (sonst würden z.B. Session-basierende Systeme wie PHP usw. nicht wirklich laufen).

Du musst also deine IP auch immer mitändern - soweit du die 2te IP eingetragen hast sollte der Webserver dich dann (je nach LB-Strategie) auf den 2ten Webserver leiten...

Ansonsten könntest du natürlich auch versuchen hier den WWW-Dienst in deinem Router als Forward einzutragen und ne Testseite auf den Cluster legen. Dann kann man - so du ne feste URL hast und die hier postest - auch von extern darauf zugreiffen und du solltest mehrere Zugriffe auf beide Server (über nen paar Stunden verteilt) sehen...
Member: Yukari
Yukari Dec 01, 2009 at 14:18:57 (UTC)
Goto Top
Ach... stimmt. Das mit der gleichbleibenden IP hatte ich gar nicht mehr bedacht. Gibt es da nicht vielleicht auch eine Art Stresstest-Software bei der ich z.B. einen IP-Bereich der simuliert oder verwendet werden soll angeben könnte? Ich weiß nicht ob sowas existiert, aber wäre ja möglich.

Das Zweite ist im Moment leider nicht möglich, da ich das Ganze (noch) auf virtuellen Servern (VMWare) teste.

Ganz am Anfang hatte ich die Idee einfach zwei (fast) identische Webseiten auf die Server zu legen - eigentlich einfach nur eine Seite auf der Stand "Server 1" bzw. "Server 2" je nachdem wo selbige eben lag. Dann habe ich versucht von einem dritten Host auf die Cluster-IP zuzugreifen und hatte gehofft, dass ich vllt. random-mäßig mal auf dem einen mal auf dem anderen Server lande, aber so hat das leider nicht funktioniert. (Da hatte ich das mit der IP auch noch bedacht und die mehrfach geändert, aber das hat leider nicht geklappt).

Edit:
Hm, ich glaube ich habe eine Lösung gefunden. Bin mir aber noch nicht 100%ig sicher. Ich habe auf dem dritten Host nun ein Tool namens "WAPT" verwendet und gesehen, dass man da IP-Listen eintragen kann. Also hab ich einfach mal 10 Adressen verwendet und es hat sich immerhin etwas verändert.
Mir war schon vorher aufgefallen, dass das "GET /clustertest/ HTTP/1.1" immer nur von dem Server kommt, der die Anfrage beantwortet. Nachdem ich den Stresstest dann also mit den 10 IPs gemacht hatte, konnte ich auf beiden Server diese Zeile wiederholt feststellen. Das sollte ja eigentlich das Zeichen sein, dass die eingehende Last auf die beiden Hosts verteilt wird, oder irre ich mich?
Member: dog
dog Dec 02, 2009 at 10:26:14 (UTC)
Goto Top
Muss ich mir darüber Gedanken machen?

Nope.
Das ist ein Problem was Wireshark mit vielen besseren Netzwerkkarten hat.
Diese Karten haben ein sog. offloading Feature. Das heißt, Dinge wie die Checksum werden nicht von der Computer-CPU, sondern von der Netzwerkkarte selbst berechnet, was die Performance steigert.
Zu dem Zeitpunkt an dem Wireshark die Pakete abfängt ist sie allerdings noch nicht berechnet und darum meldet Wireshark den Fehler.

Grüße

Max
Member: Yukari
Yukari Dec 02, 2009 at 11:19:18 (UTC)
Goto Top
Ah, dann kann ich ja beruhigt sein, danke face-smile
Member: schosch
schosch Jan 13, 2010 at 10:02:02 (UTC)
Goto Top
Ich habe auch bei unserem Domain-Controller mit Wireshark den Datenverkehr mitgeschnitten. In meinem Fall meldet Wireshark viele Pakete, die kleiner als 64kByte sind und sehr viele, deren Header-Checksumme 0x0000 ist. Muss ich mir in diesem Fall Gedanken machen, oder stellt es kein Problem dar, wenn laut Wireshark etwa 70 % meines Datenaufkommens Müll ist?