Re: Cluster wie Raid mit verteilten CPU-Ressourcen

From: Jens Rehsack <rehsack(at)liwing.de>
Date: Sat, 21 Jun 2003 16:18:26 +0200

On 6/21/2003 3:37 PM, Nils Beyer wrote:
> Hallo Oliver,
>
> "Oliver Fromme" <olli(at)secnetix.de> schrieb:
>> Nils Beyer <NilsBeyer(at)web.de> wrote:
>>> ich spiele mit den Gedanken, bei uns (im Betrieb) ein
>>> Cluster aus (erstmal) zwei Rechnern aufzubauen.
>>
>> Da fangen schon die Probleme an. Verschiedene Leute haben
>> verschiedene Vorstellung davon, was sie als »Cluster« be-
>> zeichnen. Für einige ist es schon ein Cluster, wenn die
>> Kisten vernetzt sind und eine PVM-Software drauf läuft.
>
> Das ist wohl nicht so das, was wir möchten.
>
>> Das andere Extrem sind dann Leute, für die ein Cluster
>> schon eine schnelle Kopplung erfordert (Fastethernet ge-
>> nügt da nicht), und der Cluster muß sich wie ein einziger
>> Rechenr verhalten, d.h. er hat nur eine IP, und wenn man
>> sich darauf einloggt, kann man nicht sagen, auf welchen
>> Node(s) die Login-Shell läuft.
>
> Ich glaube, dass dies dem Ganzen sehr ähnelt.

Sicher? So wie ich Dich verstanden habe, kommt das Erste Deiner
Anforderung näher, als die schnelle Kopplung. Die wird nämlich
eigendlich nur gebraucht, wenn Du z.B. Matrizenberechnungen
beschleunigen willst und dafür permanent hoher Datenmengen
übertragen musst.

Bisher klingt deine Beschreibung nach:

- gemeinsame Datenbasis
- Master-Server + Ausfallserver
- bekannte Service-Adresse

  if master_is_down; then
    ifconfig inet ${ext_nic} alias ${service-ip}
    for service in ${list_of_services}; do
      /usr/local/etc/rc.d/${service}.sh takeover
    done
  fi

Für echte gemeinsam betriebene Dienste müssen die Dienste den
Cluster-Betrieb unterstützen. Beispielsweise dürfen nicht parallel
gemeinsame Daten geändert werden, sondern ein maschinenübergreifendes
Locking muss her.

> -----------------------------------------------------------------
>
>> [...]
>> Man kriegt das alles nicht einfach so mit einem Finger-
>> schnippen. Ich glaube auch, Du hast Dir noch keine genau-
>> eren Gedanken darüber gemacht, was Du eigentlich wirklich
>> erreichen willst.
>
> Uff, *grübel*,
> - synchrones Dateisystem bei beiden Rechnern (halt wie Raid)
> - gemeinsames Betreiben und Rechnen von Anwendungen/Daemons
>
>
>> Was genau bieten die Rechner für Dienste an, bzw. was sind
>> ihre Hauptaufgaben?
>
> Also: dhcpd, nfs bzw. samba, apache, ftpd, sshd, pppd

- dhcpd muss u.U. angepasst werden, da er in /var/db/dhcpd.leases
  die vergebenen IP's etc. verwaltet.
- nfs und samba wird ganz gefährlich, denn Du weisst jetzt plötzlich
  nicht mehr auf Server2, ob Server1 nicht eine Datei exklusiv
  geöffnet hat.
- Apache wird Read-Only funktionieren, sobald er schreiben soll,
  und sei es über cgi-, php- oder andere Skripte, ist's auch
  hier vorbei.
- ftpd wie nfs/apache
- sshd muss sogar z.T. separiert sein (Maschinenadresse), da man
  sonst nicht zur Wartung auf eine bestimmte Maschine kommt.
- pppd - Habt ihr mehr als eine Leitung nach draußen? Sonnst
  wählt Server2 u.U. auf eine Leitung, die Server1 noch offen hat.
  Das Netzwerk merkt nur nichts mehr davon, weil die Service-Adresse
  von Server1 kaputt ist.

>> Was genau sind die Anforderungen an die Verfügbarkeit, sprich,
>> wie hoch darf eine Ausfallzeit maximal sein?
>> Wie lange darf eine Recovery dauern?
>
> Ausfallzeit inkl. Recovery kann ruhig bis zu 1 Tag dauern.

Die Frage, die sich mir an dieser Stelle stellt, ist: Was ist mit
Recovery gemeint: Netz-Recovery (also Service), oder Maschine?

Weil, der Service sollte besser binnen wenigen Sekunden wieder stehen.

>> Welche Ausrüstung steht aktuell zur Verfügung,
>
> 2x Intel Pentium-III 800MHz mit 128MB Ram, Mainboard unbekannt,
> 20GB-Festplatte, 3Com-95x-Netzwerkkarten, ISDN-Karten

Wie viele Netzwerkkarten (Ethernet, ISDN)?

>> und wieviel kann für zusätzliche Hardware ausgegeben werden?
>
> Leider nix.

Schonmal keine wirklich gute Voraussetzung.

>> Wieviel Zeit kann investiert werden?
>
> Zum Erstellen: 1 Woche
> Zum Warten: max. 2h / Tag
> (grob geschätzt)

Ha! Das halte ich - mit Verlaub - für absolut unrealistisch.

Allein die Planung wird 2d benötigen.

>> Wenn man die Anforderungen kennt, gibt es dann vermutlich
>> zahlreiche Möglichkeiten, die diese zu implementieren.
>
> -----------------------------------------------------------------
>
>
>> Ich schätze, daß in Deinem Fall die Anforderungen nicht un-
>> bedingt allzu hoch sein werden, d.h. eine Recovery-Zeit von
>> -- sagen wir mal -- einer halben bis einer Stunde sollte
>> akzeptabel sein, und Load-balancing ist nicht unbedingt er-
>> forderlich. In dem Fall sollte es genügen, den zweiten
>> Rechner als Cold-Standby daneben stehen zu haben. Wenn
>> dann der erste die Grätsche macht, schaltet man den zweiten
>> ein, und gut is'.
>
> So war es eigentlich auch vorher gemacht worden. Der zweite
> Rechner war wirklich nur ein Ersatzrechner, falls der erste
> ausfällt. Aber jetzt haben wir uns gedacht, wofür soll der
> zweite vollstauben ohne zu rechnen. ;-)

Weil man speziell angepasste Applikationen für den Clusterbetrieb
benötigt? Ist aus meiner Sicht ein echt guter Grund.

>> Gegen Plattenausfälle hilft ein lokales RAID-1. Das kann
>> man mit einem Hardware-RAID-Controller ebenso realisieren
>> wie per Software (bei FreeBSD: vinum oder ccd).
>
> vinum geht auch über Netzwerk?

Archiv lesen :-)
War letztens erst.

>> Eine weitere Möglichkeit wäre, einen dritten Rechner hin-
>> zustellen, der nichts weiter tut als Fileserver zu spielen
>> (sozusagen ein poor-man's-Filer). Die beiden Produktiv-
>> Server mounten dann die Daten via NFS. So ist sicherge-
>> stellt, daß beide Server immer den identischen Datenbestand
>> haben.
>
> Sorry, einen dritten Rechner haben wir dafür nicht übrig.

Benötigte Leistung dafür: PentiumII-300, gibt's bei eBay ab 50,- €

[...]

So long,
Jens

To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org
with "unsubscribe de-bsd-questions" in the body of the message
Received on Sat 21 Jun 2003 - 16:18:35 CEST

search this site