the other side of life
Posts tagged Cluster
lvm is not a clvm ;)
Dec 2nd
LVM is not cluster aware so be very careful !
Steps to make changes on a (shared-) lvm:
- other nodes:
# vgchange -an - master node: make changes like
# lvrename - other nodes:
# vgscan; vgchange -ay
Thats on only necessary if you have a shared storage like drbd or a SAN
Pound einrichten….
Jun 3rd
Wollen wir uns nun langsam mal der Pound Konfiguration widmen.
Hier ist ein sehr einfaches Beispiel. Die lokalen Webserver hören auf dem Port 81 und Pound darf auf Port 80 hören, wobei 192.168.1.3 die HA-IP Adresse wieder spiegelt.
## Minimal sample pound.cfg
##
## see pound(8) for details
######################################################################
## global options:
User "www-data"
Group "www-data"
#RootJail "/chroot/pound"
## Logging: (goes to syslog by default)
## 0 no logging
## 1 normal
## 2 extended
## 3 Apache-style (common log format)
LogLevel 1
## check backend every X secs:
Alive 5
## use hardware-accelleration card supported by openssl(1):
#SSLEngine ""
######################################################################
## listen, redirect and ... to:
## redirect all requests on port 8080 ("ListenHTTP") to the local webserver (see "Service" below):
ListenHTTP
Address 192.168.1.3
Port 80
## allow PUT and DELETE also (by default only GET, POST and HEAD)?:
xHTTP 0
Service
BackEnd
Address 192.168.1.1
Port 81
End
BackEnd
Address 192.168.1.2
Port 81
End
End
End
Installiert wird Pound einfach via aptitude pound und wieder dran denken das die pound.cfg auf beiden Servern gleich sein muss.
Bei unterschiedlich dimensionierten Servern können wir mir Priority im BackEnd, die Last unterschiedlich auf der Server verteilen.
Weitere gute Beispiel-Konfigurationen findet man in der Manpage von Pound (man pound) !
In der /etc/default/pound müssen wir noch den Wert für startup gleich 1 setzen, damit Pound überhaupt startet.
Hier mal meine Konfiguration
## Minimal sample pound.cfg
##
## see pound(8) for details
######################################################################
## global options:
User "www-data"
Group "www-data"
RootJail "/var/pound/chroot"
## Logging: (goes to syslog by default)
## 0 no logging
## 1 normal
## 2 extended
## 3 Apache-style (common log format)
LogLevel 1
## check backend every X secs:
Alive 5
## use hardware-accelleration card supported by openssl(1):
#SSLEngine ""
######################################################################
## listen, redirect and ... to:
## redirect all requests on port 8080 ("ListenHTTP") to the local webserver (see "Service" below):
ListenHTTP
Address 192.168.1.1
Port 80
## allow PUT and DELETE also (by default only GET, POST and HEAD)?:
xHTTP 0
Service
BackEnd
Address 192.168.1.2
Port 81
Priority 6
End
BackEnd
Address 192.168.1.3
Port 81
Priority 3
End
BackEnd
Address 192.168.1.4
Port 81
Priority 3
End
End
Service
URL ".*.(jpg|gif|png)"
BackEnd
Address 192.168.1.5
Port 81
End
End
End
HA mit Debian Lenny & drbd8, ocfs2, heartbeat, pound (http) und mysql
Apr 9th
Vorrausetzung
- 2 Server mit einer Lenny Grundinstallation ( Hier als Servernamen cnode1 und cnode2 )
- Optional: 2 Netzwerkkarten je Server (für drbd)
- eine leere Partion je Server
- Vorausgesetzt es ist nicht anderst angegeben, alles auf beiden Nodes ausführen !
Konfiguration von drbd
Auf beiden Servern als root anmelden
aptitude install drbd8-utils drbd8-modules-2.6.24-1-686
echo "drbd" >> /etc/modules
Nun sichern wir die alte drbd-Konfigurationsdatei
mv /etc/drbd.conf /etc/drbd.conf.old
Jetzt erstellen wir eine neue Datei mit vim /etc/drbd.conf
global { usage-count yes; }
common { syncer { rate 10M; } }
resource ha {
protocol C;
startup { wfc-timeout 0; degr-wfc-timeout 120; }
disk { on-io-error detach; }
net {
cram-hmac-alg sha1;
allow-two-primaries; # Wichtig für Primary/Primary Setup
}
on cnode1 {
device /dev/drbd0;
disk /dev/sdb1;
address 192.168.1.1:7788;
meta-disk internal;
}
on cnode2 {
device /dev/drbd0;
disk /dev/sdb1;
address 192.168.1.2:7788;
meta-disk internal;
}
}
Speichern mit :wq
Wenn 2 Netzwerkkarten vorhanden sind, drbd lieber auf eine eigene Karte konfigurieren. Damit drbd mit der Partion etwas anfangen kann, müssen wir diese initialisieren.
drbdadm create-md ha
Nun können wir die beiden Partionen synchronisieren. (Den folgenden Befehl nur auf einer Node starten !)
drbdsetup /edv/drbd0 primary --overwrite-data-of-peer
Je nach dem wie groß die Partionen sind kann es nun etwas Zeit vergehen. Der Fortschritt kann überprüft werden mit
/etc/init.d/drbd status
In der Ausgabe sollte sich die unten stehende Zeile finden lassen, wenn beide drbd-Devices synchron sind.
0: cs:Connected st:Primary/Secondary ds:UpToDate/UpToDate C r---
Nun können wir die zweite Node auch zum ”Primary” machen
drbdsetup primary r0
Update (Danke keks)
Da es sehr störend ist, wenn wir die Server neustarten, immer per Hand die 2 Nodes als Primary zu definieren, fügen wir noch zusätzlich in den startup-Block
become-primary-on both;
ein. Die Zeile sollte dann wie folgt aussehen:
startup { wfc-timeout 0; degr-wfc-timeout: 120; become-primary-on both; }
Das bewirkt, dass beide während des Bootvorgangs als Master definiert werden. Nun die Konfiguration auf beiden Nodes aktualisieren, dann
drbdadm adjust ha
und
drbdadm primary ha
(Befehle auf beiden Nodes ausführen!)
Wichtig: Um diese Funktion zunutzen, müsst ihr DRBD aus den Quellen bauen, da die Funktion (laut drbd-Homepage) erst ab 8.2.0 implementiert ist.
Konfiguration von ocfs2
Jetzt installieren das ocfs2 Filesystem
aptitude install ocfs2-tools ocfs2console
Noch die Konfigurationsdatei erstellen
#/etc/ocfs2/cluster.conf
node:
ip_port = 7777
ip_address = 192.168.1.1
number = 0
name = cnode1
cluster = ocfs2
node:
ip_port = 7777
ip_address = 192.168.1.2
number = 1
name = cnode2
cluster = ocfs2
cluster:
node_count = 2
name = ocfs2
Nun sind wir fast fertig. Jetzt einmal
/etc/init.d/ocfs2 restart
und dann können wir das Filesystem erstellen mit
mkfs.ocfs2 /dev/drbd0
Damit wir mit dem Filesystem arbeiten können, müssen wir es initialisieren.
/etc/init.d/o2cb online ocfs2
bewirkt das der Cluster mit dem Namen ocfs2 geladen wird.
/etc/init.d/o2cd load
/etc/init.d/o2cd online ocfs2
Jetzt können wir es mit
mount /dev/drbd0 /srv
nutzen
Konfiguration vom HTTP Loadbalancer – pound
Konfiguration von heartbeat
Folgt !