PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Einfache Cluster Fragen



mullfreak
12.10.05, 18:19
Hallo,
ich hab mir jetzt zwei Kisten besorgt und will mich in das Thema Cluster einarbeiten.
Linux Grundkenntnisse sind vorhanden und ich halte die Lektüre von Karl Kopper in meinen Händen.
Dort ist ein einfacher Cluster anschaulich erklärt mit einer Heartbeat Konfig. Diese will ich gerne übernehmen.
Jetzt habe ich noch ein bis zwei Verständnis Probleme:
1. Es wird erklärt, dass jeder Server zwei Netzwerkkarten besitzen sollte. Ein paar (über Crossover) übernimmt anscheinend das Clustering. Und das zweite Paar gehört auf den netzinternen Switch. Die Verbindung über die Crossoverleitung gehört z. B. mit 10.0.0.1 und 10.0.0.2 konfiguriert.
Doch wie soll ich das zweite Paar konfigurieren? Dieses Paar müsste doch ein und dieselbe IP-Adresse erhalten.
2. Benötige ich zum erfolgreichen Betrieb eine Dateisynchronisation mit rsync oder wird das von einem anderen Prozess übernommen?

Grüsse
Mullfreak

newton
12.10.05, 22:40
Doch wie soll ich das zweite Paar konfigurieren? Dieses Paar müsste doch ein und dieselbe IP-Adresse erhalten.
Nee, Du willst ja unterscheiden koennen, welche Karte Du ansprichst. Deswegen sollten die imho unterschiedliche adressen bekommen.


2. Benötige ich zum erfolgreichen Betrieb eine Dateisynchronisation mit rsync oder wird das von einem anderen Prozess übernommen?
Hier (http://http://www.linux-ha.org/) steht in etwa, das heartbeat u.a. rsync brauch, um daten zu syncronisiern. Aber ob Du das tatsaechlich brauchst, haengt davon ab, was Du mit Deinem cluster machen willst. Wenn Du z.B. mittels MPI parallel rechnen willst, brauchst du das imho nicht.

viel Spass beim clustering :)
newton

mullfreak
13.10.05, 07:13
Hi newton,
danke erstmal für Deine Antwort.

Falls ich dann die zwei Netzwerkkarten mit zwei unterschiedlichen IP´s konfigurieren muss, also die Netzwerkkarten die dann am Firmenswitch z. B. hängen, hab ich doch ein Problem, wenn die "Master"-Kiste ausfällt.

Folgendes Beispiel:
Ich will mittels Heartbeat einen Proxyserver clustern. Der Master-Rechner hat die Cluster-IP 10.0.0.1 und die Slave-Rechner hat die Cluster-IP 10.0.0.2. Somit ist der Dateiaustausch geregelt.
Im Produktivnetzwerk hat der Master-Rechner die IP 192.168.1.1 und der Slave-Rechner die IP 192.168.1.2.
Jetzt haben aber alles Clients als Proxyserver die IP 192.168.1.1 eingetragen. Fällt nun der Master-Rechner aus, müsste die Proxyfunktion vom Slave-Rechner übernommen werden. Dieser hat aber eine andere IP und somit kann ich ja wieder keine Ausfallsicherheit gewährleisten.

Wird dann dieser Prozess über DNS-Namensauflösung gesteuert. Also z. B. heißt der Proxy dann "zwpxy01" müssten alle zwei Kisten mit ein und demselben DNS-Eintrag versehen werden. Das klappt aber auch nicht.

Wie kann ich nun die Ausfallsicherheit gewährleisten.

Grüsse
Mullfreak

WaTcHmE
13.10.05, 07:19
langsam langsam...

wenn cih mir deinen Text so durchlese, dann beschleicht mich das Gefuehl, du schmeisst die Begriffe "Redundanz" und ""CLuster" durcheinander...

das ein Rechner die Aufgabe von einem 2. uebernimmt, wenn der ausfaellt ist Redudanz.

wenn aber ein Rechner einem 2. hilft eine ( langwierige) Berechnung fertig zu stelle, ist das Clustering.

mullfreak
13.10.05, 07:40
Ja genau, ich meine schon die Redundanz. Bitte entschuldigt, ich kenne Clustering nur aus dem Windows Bereich und dort ist es halt so das ein Cluster nur eine IP hat, egal wieviele Maschine dahinter stehen. Fällt eine Maschine aus, übernehmen die anderen die Arbeit.

Brauche ich dazu unter Linux keinen Cluster? Wie kann ich ansonsten Redundanz erzeugen?

Mullfreak

shootie
13.10.05, 08:19
so weit mir bekannt ist brauchst du dann noch ein oder sogar zwei kisten die das steuern! Mehr weiss ich aber auch nicht

heatwalker
13.10.05, 08:45
Hy,
also du schmeisst die Begriffe nicht durcheinander. Cluster ist hier schon richtig gewählt.
Obwohl das mit der Redundanz auch stimmt. :)
In deinem Fall ist es ein highavailibility Cluster.

Die Lösung könnte in etwa so aussehen

Proxy1: 2 Netzwerkkarten (1 x 192.168.01, 1 x 10.0.32.1 Hartbeat)
Proxy2: 2 Netzwerkkarten (1 x 192.168.01 -down, 1 x 10.0.32.2 Heartbeat)

Die Netzwerkkarte auf dem 2 Proxy ist down und nicht erreichbar.
Der Squid auf dem 2 Proxy ist nicht gestartet.
Per heatbeat und rsync wird der Proxy 2 regelmässig über die 2 Karte syncronisiert
Im Falle eines Ausfalls des ersten Proxy wird dann auf dem 2 Proxy die 1 Netzwerkkarte gestartet und dann der Squid.

Wichtig ist, beim 1. Proxy muss sichergestellt sein das er definitiv nicht mehr im Netz hängt.

anquijix
13.10.05, 13:59
Jetzt habe ich noch ein bis zwei Verständnis Probleme:
1. Es wird erklärt, dass jeder Server zwei Netzwerkkarten besitzen sollte. Ein paar (über Crossover) übernimmt anscheinend das Clustering. Und das zweite Paar gehört auf den netzinternen Switch. Die Verbindung über die Crossoverleitung gehört z. B. mit 10.0.0.1 und 10.0.0.2 konfiguriert.
Doch wie soll ich das zweite Paar konfigurieren? Dieses Paar müsste doch ein und dieselbe IP-Adresse erhalten.
2. Benötige ich zum erfolgreichen Betrieb eine Dateisynchronisation mit rsync oder wird das von einem anderen Prozess übernommen?


1. Die eine Verbindung (crossover) wird für die Heartbeats, die so genannten Lebenszeichen benötigt, die andere wiederum ist für die Erreichbarkeit von aussen gedacht. Die beiden Interfaces müssen nicht unbedingt im gleichen Netz sein, ich würde sogar sagen, es empfiehlt sich, diese voneinander zu trennen. Du kannst die Heartbeats natürlich auch über die von aussen erreichbare Verbindung laufen lassen. Nur aus Traffic-bezogenen Gründen würde ich dies nicht machen. Hängt natürlich davon ab, wieviel Wert man auf die Traffic-Performance legt. Würdest du die Heartbeats über die "externe" Verbindung laufen lassen, so müssten die Heartbeats verschlüsselt sein, da sie von aussen gelesen werden könnten. Nehme jetzt mal an, dass die dir authkeys, wo du die Verschlüsselung einrichten kannst, ein Begriff ist.

2. Wenn du lediglich die Dienste hoch verfügbar haben willst, reicht es ohne jegliche Datenspiegelung aus. Ist dies jedoch ein Webserver oder Datenbankserver etc, ist die Datenspiegelung angebracht, da man ja bei einem Ausfall des primären Servers auf dem Backupserver wieder aktuellen Nutzdaten (Websites, DB's) haben möchte. Die crossover-Verbindung kann hier wiederum für die Spiegelung verwendet werden.
rsync kannste glaube ich schon verwenden für das, habs selbst noch nie ausprobiert. Irgendwo auf linux-ha.org findest ne Anleitung, wie man es mit rsync löst. Ich selbst habe es mit DRBD gelöst (www.drbd.org), was einem RAID übers Netzwerk entspricht. Habe sehr gute Erfahrungen damit gemacht und es ist auch ziemlich Einfach und kompakt.. Naja, anfänglich fand ich das überhaupt nicht ;)
Heartbeat kann dies auf alle Fälle nicht alleine lösen.


Im Produktivnetzwerk hat der Master-Rechner die IP 192.168.1.1 und der Slave-Rechner die IP 192.168.1.2.
Jetzt haben aber alles Clients als Proxyserver die IP 192.168.1.1 eingetragen. Fällt nun der Master-Rechner aus, müsste die Proxyfunktion vom Slave-Rechner übernommen werden. Dieser hat aber eine andere IP und somit kann ich ja wieder keine Ausfallsicherheit gewährleisten.

Da haste was noch nicht ganz verstanden. Die Server müssen ja losicherweise zwei verschiedene Adressen haben, sonst wäre keiner davon erreichbar. Zur Laufzeit von Heartbeat wird jedoch auf dem primären Server eine weitere virtuelle Adresse hochgefahren, die nur so lange aktiv ist, wie Heartbeat läuft. In deinem Fall müsstest du die Clients so anpassen, dass sie neu auf die von dir konfigurierte virtuelle IP-Adresse zugreifen, oder du nimmst für den Master statt 192.168.1.1 eine andere Adresse und verwendest 192.168.1.1 als virtuelle Adresse.
In der /etc/ha.d/haresources kannste bestimmen, welcher Server generell Master sein soll und unter welcher virtuellen IP-Adresse er welche Dienste starten soll. Da drin würde die IP-Adresse stehen.

Hoffe jetzt mal, nicht für ein Durcheinander gesorgt zu haben :)

mullfreak
24.10.05, 07:07
Hallo,
danke für Eure Antworten. Die bringen Licht ins Dunkel.
Ich habe mir jetzt mal das Buch von Karl Kopper besorgt über Linux Clustering. Es ist sehr gut geschrieben und ich hoffe, damit Erfolg zu haben.
Falls weitere Fragen bestehen (und da bin ich mir sicher), werde ich mich nochmals melden.

Grüsse
Mullfreak

tassadar
26.10.05, 09:49
Vielleicht ist die Antwort ja nen bischen spät. ;-)

Ich habe sowas schon mal so ähnlich konfiguriert. Zwar nicht mit nem proxy aber als mail-cluster. Dazu habe ich LVS verwendet (Linux Virtual Server). Das ist nicht schwer. Allerdiings ist die Grundvoraussetzung für solche Projekte, dass man genau weiss was man haben will.

Also ich habe folgendes mit LVS realisiert:



Internet ----> Loadbalancer ---|-------------|
Mailserver1 Mailserver2

Das ganze funktioniert so: Der Loadbalancer nimmt die Anfragen von den Clients entgegen und verteilt diese an die beiden Mailserver. Fällt einer der Mailserver aus, so wird dieser aus dem Clusterverbund ausgeschlossen. Der Client merkt von diesem nichts. Der ganze Cluster besitzt eine gemeinsame IP-Adresse. Also wie du das von Windows kennst.
Allerdings hast du mit dem Load-Balancer nen Single-Point-of-failure. Daher sollte man diesen doppelt auslegen. Also nen Heartbeat drauf und bei einem Ausfall sollte der zweite Load-Balancer die IP('s) mittels IP-take-over übernehmen. Zudem solltest man soch überlegen, ob die nocht noch nen STONITH mit konfigurierst. Das ganze ist ne Steckdosenleiste die man seriel ansprechen kann und den einzelnen anschlüssen den saft per software abdrehen kann. Also wenn ein load-balancer hängt, allerdings noch ping-bar ist und der heartbeat dem zweiten load-balancer die ip-adresse übergeben will. So sorgt das STONITH dafür das dem ausgefallenen Load-Balancer der Strom abgedreht wird. STONITH = Shoot the other node in the head :-)

Also LVS-Unterstützung ist in jedem neueren 2.4er und 2.6er Kernel enthalten.
Weitere informationen gibt es unter http://www.linuxvirtualserver.org/
Da gibt es auch Beispiele mit squid. Sowie Anleitungen wie du nen Loadbalancer mit jeweils auf die proxy- oder mailserver drauf tust um hardware zu sparen.


Wenn du das ganze verwenden willst und noch hilfe brauchst, dann sag einfach bescheid.

Gruß
Tassadar

mullfreak
26.10.05, 09:59
Hi tassadar,

vielen Dank für Deine Antwort. Übrigens: Keine Antwort ist zu spät.

Na das hört sich doch alles perfekt an. Die Clusterkonfig werde ich sowieso erst später ins Auge fassen. Jetzt heißt es erstmal einen fähigen Proxy aufzusetzen der auch für unser Unternehmen taugt.
Dazu muss ich erst einmal schaffen, zwei Squid Instanzen zu installieren, die getrennt voneinander arbeiten. Ich will NTLM Auth einsetzen und dazu Dansguardian. Dieser kennt aber keine NTLM Authentifizierung. Deswegen brauche ich einen Child und Parent Proxy.

Ich komme gerne auf Dein Angebot zurück und werde mich wieder melden.

Danke nochmal

Mullfreak

tassadar
26.10.05, 10:29
@mullfreak:

Was den Proxy angeht. Ich habe das Problem mit dem DansGuardian umgangen, indem ich ihn nicht benutze. Ich habe dafür jetzt squidGuard eingesetzt. Dann braucht man nicht so ein ausriss mit den squid's machen und der squidGuard filtert auch wunderbar.
Achso, du solltest das ntlm_auth-programm von samba benutzen. sonst bekommst du ärger mit dem windbind. Nur so als tipp. Darüber bin ich auch schonmal gestolpert.

Welche distrie benutzt du denn?

mullfreak
26.10.05, 10:50
Hi tassadar,

ich benutze eh schon die ntlm-auth des samba servers. Das klappt bereits wunderbar. Ich habe es sogar geschafft, mit einer Gruppe aus dem alten NT-Server die Authentifizierung zu realisieren.
D. h. es gibt jetzt eine Gruppe Internetuser, in der alle Mitglieder sind, die generell Internetzugriff haben.

Jetzt zum Contentfilter:
Ich benötige Dansguardian weil dieser ein richtiger Contentfilter ist und kein Redirector. Squidguard haben wir jetzt im Einsatz und der funktioniert auch ganz anständig. Blos er lässt halt ein paar Seiten immer noch durch, auch wenn die Blacklists neu sind.
Dansguardian dagegen prüft den wirklichen Inhalt der Seiten auf Schlagwörter etc.
Außerdem kann ich in den Dansguardian super den ClamAV hernehmen. Da gibt es schon vorkonfigurierte rpm´s.
Den Squidguard brauche ich sowieso noch, da in unserem Unternehmen mehrere Internetstufen realisiert sind. So z. B. darf die Abtl. Marketing auf Ebay surfen. Die anderen nicht. Dazu habe ich eine Regel im jetzigen Squidguard z. B. ebay_user. Das ist eine einfache Textliste mit den Usernamen. Dann im Squidguard eine Regel definiert mit "pass_ebay" die dann wiederum den Zugriff auf ebay erlaubt und die user aus dieser Liste authentifiziert. Dies muss auch weiterhin gegeben sein. Der Squidguard würde dann auf Proxy 1 laufen. Ich stelle mir das so vor:

Client --> Proxy 1 (mit Squidguard und NTLM) --> DG --> Proxy 2

Harter Stuff, ich weiß. Aber muss realisierbar sein, oder?

Grüsse
Mullfreak

p.s. Ach ja, ich verwende als Testumgebung ein Debian Stable und im Produktivbereich Suse 9.1

tassadar
26.10.05, 11:53
Hi Mullfreak,

ich denk mal schon das, das irgendwie funktioniert. Aber 100%tig kann ich dir das nicht sagen. Falls du das hinbekommst, dann sag mir mal bitte bescheid. Dann bekomme ich den DansGardian vielleicht doch nochmal ans laufen. ;-)

Ich Persönlich würde lieber Debian als Produktive-System einsetzten. Aber das ist ja meist wieder so ne glaubensfrage. :-)

Gruss
Tassadar

mullfreak
26.10.05, 12:31
Hi tassadar,

na ja. Da hast Du schon recht. Ich würde auch viel lieber Debian als Produktivsystem verwenden. Jedoch besagt unsere Firmenstrategie das man ein Derivat für Linux hernehmen sollte. Da wir dann unsere Webserver bereits mit Suse 8.0 am Laufen haben und Produktionsstandorte ebenfalls mit Suse arbeiten, so wird der neue Proxy auch auf Suse aufgesetzt.

Grüsse
Mullfreak