Grundlagen

  • Lesen Sie bitte zunächst die Howto-Grundlagen, welche Sie hier finden.


Prämisse

Dieses Howto beschreibt die Einrichtung eines hochverfügbaren Load-Balancers unter dem Einsatz von 'Ldirectord', sowie Hearbeat. Es beschreibt, wie zwei Rechner als Load-Balancer eingerichtet und in einen mittels Heartbeat überwachten Verbund zusammen gefasst werden.
Ferner wird beschrieben, wie eine einfache aber hochverfügbare Lastenverteilung eines Webserver-Clusters erreicht werden kann.

Um dies an Hand eines Beispiels zu verdeutlichen, orientiert sich das vorliegende Howto am folgenden Netzwerkschema

Dienst IP Server 1 IP Server 2 NetMask Virtuelle IP
Load-Balancer 192.168.1.1 192.168.1.2 255.255.255.0 -
Web-Server 192.168.1.100 192.168.1.101 255.255.255.0 10.0.10.50


Voraussetzungen

Software

Die meisten der folgenden Pakete werden im Laufe dieser Installation bnötigt und sollen an dieser Stelle lediglich informationshalber erwähnt werden. Unter Fedora Core sollten diese Abhängigkeiten durch Yum aufgelöst und die benötigten Packete somit automatisch installiert werden.

  • fedora-usermgmt
  • fedora-usermgmt-core
  • fedora-usermgmt-default-fedora-setup
  • fedora-usermgmt-shadow-utils
  • libtool-ltdl
  • net-snmp-libs
  • pils
  • stonith
  • ipvsadm
  • perl-MailTools
  • perl-TimeDate
  • perl-URI
  • perl-libwww-perl


Arbeitsverzeichnis

-bash-3.1# mkdir -p /root/build/ha
-bash-3.1# cd /root/build/ha

Kernelmodule

Die folgenden Kernelmodule müssen durch den Server beim Hochfahren geladen werden, da Ldirectord diese zur Laufzeit verwendet.

  • ip_vs
  • ip_vs_dh
  • ip_vs_ftp
  • ip_vs_lblc
  • ip_vs_lblcr
  • ip_vs_lc
  • ip_vs_nq
  • ip_vs_rr
  • ip_vs_sed
  • ip_vs_sh
  • ip_vs_wlc
  • ip_vs_wrr


Um zu erreichen, dass diese beim Hochfahren geladen werden, erstellen Sie einfach die Datei /etc/sysconfig/modules/ip_vs.modules und fügen den folgenden Inhalt hinzu.

#!/bin/sh
#
# Load the ipvs kernel modules needed by ldirectord
#

for i in ip_vs ip_vs_dh ip_vs_ftp ip_vs_lblc ip_vs_lblcr ip_vs_lc ip_vs_nq ip_vs_rr ip_vs_sed ip_vs_sh ip_vs_wlc ip_vs_wrr;do
        modprobe $i >/dev/null 2>&1
done

Anschliessend sorgen Sie noch dafür, dass die Datei auch ausgeführt werden kann.

-bash-3.1# chmod 755 /etc/sysconfig/modules/ip_vs.modules

IP-Forwarding

Die Load-Balancer müssen dazu in der Lagen sein, eingehenden Netzwerkverkehr an die hinter ihnen platzierten Server, auf welchen die Dienste ausgeführt werden, weiter zu leiten. Hierzu muss das Packet Forwarding auf ihnen aktiviert werden.

Mit folgenden Eintrag in der Datei /etc/sysctl.conf ist die zu bewerkstelligen, wobei der Eintrag an sich aller Wahrscheinlichkeit nach bereits existieren wird und somit lediglich der Wert von 0 auf 1 zu setzen ist.

# Enable packet forwarding
net.ipv4.ip_forward = 1

Abschliessend muss dem Server noch gesagt werden, dass er die Änderung übernehmen soll, was mit dem folgenden Kommando zu erreichen ist

-bash-3.1# sysctl -p

Installation

Die Installation unter Fedora Core erweisst sich als recht simpel. Führe Sie hierzu lediglich das folgende Kommando aus.

-bash-3.1# yum install heartbeat

Konfiguration

Die Konfiguration des Load-Balancers stellt ebenfalls keine grosse Hürde dar. Im Folgenden wird sie vorgestellt.

Heartbeat

Heartbeat wird mittels zweier Dateine konfiguriert, welche beide im Verzeichnis /etc/ha.d zu finden sind:

  • ha.cf
  • haresources


Ferner wird eine Datei benötigt, in welcher die Zugangsdaten gespeichert sind, welche im Laufenden System dann von den beiden Load-Balancern dazu verwendet wird, mit dem jeweils anderen zu kommunizieren. Auch diese wird unter /etc/ha.d abgelegt.

  • authkeys

Diese drei Dateien müssen Sie auf beiden Load-Balancer-Systemen speichern!

ha.cf

Legen Sie Datei /etc/ha.d/ha.cf an und fügen den folgenden Inhalt ein.

logfile       /var/log/ha-log
logfacility   local0
bcast         eth0
mcast         eth0 225.0.0.1 694 1 0
auto_failback off
node          fqdn.lb1.mydom.local
node          fqdn.lb2.mydom.local
respawn       hacluster /usr/lib64/heartbeat/ipfail
apiauth       ipfail gid=haclient uid=hacluster

Ersetzen Sie fqdn.lb{1,2}.mydom.local durch den jeweiligen Vollqualifizierten Domänenname Ihrer beiden Load-Balancer-Systeme.

Arbeiten Sie mit einem 32Bit OS, so ersetzen Sie bitte lib64 durch lib für den Parameter respawn.


haresources

Legen Sie Datei /etc/ha.d/haresources an und fügen den folgenden Inhalt ein.

fqdn.lb1.mydom.local \
    ldirectord::ldirectord.cf \
    LVSSyncDaemonSwap::master \
    IPaddr2::10.0.10.50/24/eth0/10.0.10.255


Das jede Zeile abschliessenden \-Zeichen dienen der Aufteilung eines Konfigurationsparameters auf mehrere Zeilen, wodurch sich der Eintrag deutlich besser liest.

Zeile Konfigurationswert Bedeutung
1 fqdn.lb1.mydom.local Definiert den FQDN des ersten Load-Balancers. Hier ist auf jedem LB immer der des ersten einzutragen.
2 ldirectord::ldirectord.cf Definiert die für diesen Dienst zu verwendende Ldirectord-Konfigurationsdatei.
3 LVSSyncDaemonSwap::master ?
4 IPaddr2::10.0.10.50/24/eth0/10.0.10.255 Definiert die IP-Einstellungen für den Virtuellen Server und legt fest, an welches Netzwerkinterface dieser zu binden ist.


authkeys

Damit die sich im selben Verbund befindlichen Load-Balancer miteinander kommunizieren können, müssen sie über ein und die selbe authkeys-Datei verfügen.
Legen Sie Datei /etc/ha.d/authkeys an und fügen den folgenden Inhalt ein.

3 md5 saglk3lkaofdhvdsa9634lknalfk02lkn5lbnglsdhfg


Der dritte Teil des Eintrags, saglk3lkaofdhvdsa9634lknalfk02lkn5lbnglsdhfg stellt einen zufälligen Wert dar, den Sie durch willkürliches Betätigen Ihrer Tastatur oder auch nach belieben anderweitig erstellen können. Lediglich von dem hier verwendeten Wert sollte sich Ihrer unterscheiden.

Da es sich bei dieser Datei um eine Passwortdatei handelt, sollten Sie die Zugriffsrechte auf diese entsprechend setzen.

-bash-3.1# chmod 600 /etc/ha.d/authkeys


Ldirectord

Nachdem Sie Heartbeat konfiguriert haben, ist es nun an der Zeit, Ldirectord mit der benötigten Konfiguration zu versehen. Eine diesen Teil abdekende Anleitung finden Sie in diesem Howto.

Last but not least finden Sie hier eine Anleitung, wie Sie Ihre Webserver zu konfigurieren haben, damit diese über den Load-Balancer verfügbar gemacht werden können.


SysInit

Heartbeat

Heartbeat sollte bei der Installation bereits im SysInit veranckert und dort auch aktiviert sein. Zur Sicherheit sorgen wir dafür, dass er es auch wirklich ist. Zuvor jedoch erstellen wir noch einen symbolischen Link, damit wir nicht immer so viel Tippen müssen.

-bash-3.1# ln -s /etc/init.d/heartbeat /usr/sbin/rcheartbeat
-bash-3.1# chkconfig heartbeat on


Ldirectord

Ldirectord sollte bei der Installation ebenfalls im SysInit veranckert und dort aktiviert worden sein. Da in unserer Installation der Ldirectord jedoch von Heartbeat verwendet und gestartet wird, muss dafür gesorgt werden, dass Ldirectord nicht als eigenständiger Dienst ausgeführt wird. Zuvor jedoch erstellen wir noch einen symbolischen Link, damit wir nicht immer so viel Tippen müssen.

-bash-3.1# ln -s /etc/init.d/ldirectord /usr/sbin/rcldirectord
-bash-3.1# chkconfig ldirectord off