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.
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.
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
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