• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Heartbeat Verständnisfrage

Leviathan

Hacker
Hi,

ich steh mal wieder auf dem Schlauch.

Ich habe hier einen HA Cluster laufen und verstehe den Sinn der Crossover/Seriellen Verbindung nicht.
Es geht doch darum, dass ich den Produktiv IP Stack überwache, was bringt mir das wenn ich zusätzlich noch per CrossoverKabel prüfe?!?!

Kann mir das bitte jemand erklären!?

Danke & Gruß Dominik

Beispielnetz sieht so aus:

node1:
eth0 192.168.0.1 per switch auf Node2 eth0
eth1 10.0.10.1 per X Kabel auf Node2 eth1

node2:
eth0 192.168.0.2
eth1 10.0.10.2
 

nbkr

Guru
Wie kannst Du ohne Crossover sicher sein, dass Server A wirklich ausgefallen ist, nur weil er von Server B aus nicht mehr erreichbar ist. Könnte ja sein, dass nur irgendein Switch zwischen den Maschinen den Geist aufgegeben hat, beide aber noch von außen erreichbar sind?
 
OP
L

Leviathan

Hacker
Ich kapiers immer noch nicht ... ich bitte um Hilfe


Ich habe zwei PCs,

node1: 192.168.0.150 10.0.10.1
node2: 192.168.0.151 10.0.10.2

Die Virtuelle IP ist 192.168.0.160
Es soll bei Ausfall (ganz gleich welcher, sei es Rechner, NIC, Switch) der andere (SLAVE node2) die IP übernehmen.


Hier meine ha.cf. Wenn ich das richtig verstehe prüfe ich per ucast die erreichbarkeit des anderen PCs und nur wenn BEIDE IPs 'dead' sind wird ein Takeover gestartet. Ist das korrekt so? Kann ich was besser einstellen?

Danke und Gruß Dominik


Code:
debugfile /var/log/ha-debug
logfile /var/log/ha-log
keepalive 2
deadtime 8
warntime 4
initdead 12
auto_failback on

node    node1
node    node2

ucast eth0 192.168.0.150
ucast eth0 192.168.0.151
ucast eth1 10.0.10.1
ucast eth1 10.0.10.2

ping 192.168.0.160
 

nbkr

Guru
Wenn Du die zwei Rechner am gleichen Switch hast, kannst Du dir im Prinzip heartbeat sparen. Dann kann sich Maschine A sicher sein, dass Maschine B tot ist wenn es dessen reale IP nicht mehr erreicht.

Was aber wenn Du die Maschinen auf zwei Switchen angeschlossen hast (was sinnvoller ist, weil Du mit nur einem Switch ja wieder einen Single-Point-of-Failure hast) und diese Switch sind über andere Switche miteinander verbunden. Das Netzwerk sieht in etwa so aus:

Code:
Internet
|           |
s3-----s4
|           | 
s1      s2
|           |
e1      e2
|_SPE_|

Die Switche sind die mit s bezeichneten Dinger und die Server die mit e bezeichneten Teile. SPE ist dein Speichernetzwerk. Das ist so aufgebaut, dass es zwar Redundant läuft, aber es darf nur immer ein Server (e) drauf schreiben. Sonst könnte es passieren das hintereinander die gleiche Datei geschrieben wird und e2 die Daten von e1 überschreibt.

Die gezeigte Struktur ist gar nicht so unüblich. In größeren Umgebungen hast Du oft mehr als einen Switch und nicht zwischen allen Switchen eine Querverbidnung.

Jetzt fällt Switch s4 aus (Hardwaredefekt, oder einfach nur Wartungsarbeiten). e2 kann somit e1 nicht mehr erreichen. Weder über das Internet, noch über das lokale Netz. Gleichzeitig kann e2 nicht erkennen dass nur sein Link defekt ist, weil ja erst ein nachgeschalteter Switch ausgefallen ist. e2 glaub also jetzt e1 wäre tot und wird selbst aktiv. Fängt also an lustig auf SPE rum zu fummeln. e1 glaubt auch e2 wäre tot. Ergo hat man beide Maschine aktiv. Das kann ins Auge gehen. Mit einem seriellen Kabel oder einem Crossover kann das eher nicht passieren. Kabel gehen seltener kaputt als Switche, müssen in dem Sinne nicht gewartet werden und auch Fehlkonfigurationen gibts bei Kabeln nicht.

Wers richtig heftig mag kann noch ein "STONITH" Gerät kaufen. Das ist im Prinzip eine per Netzwerkschaltbare Steckdose. Die schließt man an einen der Rechner per Netzwerk an und an den anderen per Storm. Damit kann e1 e2 ausschalten wenn er aktiv wird.
 
OP
L

Leviathan

Hacker
Danke fuer deine ausführliche Antwort.

So ich habe mir eine ha.cf gebastelt, bitte werft doch mal einen Blick drauf und sagt mir ob die Kommentare korrekt sind und ob ihr vlt. einen Verbesserungsvorschlag für mich habt.

Ich finde im Internet zwar ne Menge, aber alles wirkt gleich und Copy & Pasted. Vieles ist für mich noch unklar.

Besten Dank im Voraus.

Gruß Dominik

Code:
debugfile /var/log/ha-debug  # debugginglogfile
logfile /var/log/ha-log           # weniger ausführliches logfile

keepalive 4 # Prüfung alle 4 Sekunden per ucasts ob andere Node lebt.

[ wie kann HB das machen? UDB gibt doch kein Feedback ob das Pekt korrekt ankam. Erwartet die Node jeweils UDP Pakete der anderen Node innerhalb 4 Sekunden ?? ]



warntime        8    # Warnung, 8 Sekunden nach dem ersten 4 SekundenHerzschlagfehler. D.h. Die eine Node kann maximal 12 Sekunden schon tot sein bevor eine Warnung ausgegeben wird


deadtime        20    # Meldung, 20 Sekunden nach dem ersten 4 SekundenFehler.

# Wartezeit, bis Heartbeat nach dem Start Erreichbarkeit anderer Hosts beginnt
initdead        30


auto_failback on  # Master wird bei 100% Funktionsfähigkeit wieder Master


node    node1  # 1. Nodenrechnername
node    node2  # 2. Nodenrechnername


ucast eth0 172.19.5.150  # node1
ucast eth0 172.19.5.151  # node2
ucast eth1 10.0.10.1       # node1
ucast eth1 10.0.10.2       # node2

ping 172.19.1.1     # gateway IP zur Überprüfung: Habe ich einen Netzwerkfehler oder mein HB Partner

respawn hacluster /usr/lib/heartbeat/ipfail   # Tool zur Prüfung welche Netzwerkkomponente ausgefallen ist
 
Oben