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

Virtuelle IP Adresse

_Cleaner_

Newbie
Hallo erstmal an alle,

bin neu hier und freu mich darauf hier den einen oder anderen guten Tip zu bekommen. :D

Ich hab mir 2 Server mit SUSE 10.0 eingerichtet. Auf beiden soll eine Wiki laufen. Der eine Server soll lediglich ein Backup für den anderen sein, damit die Wiki ständig on bleibt...
Die beiden Server haben jeweils eine IP in der selben Range.
Ein weitere virtuelle IP in der selben Range ist schon reserviert.
Meine Frage:
Ich möchte gerne die beiden Server auf die virtuelle IP schalten, d.h. einer nutzt die IP und stellt dadurch die Wiki zur Verfügung. Sobald nun dieser Server off geht (bsp. Hardwaredefekt), soll sich der zweite die virtuelle IP schnappen, so dass die User die Wiki unter selben Adresse immer noch erreichen können, und möglichst nichts vom wegfall des ersten Servers merken.....

Das allgemeine Backup der Wiki geht über rsync des Wikiverzeichnis und einen Master/Slave Betrieb der MySQL Server.

Vielen Dank für jede Hilfe.....
 

nbkr

Guru
Dafür gibts CARP. Das Commen Address Redundancy Protokoll. Von OpenBSD entwickelt. Unter Linux gibts den UCARP Daemon der diese Protokoll implementiert. Damit lässt sich das Problem lösen.
 
Schau dir mal die Pakete rund um "heartbeat*" an.
- Fährt virtuellen IP rauf/runter
- Erkennt und übernimmt Service wenn 1. Server "down".

Klappt hervorragend bei mir.

Haveaniceday
 

gameboy

Hacker
Hallo _Cleaner_,

wenn Du 2 Server zur Verfügung hast, könntest Du im Normalbetrieb (d.h. so lange kein Ausfall vorliegt) ja evtl. auch beide verwenden...

Wahrscheinlich paßt es nicht 100% zu Deinem Anwendungsfall, aber ggf. trotzdem interessant: http://www.linuxvirtualserver.org

Viele Grüße,
gameboy.
 
OP
C

_Cleaner_

Newbie
Ich wär sehr an der Lösung durch heartbeat interessiert, aber irgendwie seh ich in den Erklärungen von HA unter
http://www.linux-ha.org/GettingStarted/TwoIPaddresses
auch nicht wirklich, wo ich da dann bitte meine dritte IP angeb, unter der ja alles laufen soll.... :?:

Sieht irgendwie nur so aus als würde man sagen, hier ist der Server 1 mit IP1 und da der Server 2 mit IP2( + schau ob Server 1 noch läuft)....dass aber erst Server 1 über IP3 erreichbar sein soll und Server 2 bei einem Ausfall von Server 1 die IP3 nehmen soll, finde ich hier irgendwie nicht...

Wer das schonmal gemacht hat bitte helfen!
 

nbkr

Guru
Heartbeat kenne ich nicht, aber Ucarp ist eigentlich ganz einfach. Einfach nur die Deamons auf beiden Kisten mit den passenden Kommandozeilenoptionen starten. Die brauchen nichtmal eine eigene Verbindung haben. Solange die sich über IP erreichen können.
 
OP
C

_Cleaner_

Newbie
oh schnelle antwort, hatte nicht gesehen, dass du online bist...
hatte dir auch deswegen ne PN, also wegen UCARP geschickt...

dann mal auch gleich die Frage an alle:
Wie muss ich UCARP konfigurieren? Welche Parameter usw...???
Leider gibt es keine man zu ucarp...
deswegen bin ich über jede hilfreiche Antwort froh...
 

nbkr

Guru
Ucarp ist eigentlich ziemlich einfach zu konfigurieren. Die Dokumentation auf der Homepage von ucarp liefert eigentlich ein 1a Beispiel was sich direkt auf Linux anwenden lässt.

http://www.ucarp.org/README
 
OP
C

_Cleaner_

Newbie
Danke für die Seiten...

Aber noch ne Frage, bei mir unter den SUSE 10.0 Kisten finde ich kein UCARP unter /usr/local/sbin/...

Is das nicht standart mit drauf?
 

nbkr

Guru
Ich vermute mal nicht. Failover braucht man nicht jeder. Immerhin brauchst da ja zwei synchrone Maschinen für. Macht bei einer Workstation überhaupt keinen Sinn.
 
heartbeat config ( SuSE 8.2) Konfig könnte sich geändert haben.

Rechner "web1", IP 192.168.4.41 ( muss auch so als Hostname heißen )
/etc/ha.cf:
debugfile /var/log/ha-debug
logfile /var/log/ha-log
logfacility local0
nice_failback on
bcast eth0 # Linux

node web1
node web2
/etc/haresource:
web1 192.168.4.43 10.0.0.43 do_rsync::192.168.4.42 apache
Rechner "web2", IP 192.168.4.42:

ha.cf:
debugfile /var/log/ha-debug
logfile /var/log/ha-log
logfacility local0
nice_failback on
bcast eth0 # Linux

node web1
node web2
haresource:
web1 192.168.124.43 192.168.4.43 do_rsync::192.168.4.41 apache

Die "Cluster-IP" ist 192.168.4.43

"apache" und "do_rsync" sind selbstgeschriebene/zusammenkopierte Skripts,
- Startup: apache nach der IP starten => Apache ist sonst "confused" wenn die IP später dazukommt.
- reglärer Shutdown: noch mal ein rsync auf den inaktiven Cluster.

Das "sync" geschieht durch einen Cronjob:
web2:
* * * * * /sbin/ifconfig -a | /bin/grep -s eth0:0 > /dev/null && /usr/bin/rsync -az --delete ./ 192.168.4.41:/home/user/
web1:
* * * * * /sbin/ifconfig -a | /bin/grep -s eth0:0 > /dev/null && /usr/bin/rsync -az --delete ./ 192.168.4.42:/home/user/

Die Clusteradresse ist "web" 192.168.4.43

Haveaniceday

Edit: alles andere, wie den anderen Rechner überprüfen, macht heartbeat..
/etc/ha.d/resource.d/do_rsync:
#!/bin/sh
#
#
# Add or remove IP alias for the given IP address...
#

echo $0 $* > /tmp/do_rsync.log

if [ $# -ne 2 ]
then
exit 0
fi

case $1 in
192.168.4.41|web1)
;;
192.168.4.42|web2)
;;
*)
exit 0 ;;
esac


case $2 in
start) ;;
stop) su user -c "cd /home/user ; rsync -avz --delete ./ $1:/home/user/" > /tmp/do_rsync.log
;;
status) ;;
*)
;;
esac
exit 0
 
Oben