Einführung in SQL Server Clustering Teil 1

By Frank Kalis

Posted on Jul 13, 2004 von in SQL Server

Original von Brad M. McGehee; deutsche Übersetzung von Frank Kalis

Wenn Ihr unternehmenskritischer SQL Server mit einem Motherboard Fehler ausfällt, wie lange wird die Ausfallszeit sein? Eine Stunde, vier Stunden, ein Tag oder länger? Wieviel wird dies IhrUnternehmen an entgangenem Umsatz oder Produktivität kosten? Und vielleicht noch wichtiger für Sie selber, was bedeutet dies für Ihren Stress Level?

Die Arbeit als Datenbankadministrator kann anspruchsvoll und stressreich zugleich sein, besonders wenn der Erfolg Ihres Unternehmen unter anderem von der Verfügbarkeit des SQL Server's ist.

Obwohl wir als Datenbankadministratoren, bis zu einem gewissen Grad die Verfügbarkeit des SQL Server's kontrollieren, haben wir jedoch leider nicht die volle Kontrolle. Wenn jedoch das
Motherboard auf dem Server ausfällt, gibt es nicht viel, was wir in so einem Fall machen können, ausser, darauf vorbereitet zu sein.

Wie Ihnen vielleicht bekannt sein wird, gibt es nur einen Weg, die Verfügbarkeit Ihres SQLServers zu erhöhen und zwar, indem Sie mehrere SQL Server clustern. Dadurch erreichen Sie, dass, wenn ein SQL Server im Clusterverbund ausfällt, ein anderer automatisch dessen Aufgaben übernimmt. So können Sie die Ausfallzeiten auf Minuten anstelle von Stunden oder mehr reduzieren.

Dieser Artikel soll Ihnen eine Einführung in das Clustern von SQL Servern zusammen mit denVor- und Nachteilen geben. Falls Sie mit dem Gedanken spielen, SQL Server zu clustern, ist dieser Artikel ein guter Einstiegspunkt.

Was ist Clustern?

Clustern kann am besten als eine Technologie beschrieben werden, die es automatisch erlaubt,dass ein physikalischer Server die Aufgaben und Verantwortlichkeiten eines anderen physikalischen Servers zu übernehmen, der aus irgendeinem Grund ausgefallen ist. Offensichtliches Ziel dieser Strategie ist es, im Falle eines niemals gänzlich auszuschliessenden Hardware und/oder Software Fehlers, sicherzustellen, dass Benutzer unternehmenskritischer Anwendungen wenig oder kaum Ausfallszeiten haben. Ausfallszeiten können sehr teuer werden und unser Ziel als Datenbankadministrator ist es, sie, soweit als möglich zu reduzieren.

Um präziser zu sein, clustern beschreibt eine Gruppe von zwei oder mehr Server (auch Knoten genannt), die zusammenarbeiten und im Netzwerk als ein virtueller Server auftauchen. Mit anderenWorten, wenn ein Client eine Verbindung zu einem geclusterten SQL Server aufbaut, erscheint es dem Client als ein einziger SQL Server, und nicht als mehrere. Wenn einer der Knoten ausfällt, werden seine Aufgaben von einem anderen Server im Clusterverbund übernommen, so dass der Endbenutzer wenig, wenn überhaupt, etwas vor, während und nach dem Failover bemerkt.

Microsoft implementierte Clustering Features in sein Betriebssystem als Windows NT Server 4.0 Enterprise Edition vor einigen Jahren auf den Markt kam. Das derzeitige Feature wurde MSCS(Microsoft Clustering Server) genannt. Während einige besonders Wagemutige die Software auf Produktionsrechnern einsetzten, habe ich persönlich dies vermieden, da sie nicht so verlässlich war, wie Microsoft allen Glauben machen wollte. Ungefähr zur gleichen Zeit wurde SQL Server 6.5 Enterprise Edition veröffentlicht. Diese Version konnte geclustered werden. Ein CRUDE Versuch, SQL Server zu clustern, der sehr selten tatsächlich eingesetzt wurde.

Später dann, mit dem Release von SQL Server 7.0, gab es zwar gravierende Verbesserungen imClustering von SQL Server, aber dennoch war kein Weg gut genug, da weiterhin Windows NT 4.0 Server Enterprise MSCS die Basis war und damit waren keine Server mit hoher Verfügbarkeit zu unterhalten.

Glücklicherweise ist Microsoft's zweiter Cluster Versuch, jetzt Microsoft Cluster Servicegenannt und implementiert in Windows 2000 Advanced Server und Windows 2000 Datacenter Server, wesentlich besser. Nicht das er perfekt ist, aber nun bin ich zumindest bereit, den ClusterService für unternehmenskritische SQL Server zu benutzen. Er arbeitet zufriedenstellend mit SQL Server 7.0 zusammen; Sie sollten aber SQL Server 2000 bevorzugen, da diese Version eine nochmals stark verbesserte clustering Unterstützung anbietet.

Ein sehr bedeutender Aspekt des Clusterns, der sehr häufig übersehen wird ist, dass es keinkomplettes Backup System für Ihre Applikationen ist. Es ist nur ein Teil einer vielschichtigen Strategie, um minimale Ausfallszeiten und 100% ige Wiederherstellung sicherzustellen.

Der Hauptvorteil, den Clustering bietet, ist die Fähigkeit, die ausgefallene Serverhardware(abgesehen von einer fehlerhaften Festplatte) und ausgefallene Software (ausgefallene Dienste oder Serverresourcen) wiederherzustellen. Clustering wurde nicht entwickelt, um Daten zu schützen, um sich vor dem Ausfall eines Disk Arrays zu schützen, um Hacker Attacken abzuwehren, Netzwerkfehler zu vermeiden oder um SQL Server vor anderen potentiellen Katastrophen wie Stromausfall oder höherer Gewalt zu bewahren.

Clustering ist nur ein Teil einer gesamten notwendigen Strategie, die Ausfallzeiten vonApplikationen verringern helfen soll. Zusätzlich werden Sie ein Disk Array anschaffen müssen (mehr dazu später), das Ihnen Redundanz verschafft, Datensicherung auf Band, den Server mit einer Firewall umgeben, sicherstellen dass Ihre Netzwerkverbindungen redundant sind, Batterie
Sicherungen verwenden, und den Server in einer sicheren Einrichtung ausstellen. Dies sind nur einige Schritte von vielen möglichen, die Sie unternehmen können. Denken Sie bloss nicht, dass Clustering allein alles ist, was Sie unternehmen müssen, um einen hochverfügbaren SQL Server zu erstellen. Es ist nur ein Teil.

Welche Arten von Clustering gibt es?

Haben Sie sich zum Clustern von SQL Server entschieden, müssen Sie sich für eine sogenannteAktiv/Aktiv oder eine Aktiv/Passiv Konfiguration entscheiden. Beide Varianten haben ihre Vor- und Nachteile. Lassen Sie uns beide Spielarten am Beispiel eine 2 Knoten Clusters betrachten.

Ein Aktiv/Aktiv SQL Server Cluster bedeutet, dass SQL Server auf beiden Knoten des Zwei-Wege Clusters läuft. Jede Kopie von SQL Server arbeitet unabhängig und die Benutzer sehen zwei verschiedene SQL Server. Wenn einer dieser SQL Server im Clusterverbund ausfällt,
übernimmt der verbliebene Server die Aufgaben des ausgefallenen. Dies bedeutet dann, dass nun beide Instanzen von SQL Server auf einem physikalischen Server laufen, anstatt auf zweien.

Wie Sie sich vorstellen können, wenn zwei Instanzen auf einem physikalischen Server laufen, wirddie Performance beeinflusst. Besonders dann, wenn die Server nicht angemessen dimensioniert sind. Ein Aktiv/Passiv SQL Server Cluster bezeichnet einen SQL Server Clusterverbund, in dem nur eine Instanz von SQL Server auf einem der physikalischen Server innerhalb des Clusters läuft, während der andere physikalische Server nicht anderes macht, als zu warten, um die Aufgaben des primären Knotens zu übernehmen, falls dieser ausfällt.

Aus Performancegesichtspunkten ist dies die bessere Lösung. Andererseits macht diese Option weniger produktiven Gebrauch Ihrer vorhandenen Hardware, was wiederum bedeutet, dass diese Lösung teurer ist.

Ich persönlich bevorzuge die Aktiv/Passiv Konfiguration, da diese einfacher zu installieren undzu administrieren ist, und im allgemeinen bessere Performance bietet. Für den Fall, dass Sie dasBudget hierfür haben, empfehle ich diese Konfiguration.

Zwei- oder Vier-Knoten Clustering?

SQL Server kann geclustered werden mit zwei Knoten (bei Verwendung von Windows 2000 Advanced Server) oder für die Verwendung von mehr als zwei Knoten geclustered werden (bei Verwendung von Windows 2000 Datacenter Edition). Da ich persönlich keine Erfahrung im Drei- oder Vier-Knoten Clustering, möchte ich dies hier nicht diskutieren. Der Grossteil dessen, was ich zum Zwei-Knoten Clustering schreibe, trifft aber auch auf das Drei- oder Vier-Knoten Clustering zu.

Wie funktioniert Clustering?

Clustering ist eine komplexe Technologie. Aus diesem Grund möchte ich hier nur einen grobenÜberblick geben. In einem Zwei-Knoten Cluster wird einer der SQL Server als primärer
Knoten und der andere als sekundärer Knoten bezeichnet. In einer Aktiv/Passiv Cluster Umgebung, läuft SQL Server auf dem primären Knoten. Sollte der primäre Knoten ausfallen, dann übernimmt der sekundäre Knoten.

Wenn Sie einen Zwei-Knoten Cluster unter Verwendung von Windows 2000 Advanced Server und Microsoft Clustering Services aufbauen, muss jeder Knoten mit dem gemeinsam genutzten Disk Array, entweder mit SCSI Kabeln oder Fiber Channel verbunden werden. Typischerweise ist dieses gemeinsam genutzte Disk Array eine separate Einheit, die ein RAID 5 oder RAID 10 Disk Array. Alle Ihre Daten müssen auf diesem Disk Array gespeichert werden, da ansonsten, bei einem Ausfall, der sekundäre Knoten des Cluster nicht darauf zugreifen kann. Wie ich bereits weiter oben bemerkte, hilft Clustering nicht, die Daten oder das gemeinsam genutzte Disk Array, auf dem diese gespeichert werden, zu schützen. Aus diesem Grund ist es sehr wichtig, dass Sie ein Disk Array auswählen, welches sehr betriebssicher und fehlertolerant ist.

Zusätzlich zu der separaten Verbindung jedes der beiden Server zum Disk Array, sind beide Knoten des Clusters noch zusätzlich miteinander verbunden durch ein Private Network. Dieses
Private Network benutzt jeder Knoten, um den Status des jeweils anderen zu beobachten. Falls
beispielsweise, der primäre Knoten einen Hardwarefehler erleidet, stellt der sekundäre Knoten dies fest und initiiert automatisch die Übernahme.

Wie aber erfahren Benutzer, die auf SQL Server zugreifen, was sie unternehmen müssen, für denFall das ein solcher Failover passiert ist? Dies ist der raffinierteste Teil des MicrosoftClustering Service. Was im Wesentlichen in einem SQL Server Clusterverbund passiert, ist, dass Sie SQL Server einen eigenen virtuellen Namen und eine eigene virtuelle TCP/IP Adresse geben. Name und Adresse gilt dann für beide Server im Cluster.

Üblicherweise benutzt ein Client der sich mit SQL Server verbinden will, den virtuellen Namen,den der Cluster verwendet. Und soweit es SQL Server betrifft, gibt es nur einen physikalischen SQL Server, nicht zwei. Unter der Annahme, dass der primäre Knoten des SQL Server Clusters der Knoten ist, auf dem SQL Server in einer Aktiv/Passiv Umgebung läuft, wird der primäre Knoten auf die Anfrage des Clients antworten. Wenn aber dieser primäre Knoten nicht reagiert, und ein Failover zum sekundären Knoten stattfindet, behält der Cluster weiterhin SQL Servers' virtuellen Namen und TCP/IP Adresse, obwohl jetzt tatsächlich ein anderer physikalischer Server auf die Anfrage des Clients antwortet.

Während der Failover Zeitspanne, die bis zu einigen Minuten dauern kann (die tatsächlich benötigte Zeit ist abhängig von der Anzahl und Grösse der Datenbank auf dem SQL Server, sowie dem Grad der Aktivität), sind Clients nicht in der Lage, auf SQL Server zuzugreifen, so dass tatsächlich eine kurze Ausfallzeit passiert während der Failover stattfindet.

Wie jetzt Ihre Client Software auf solch einen Failover Prozess reagiert, hängt von derSoftware ab. Manche Software wartet einfach den Failover ab, und fährt einfach fort, sobald derFailover beendet ist, als ob nie etwas passiert wäre. Andere Software hingegen zeigenFehlermeldungen am Monitor an, die auf die verlorengegangene Verbindung hinweisen. Wiederum andere Client Software wird nicht wissen, wie sie reagieren soll, so dass die Benutzer unter Umständen gezwungen sind, die Software zu beenden und erneut zu starten, bevor sie wieder auf SQL Server zugreifen können.

Daher ist es wichtig, im Rahmen der Testphase bei Implementierung eines SQL Server Clusters, herauszufinden, wie jede einzelne Software, die sich mit SQL Server verbindet, auf einen
Failover reagiert. Auf diese Weise sind Sie in der Lage, Ihre Benutzer zu informieren, was sie in
einem solchen Fall erwartet, so dass die Benutzer besser vorbereitet darauf sind, was in einem solchen Fall zu tun ist.

Sollte tatsächlich einmal ein solcher Failover passieren, werden Sie wahrscheinlich herausfinden wollen, was die Ursache dafür war, um dann die notwendigen Massnahmen ergreifen zu können und das Problem zu korrigieren. Nachdem das Problem beseitigt ist, ist der nächste Schritt, SQL Server wieder auf den primären Knoten zu bringen. Dies lässt sich beliebig terminieren, vorzugsweise dann, wenn die Benutzeraktivität auf dem System niedrig ist.

Den Originalartikel finden Sie hier

Tags: Tags:
Dieser Eintrag wurde eingetragen von und ist abgelegt unter SQL Server. Tags:

Noch kein Feedback


Formular wird geladen...