Jump to content

DNS Round-Robin und IIS+MSSQL: wie spiegelt man die Daten am besten?


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

ich hab mal gerade einen größeren Testaufbau hinter mich gebracht... es gibt ja beim Failover-Cluster, welcher allein nicht das gesuchte darstellt, noch die Möglichkeit laut Website, eines "Multisite Failoverclusters".

 

An sich scheint es exakt das Gesuchte zu sein, nur scheitert es an einem grundlegenden Problem, zu welchem ich bisher keine Lösung finden konnte:

 

ich habe zwei iSCSI SANs, welche sich gegenseitig replizieren. An jedes SAN ist ein Windows 2008R2 Failover-Cluster angeschlossen.

 

 

Das Problem ist jetzt aber das Dateisystem. Windows kennt kein Clusterfähiges Dateisystem. Gut an sich schon fast, CSV, aber dieses kann ich nur für HyperV nutzen, nicht aber als normales Dateisystem. Und wenn ich nun mit dem einen Cluster eine Änderung in NTFS schreibe, dann sieht der andere Cluster das nicht auf seiner Festplatte, obwohl die Daten dort sind. Durch die Replizierung auf Ebene des SANs werden dem NTFS quasi unter dem Hintern die Daten weggezogen und neu geschrieben, ohne dass es davon Kenntnis erlangt.

 

 

Wenn ich jetzt mit einem Linux-Server arbeiten würde, wäre das ganze kein Problem, Linux kennt eine Reihe clusterfähriger Dateisysteme.

 

 

Aber irgendwie würde ich jetzt nicht so ganz glauben wollen, dass Microsoft bei seiner eigenen Homepage mit Linux arbeitet.

Link zu diesem Kommentar

weil du sonst bei jedem zweiten Aufruf von Microsoft Corporation: Software, Smartphones, Online, Games, Cloud Computing, IT Business Technology, Downloads eine deutlich merkbare Zeitverzögerung hättest, die zwangsweise entsteht, wenn ein DNS-RR Aufruf auf die zweite IP umgelenkt werden muss weil die erste IP ein inaktiver Knoten ist.

 

 

Bei DNS-RR werden die IPs immer wechselweise rausgegeben. Jede IP muss also in der Lage sein, mit dem vollständigen Inhalt zu antworten, so als wäre sie allein für diese Seite zuständig.

 

Sollte ein Rechenzentrum offline sein, dann erkennt das der Browser und fragt dann die zweite IP an.

 

 

somit braucht man schlussendlich zwei aktive Cluster, welche im Normalbetrieb durch DNS-RR ein 50/50 Loadsharing haben.

 

 

Oder liege ich hier irgendwo mit meinen Überlegungen falsch?

Link zu diesem Kommentar

[...]

Oder liege ich hier irgendwo mit meinen Überlegungen falsch?

 

Wie ich schon die ganze Zeit hier sage: Trenne IIS und SQL!

 

Wieviele SQL Server hinter einer Webseite sich verbergen ist nicht durch irgendeinen Webseitenaufruf herauszufinden.

 

IIS kannst du x beliebige per Loadbalancer Clustern und geografisch verteilen.

 

Was dahinter im Backend ist ist eine andere Geschichte. Diese können Single Server oder Cluster oder per Mirror abgesichert werden.

 

 

Es wäre aus Sicherheitssicht sogar kontraproduktiv, wenn der SQL Server die gleiche IP wie der Webserver bekommt.

Link zu diesem Kommentar

Ich bezweifle einfach mal, dass bei solchen Webfarmen einfach nur mit DNS RR gearbeitet wird, da das Ding im Fehlerfall eines Servers 50% Fehler erzeugen würde (bei zwei Servern). Insofern tippe ich eher mal auf NLB (das wird von MS für Webfarmen auch in den ganzen Whitepapers empfohlen). Was dahinter mit den Datenbanken passiert kann man von aussen ja eher nicht sehen.

 

Bye

Norbert

Link zu diesem Kommentar

wenn bei DNS-RR eine IP offline ist, gibt es keinen Fehler, sondern lediglich eine kurze Wartezeit von ungefähr 5-10sek. Dann schaltet jeder mir bekannte Browser automatisch auf die zweite IP um.

 

 

und das Backend und Frontend zwei Paar Schuhe sind, müsst ihr mir nicht zig-mal erklären, das ist mir durchaus bewusst.

 

 

 

nochmal kurz:

 

zwei Rechenzentren.

zwei vollkommen identische Cluster, aber beide physikalisch vollständig getrennt voneinander

Jeder Cluster für sich (innerer Aufbau vollkommen egal) liefert eine beliebige Website aus. Er kann vollständig autark für sich arbeiten

 

der zweite Cluster soll allerdings ebenfalls die selbe Website autark ausliefern können

 

 

 

Ergo, ich muss dafür sorgen, dass die IIS-Server und die SQL-Server in beiden Rechenzentren irgendwie sich gegenseitig synchronisieren. Die Frage ist halt wie. Klar IIS auf seine Weise, SQL auf eine andere Weise. Trotzdem...bleibt das WIE offen.

 

 

 

NLB funktioniert im übrigen nur innerhalb eines einzelnes Rechenzentrums. Es ist schlichtweg unmöglich, NLB über mehrere Rechenzentren hinweg zu nutzen. Und Fakt ist, die microsoft.com Seite liegt synchron in mindestens zwei geographisch getrennten Rechenzentren (und dazu müsste man nichtmal einen tracert gemacht haben, bei so einer großen Seite ist sowas eigentlich "Standard").

Link zu diesem Kommentar
wenn bei DNS-RR eine IP offline ist, gibt es keinen Fehler, sondern lediglich eine kurze Wartezeit von ungefähr 5-10sek. Dann schaltet jeder mir bekannte Browser automatisch auf die zweite IP um.

 

Trotz allem hast du erstmal nen Fehler, oder? ;)

 

 

 

zwei Rechenzentren.

zwei vollkommen identische Cluster, aber beide physikalisch vollständig getrennt voneinander

 

Und die Daten kommen per Magie von einem zum anderen? ;)

 

 

NLB funktioniert im übrigen nur innerhalb eines einzelnes Rechenzentrums. Es ist schlichtweg unmöglich, NLB über mehrere Rechenzentren hinweg zu nutzen.

 

Achso, weil man ein Subnetz nur in einem STandort haben kann, oder wie? ;)

 

Und Fakt ist, die microsoft.com Seite liegt synchron in mindestens zwei geographisch getrennten Rechenzentren (und dazu müsste man nichtmal einen tracert gemacht haben, bei so einer großen Seite ist sowas eigentlich "Standard").

 

Ja, und deswegen verwenden die allein DNS-RR? Naja wenn du meinst.

 

Bye

Norbert

Link zu diesem Kommentar

ein Subnetz kannst du nicht in zwei Rechenzentren verteilen, definitiv unmöglich ;)

sonst hättest du ein kleines Problem auf Layer3.

 

 

gut ich meinte mit physikalisch getrennte, dass da keine Cluster-Switche und FC-SAN Backbones zwischen den Clustern liegen, sondern alles über ein öffentliches WAN geht.

 

 

Trotz allem hast du erstmal nen Fehler, oder?

nein. Getestet mit Chrome, IE, Safari, Opera, Firefox. Die alle zeigen keinen Fehler an, wenn eine der beiden IPs offline ist. Man hat nichts anderes als einen kurzen "Lag", es scheint einfach nur die Verbindung kurzzeitig zu hängen, auch wenn man gerade auf der Seite am surfen ist.

 

 

Ja, und deswegen verwenden die allein DNS-RR? Naja wenn du meinst.

Meine ich nicht. Aber was sollten sie noch verwenden können? Welche Alternativen zu DNS-RR gibt es, die eine ECHTE Redundanz bieten? Klär mich bitte auf.

Link zu diesem Kommentar
Meine ich nicht. Aber was sollten sie noch verwenden können? Welche Alternativen zu DNS-RR gibt es, die eine ECHTE Redundanz bieten? Klär mich bitte auf.

 

Sicherlich (Achtung, das ist eine Annahme meinerseits und keine faktisch gesicherte Information) eine Kombination aus DNS-RR und NLB oder ähnlichen Loadbalancern, weil DNS-RR (auch wenn du es anders siehst) eben zu Fehlern führt, wenn du Session basierte Anwendungen nutzt.

 

Bye

Norbert

Link zu diesem Kommentar

Eine Möglichkeit, die ich aus einem Seminar kenne, ist (unabhängig von Microsft) die Verwendung eines HTTP-Plugins. Siehe Webshere infocenter WebSphere Application Server Version 7.0

 

Die einfachste Einrichtung: 2 Server einem Webserver (hier ist natürlich der Java Application Server von IBM gemeint) und ein Server, auf dem ein HTTP Server (z.B. Apache, IIS) installiert ist zusammen mit dem HTTP-Plugin von IBM. Im Internet ist Adresse des HTTP-Plugins registriert, d.h. alle Requests laufen über diesen Server.

 

Das Plugin leitet nun die HTTP-Anfragen per RR an einen der Websphere Server weiter fügt der Antwort ein sog Session Affinity Cookie ein. Folgende Requests der gleichen Sitzung werden Vorzugweise, gesteuert durch das Session Affinity Cookie, zum ursprünglichen Websphere Server geleitet.

 

Nun kommt es darauf an, ob die Websphere Server ihrerseits die Session-Daten austauschen (kann man konfigurieren, führt hier aber zu weit) und auf die gleiche Datenbank zugreifen. In dem Fall kann ein reibungsloser Failover auf den anderen Websphere Server erfolgen. Wenn nicht, ist im Fehlerfall halt die Sitzung abgelaufen.

 

Es gibt auch Hardware Load Balancer, die sowas können. Etwaige öffentlich SSL Certs müssen natürlich im HTTP-Plugin installiert werden.

 

Schaut Euch mal die HTTP-Antworten bei IBM.COM Servern an. Da gibt es diese Cookies.

 

-Zahni

Link zu diesem Kommentar

Moin,

 

ein Subnetz kannst du nicht in zwei Rechenzentren verteilen, definitiv unmöglich ;)

 

ich könnte dir mehrere Kunden nennen, bei denen du diese definitive Unmöglichkeit live betrachten kannst. Ich sage nicht, dass das hübsch ist, aber "definitiv unmöglich" ist was anderes.

 

Meine ich nicht. Aber was sollten sie noch verwenden können? Welche Alternativen zu DNS-RR gibt es, die eine ECHTE Redundanz bieten? Klär mich bitte auf.

 

Du kannst davon ausgehen, dass große Websites einen ganzen Park an Techniken haben, die man anderswo nicht mal in Erwägung zieht.

 

Gruß, Nils

Link zu diesem Kommentar
d.h. alle Requests laufen über diesen Server.

und wo ist da nun die Redundanz?

 

NLB, HardwareLoadbalancer und solche Sachen, da ist immer ein SPF (Single Point of Failure). Wenn das Rechenzentrum, in dem dieser SPF steht, ausfällt, was ist dann? Ich glaube nicht, das Microsoft einen solchen SPF hat.

Sicher gibt es Heatbeat bei Loadbalancern, ist ja Grundlage für diese. Nur eine virtuelle IP kann ausschließlich nur innerhalb eines Rechenzentrums funktionieren, niemals in mehreren. Genau daher nimmt man ja dann DNS-RR.

 

 

Moin,

ich könnte dir mehrere Kunden nennen, bei denen du diese definitive Unmöglichkeit live betrachten kannst. Ich sage nicht, dass das hübsch ist, aber "definitiv unmöglich" ist was anderes.Gruß, Nils

 

dann sind diese Rechenzentren aber nicht über ein WAN verbunden, sondern logisch auf Layer 3 Ebene ist es ein einziges Rechenzentrum, am Ende ist es ein einziger Router der beide verbindet. Geographisch getrennte Rechenzentren, welche über ein WAN verbunden sind, ist es de facto unmöglich, ein IP Netz zu teilen.

 

Selbst wenn beide Rechenzentren dem selben AS angehören, du wirst es im BGP nicht konfigurieren können, ein IP netz auf zwei Routern zu nutzen, bzw es wird dann massenhaft Probleme geben.

 

Auch wenn ich als BGP Administrator sicher nicht alles weiß (dafür ist das Protokoll zu komplex), in dem Punkt brauch man nicht lange überlegen um die Antwort zu wissen, selbst als Einsteiger.

 

 

 

 

Du kannst davon ausgehen, dass große Websites einen ganzen Park an Techniken haben, die man anderswo nicht mal in Erwägung zieht.

 

davon gehe ich ja auch aus, und genau daher frage ich doch hier im Thread. Ich frage ja nach genau diesen Techniken. Oder macht da jede große Firma ein Mega-Geheimnis drum und auf regulären Wegen lernt nie einer kennen, wie es tatsächlich gemacht wird? Im Endeffekt kochen die doch auch nur mit Wasser.

Link zu diesem Kommentar

Du hast doch nun schon einige Möglichkeiten gehört. Auch den Zugriff auf das HTTP-Plugin kann man Ausfallsicher gestalten. Da fällt mir auf die Schnelle VMWare FT ein.

 

Wie die grossen Firmen das nun genau machen, wissen wir auch nicht. Das musst Du direkt anfragen. Die werden Dir aber aus Sicherheitgründen keinen Einblick in ihre Infrastruktur geben.

 

-Zahni

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...