====== Cluster ====== Hier geht es um Cluster bzw. um die Verwaltung (Administration) von Computern (Hosts) vorrangig in Gruppen. * [[server:drbd]] - eine Art Netzwerk RAID 1 * [[server:heartbeat]] - Clusterüberwachungs-/verwaltungssystem ===== Begriffserklärung ===== Ein **[[wpde>Computercluster|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: [[wpde>Computercluster|Wikipedia]]). * **[[wpde>Aktiv/Aktiv-Cluster]]**: Ein Rechnerverbund, in dem mehrere Rechner (auch als Clusterknoten bzw. Clusternodes bezeichnet) gleichzeitig aktiv sind. * **[[wpde>Failover-Cluster|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 * **[[wpde>Quorum (Informatik)|quorum]]**: * **[[wpde>Split Brain (Informatik)|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 ''[[wpde>Quorum (Informatik)|quorum]]'' oder alternativ durch fencing-Mechanismen wie''stonith''. 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) * **Clusterdateisysteme**: * [[software:ceph storage cluster|Ceph]] * [[software:Glusterfs]] * GFS, OCFS2 (Probleme mit locking ab 3-4 nodes) * spezielle RAID-Controller (z.B. ServeRAID von IBM unterstützt zusätzlich self-fencing) * Externe Massenspeicher: [[wpde>Storage Area Network|SAN]], [[wpde>Network Attached Storage|NAS]], ... * **[[wpde>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. ===== Links ===== * [[http://openmosix.sourceforge.net/|Openmosix - a kernel patch for Linux, creating a reliable, fast and cost-efficient SSI clustering platform that is linearly scalable and adaptive]] * [[http://www.howtoforge.de/howto/xen-cluster-management-mit-ganeti-auf-debian-etch/|Xen Cluster Management Mit Ganeti Auf Debian Etch]] ===== Verwaltung ===== Neben den unter vorgestellten Tools gibt es u.a. noch diese Programme: * clustershell * GNU Parallel * Shmux * Parallel SSH * Group Shell ==== clusterssh ==== Durch [[http://clusterssh.wiki.sourceforge.net/Main+Page|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 [[netzwerke: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 - auf **allen Rechnern** dsh -a -c -M -- BEFEHL - auf selbst **definierten Gruppen** (z.B. "GRUPPE1"; in der Datei ''${HOME}/.dsh/group/GRUPPE1'') dsh -g GRUPPE1 -c -M -- BEFEHL - auf den entsprechenden **Netzgruppen** (via [[server:verzeichnisdienste|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 [[netzwerke:ssh#Public-Key-Authentifizierung]] oder einem Schlüsselbund der die [[netzwerke: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** * [[http://www.netfort.gr.jp/~dancer/software/dsh.html|dsh Homepage]] ==== apt-dater ==== apt-dater spielt updates mit [[netzwerke:SSH]], sudo und screen ein. * [[http://www.linux-magazin.de/content/view/full/68826|Apt-dater 0.9 aktualisiert Cluster im Schongang]] * [[http://www.ibh.de/apt-dater/|apt-date Projekthomepage]] * [[http://packages.debian.org/search?keywords=apt-dater|Debian packages]]