Grundlagen

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


Prämisse

Sie haben einen funktionierenden Load-Balancer eingerichtet und möchten nun Ihre MySQL-Datenbank(en) über diesen von zwei Servern bedienen lassen.


Dienst IP Server 1 IP Server 2 NetMask Virtuelle IP
MySQL-API 192.168.1.100 192.168.1.101 255.255.255.0 10.0.10.50


Dieses Howto beschreibt, wie der LB-Verbund zu konfigurieren ist, um einen MySQL-Cluster zu betreiben. Die Konfiguration der sich im Cluster befindenden MySQL-Server wird im MySQL-Cluster-Howto beschrieben.

Mitglieder des Clusters werden lediglich die MySQL-API-Server.


Voraussetzungen

Sie haben nach den hier zu findenden Angaben eine Load-Balancer eingerichtet.


MySQL-DB-Konfiguration

ToDo

  • ldirectord Datenbank einrichten
  • ldirectord Benutzer einrichten
  • ldirectord Benutzer Rechte auf die Datenbank einrichten

Kommt noch! Ich denke aber, wer mit diesem Howto spielt, sollte von der unten stehenden Konfiguration die MySQL-DB-Konfiguration ableiten können.

By the way, ldirectord Datenbank natürlich TYPE=NDBCLUSTER!


Software

Damit der Load-Balancer MySQL-Anfragen entgegennehmen und verarbeiten kann, ist es erforderlich, dass die folgenden Pakete installiert sind:

  • mysql
  • perl-DBI
  • perl-DBD-MySQL

Stellen Sie dies sicher, indem Sie das folgende Kommando ausführen.

-bash-3.1# yum install mysql perl-DBI perl-DBD-MySQL


Konfiguration

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

Beachten Sie, dass alle Konfigurationen an allen sich im LB-Verbund befindlichen Servern durchzuführen sind. Hierbei gilt, dass auf allen Servern eine zu den im Folgenden aufgeführten Konfigurationen identische Version abgelegt werden muss.

Heartbeat

Sie müssen Ihrem Load-Balancer bekannt geben, dass er diese Aufgabe zu bewerkstelligen hat. Fügen Sie hierzu der Datei /etc/ha.d/haresources folgenden Inhalt hinzu, nicht eventuell vorhandenes ersetzen.

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

Sollte es sich bei diesem Dienst um den ersten Dienst handeln, den Sie einrichten, dann ersetzen Sie bitte ldirectord.cf mit ldirectord.mysql.cf in Ihrer ha.cf Konfigurationsdatei.


Ldirectord

Nachdem Sie Heartbeat konfiguriert haben, muss nun ebenfalls noch der Ldirectord konfiguriert werden. Hierzu erstellen Sie die Datei /etc/ha.d/ldirectord.mysql.cf und fügen den folgenden Inhalt ein.

checktimeout=10
checkinterval=2
autoreload=yes
logfile="local0"
quiescent=yes

virtual = 10.0.10.50:3306
        service = mysql
        real = 192.168.1.100:3306 gate
        real = 192.168.1.101:3306 gate
        checktype = negotiate
        login = "ldirector"
        passwd = "MY_SECRET_PASSWORD"
        database = "ldirectordb"
        request = "SELECT * FROM connectioncheck;"
        scheduler = wrr

Ein Wort zum fallback-Parameter. Es ist davon aus zugehen, dass auf Ihren LB-Systemen keine MySQL-Server ausgeführt wird und somit können Sie diese auch einfach weg lassen. Es ist jedoch praktisch, auf den LB selbst einen nur vom LB selber zugänglichen MySQL-Server zu installieren und zu betreiben, welcher im Falle eines Falles alle Anfragen bedient. Selbstverständlich lässt sich auf diese Art und Weise auch ein separater Server einbinden und wer das nötige Kleingeld übrig hat, warum nicht… ;-)


Neustart

Zur Übernahme der neuen Konfiguration müssen Sie Ihren Load-Balancer neu starten.

-bash-3.1# /etc/init.d/heartbeat restart

oder, wenn Sie allen Anweisungen im LB-Howto gefolgt sind:

-bash-3.1# rcheartbeat restart