Cluster

Hier geht es um Cluster bzw. um die Verwaltung (Administration) von Computern (Hosts) vorrangig in Gruppen.

  • drbd - eine Art Netzwerk RAID 1
  • heartbeat - Clusterüberwachungs-/verwaltungssystem

Ein Cluster, meist einfach Cluster (von engl. cluster – Schwarm, Gruppe, Haufen), bezeichnet eine Anzahl von vernetzten Computern, die von außen in vielen Fällen als ein Computer gesehen werden können. In der Regel sind die einzelnen Elemente eines Clusters untereinander über ein schnelles Netzwerk verbunden. Ziel des „Clustering“ besteht meistens in der Erhöhung der Rechenkapazität oder der Verfügbarkeit gegenüber einem einzelnen Computer. Die in einem Cluster befindlichen Computer (auch Knoten oder Server) werden auch oft als Serverfarm bezeichnet (Quelle: Wikipedia).

  • Aktiv/Aktiv-Cluster: Ein Rechnerverbund, in dem mehrere Rechner (auch als Clusterknoten bzw. Clusternodes bezeichnet) gleichzeitig aktiv sind.
  • Aktiv/Passiv (=Failover-Cluster): Ein Failover-Cluster ist ein Verbund von mindestens zwei Computern (Cluster), in dem bei einem Ausfall eines Rechners ein zweiter Rechner dessen Aufgaben übernimmt.
  • Knoten (nodes): Einzelne Rechner die Teil eines Clusters sind.
  • Ressourcen (ressources): Einzelne verwaltbare Einheiten auf einem Knoten (bei heartbeat z.B. eine IP-Adresse, ein Dienst, ein Script mit Statusrückgabe, …)
  • 3 R-Regel: Redundanz Redundanz Redundanz (ab 3 Rechnern ist die gleichzeitige Ausfallwahrscheinlichkeite sehr gering
  • split-brain: Verursachte Probleme wenn ein Cluster durch die Störung der Kommunikation in mehrere Teile zerfällt. Jeder Teil denkt, der andere Teil wäre tot, und startet die Ressourcen. Somit ist der Dienst unter der gleichen IP doppelt da und (je nach Dienst) schwere Probleme die Folge. Verhindert werden soll dies üblicher durch ein quorum oder alternativ durch fencing-Mechanismen wiestonith. Zur Verhinderung von „split-brain“ sollte die Kommunikation zwischen den Servern ebenfalls redundant ausgelegt sein(Cross-over-NetzwerkKabel, serielles Kabel).
  • fencing: Der Prozess der Ressourcen ausschließt dessen Zustand unbestimmt ist.
    • stonith („Shoot the other node in the head“: fencing-Mechanismus von Linux-HA)
  • data sharing: Dynamischer Zugriff auf Daten von mehreren Systemen. Möglichkeiten:
    • Drbd ab 0.7 (Master/Slave)
    • Drbd ab 8.0 (Master/Master mit Clusterdateisystem wie GFS, OCFS2)
    • spezielle RAID-Controller (z.B. ServeRAID von IBM unterstützt zusätzlich self-fencing)
    • Externe Massenspeicher: SAN, NAS, …
  • Shared Storage: Ein gemeinsam genutzter Festspeicher, auf den von mehreren Rechnern über ein Netzwerk oder eine sonstige Verbindung gemeinsam und (unter Umständen) gleichzeitig (=konkurrierend) zugegriffen werden kann.

Neben den unter vorgestellten Tools gibt es u.a. noch diese Programme:

  • clustershell
  • GNU Parallel
  • Shmux
  • Parallel SSH
  • Group Shell

clusterssh

Durch clusterssh können Aufgaben parallel an mehrere Rechner übermittelt werden. Dabei können auch Gruppen während der Sitzung ausgewählt werden.

  • cssh verwaltet die Clients über SSH
  • crsh ist für die veralteten (und hoch unsichereren!) rsh-tools gedacht.

dsh

Durch die dancer's shell (oder „distributed shell“) können Aufgaben parallel an mehrere Rechner übermittelt werden. Dafür müssen die Hosts in einer Konfigurationsdatei definiert werden.

Danach kann die dsh mit dem Befehl aufgerufen werden, der dann

  1. auf allen Rechnern
    dsh -a -c -M -- BEFEHL
  2. auf selbst definierten Gruppen (z.B. „GRUPPE1“; in der Datei ${HOME}/.dsh/group/GRUPPE1)
    dsh -g GRUPPE1 -c -M -- BEFEHL
  3. auf den entsprechenden Netzgruppen (via NIS) aus:
    dsh -g @NISGRUPPE -M -- BEFEHL 

ausgeführt wird.

Es wird keine Standardausgabe (stdout) der Clientrechner angezeigt, dafür aber die Fehlermeldungen (stderr). Für die Fehleranalyse sollte man die Option -M verwenden (der die Hostadressen vor der Fehlermeldung ausgibt).

Beispiele:

Alle Rechner der Gruppe debian updaten:

dsh -g Debian -c -M -- aptitude -y update && aptitude -y safe-upgrade

Alle Rechner der Gruppe debian zeigen ihre Systeminformationen:

dsh -g debian -c -M -- uname -a

Eine interaktive Steuerung ist mit der Option -i möglich, dsh erwartet dann auf der Standardeingabe Befehle, die es an alle Clientrechner sendet.

dsh -a -c -M -i -- BEFEHL

:!: Wirklich Sinn macht dsh nur mit Public-Key-Authentifizierung oder einem Schlüsselbund der die SSH-Passwörter verwaltet. Andernfalls muss man der Reihe nach alle Passwörter am Bildschirm eingeben, wobei diese nach der ersten Eingabe auch noch im Klartext auf dem Bildschirm geschrieben stehen.

Links

apt-dater