In diesem Artikel erfahren Sie, wie Sie eine MySQL 5-Datenbank mit drei Knoten konfigurieren Servercluster: Zwei Speicherknoten und ein
Verwaltungsknoten.
Der Cluster istein Hochverfügbarkeits-Load-Balancer
, der aus zwei Knoten besteht, die das Ultra Monkey-Installationspaket verwenden
, das ein „Heartbeat“-Gerät (zur Überprüfung, ob ein anderer Knoten aktiv ist) und ein „Ldirectord“-Gerät (Verteilen von Anforderungen an die Knoten des MySQL-Clusters) bereitstellt
.In diesem Artikel verwendet jeder unserer Knoten das Debian Sarge Linux-System. Die Installation anderer Linux-Distributionen kann geringfügig
abweichen. Wir verwenden MySQL Version 5.0.19. Wenn Sie MySQL 5 nicht verwenden möchten, können Sie auch MySQL 4.1 verwenden,
obwohl
ich das noch nicht getestet habe.Dieser Artikel ist ein praktischer Anwendungsleitfaden; er beinhaltet nicht zu viel Theorie. Im Internet findet man viel Theorie zum Thema Clustering.
Für einen Server
verwende ich den folgenden Debian-Server. Sie befinden sich alle im selben Netzwerksegment (dieses Beispiel: 192.168.0.x):
sql1.test.com: 192.168.0.101 MySQL Cluster Node 1
sql2.test.com: 192.168. 0.102 MySQL-Cluster-Knoten 2
Loadb1.test.com: 192.168.0.103 Lastausgleich 1 / MySQL-Cluster-Verwaltungsserver
Loadb2.test.com: 192.168.0.104 Lastausgleich 2
Außerdem benötigen wir eine virtuelle IP-Adresse: 192.168.0.105. Es sorgt für den Lastausgleich für diesen MySQL-Cluster, sodass
Anwendungen über eine einheitliche IP-Adresse auf den Cluster zugreifen können.
Obwohl wir zwei Knoten im MySQL-Cluster verwenden möchten, benötigen wir
aus einem Hauptgrund dennoch einen dritten Knoten, den MySQL-Cluster-Verwaltungsserver: Wenn einer der MySQL-Cluster-Knoten ausfällt und der MySQL-Cluster-Verwaltungsserver nicht läuft, dann
Dann sind die Daten auf den beiden Clusterknoten inkonsistent („Split Brain“). Wir benötigen es, um MySQL Cluster zu konfigurieren.
Daher sind für unsere Installation im Allgemeinen fünf Computer erforderlich:
2 MySQL Cluster-Knoten + 1 Cluster Management Server + 2 Load Balancer = 5
Da der Cluster Management Server nicht viele Ressourcen verwendet, ist das System leer. So können wir unseren
ersten
Load Balancer auf derselben Maschine platzieren , wodurch wir einen Server sparen, sodass wir im Idealfall nur vierMaschinen benötigen.
2. Konfigurieren Sie den MySQL-Cluster-Verwaltungsserver.
Zuerst müssen wir MySQL 5.0.19 herunterladen und den Cluster-Verwaltungsserver (ndb_mgm) installieren, der
zur Überwachung des Clusterbetriebs verwendet werden kann Schritte sind in Loadb1.test .com (192.168.0.103):
Loadb1.test.com:
mkdir /usr/src/mysql-mgm
cd /usr/src/mysql-mgm
wget http://dev.mysql.com/get /Downloads/ MySQL-5.0/mysql-max-5.0.19-linux-i686-
glibc23.tar.gz/from/http://www.mirrorservice.org/sites/ftp.mysql.com/
tar xvfz mysql- max-5.0 .19-linux-i686-glibc23.tar.gz
cd mysql-max-5.0.19-linux-i686-glibc23
mv bin/ndb_mgm /usr/bin
mv bin/ndb_mgmd /usr/bin
chmod 755 /usr/ bin/ndb_mg *
cd /usr/src
rm -rf /usr/src/mysql-mgm
Als nächstes müssen wir die Cluster-Konfigurationsdatei erstellen, /var/lib/mysql-cluster/config.ini:
loadb1.test.com:
mkdir /var /lib/mysql-cluster
cd /var/lib/mysql-cluster
vi config.ini
————-
[NDBD DEFAULT]
NoOfReplicas=2
[MYSQLD DEFAULT]
[NDB_MGMD DEFAULT]
[TCP DEFAULT]
# Abschnitt für den Cluster Verwaltungsknoten
[NDB_MGMD]
# IP-Adresse des Verwaltungsknotens (dieses System)
HostName=192.168.0.103
# Abschnitt für die Speicherknoten
[NDBD]
# IP-Adresse des ersten Speicherknotens
HostName=192.168.0.101
DataDir= /var/lib/ mysql-cluster
[NDBD]
# IP-Adresse des zweiten Speicherknotens
HostName=192.168.0.102
DataDir=/var/lib/mysql-cluster
# ein [MYSQLD] pro Speicherknoten
[MYSQLD]
[MYSQLD]
———-
In der tatsächlichen Anwendung Bitte ändern Sie die Datei. Ersetzen Sie die IP-Adresse durch Ihre entsprechende IP.
Dann starten wir den Cluster-Verwaltungsserver:
loadb1.test.com:
ndb_mgmd -f /var/lib/mysql-cluster/config.ini
Wir sollten auch in der Lage sein müssen, den Verwaltungsserver automatisch zu starten, wenn der Server startet, also erstellen wir ein sehr einfaches Initialisierungsskript
und entsprechende Startverbindung:
loadb1.test.com:
echo 'ndb_mgmd -f /var/lib/mysql-cluster/config.ini' > /etc/init.d/ndb_mgmd
chmod 755 /etc/init. d/ ndb_mgmd
update-rc.d ndb_mgmd-Standardwerte
Drei Konfigurations-MySQL-Clusterknoten (Speicherknoten)
Jetzt installieren wir mysql-max-5.0.19 auf sql1.test.com bzw. sql2.test.com:
sql1.example.com/ sql2 .example.com:
groupadd mysql
useradd -g mysql mysql
cd /usr/local/
wget http://dev.mysql.com/get/Downloads/MySQL-5.0/mysql-max-5.0.19-linux-i686-
glibc23.tar.gz/from/http://www.mirrorservice.org/sites/ftp.mysql.com/
tar xvfz mysql-max-5.0.19-linux-i686-glibc23.tar.gz
ln -s mysql - max-5.0.19-linux-i686-glibc23 mysql
cd mysql
scripts/mysql_install_db –user=mysql
chown -R root:mysql .
chown -R mysql data
cp support-files/mysql.server /etc/init.d/
chmod 755 /etc/init.d/mysql.server
update-rc.d mysql.server defaults
cd /usr/local/mysql/bin
mv * /usr/bin
cd ../
rm -fr /usr/local/mysql/bin
ln -s /usr/bin /usr/local/mysql/bin
Dann erstellen wir die MySQL-Konfigurationsdatei /etc/my.cnf auf jedem Knoten:
vi /etc/my.cnf
–
[mysqld]
ndbcluster
# IP-Adresse des Clusters Management Node
ndb-connectstring=192.168.0.103
[mysql_cluster]
# IP-Adresse des Cluster-Management-Knotens
ndb-connectstring=192.168.0.103
–
Stellen Sie sicher, dass Sie die richtige IP-Adresse im Cluster-Management-Server eingeben.
Als nächstes erstellen wir das Datenverzeichnis und starten den MySQL-Server auf jedem Clusterknoten:
sql1.test.com / sql2.test.com:
mkdir /var/lib/mysql-cluster
cd /var/lib/mysql-cluster
ndbd – initial
/ etc/init.d/mysql.server start
(Bitte denken Sie daran: Wir starten MySQL nur zum ersten Mal oder wenn sich /var/lib/mysql-cluster/config.ini auf loadb1.test.com
ändert. Verwenden Sie nur ndbd –initial)
Jetzt ist es an der Zeit, das Passwort für das MySQL-Root-Konto festzulegen:
sql1.test.com / sql2.test.com:
mysqladmin -u root-Passwort yourrootsqlpassword
Wir müssen den Clusterknoten starten, wenn der Server startet, also erstellen wir eine ndbd-Initialisierung Skript und die entsprechende
Systemstartverbindung:
sql1.test.com / sql2.test.com:
echo 'ndbd' > /etc/init.d/ndbd
chmod 755 /etc/init.d/ndbd
update-rc d ndbd defaults
4 MySQL-Cluster testen
Unsere MySQL-Cluster-Konfiguration ist abgeschlossen, jetzt ist es an der Zeit, sie zu testen.
Führen Sieauf dem Cluster-Management-Server
(loadb1.test.com) den Cluster-Management-Client ndb_mgm aus, um zu überprüfen, ob die Cluster-Knoten verbunden sind:
loadb1.test.com:
ndb_mgm
Sie sehen Folgendes:
– NDB-Cluster – Management-Client –
ndb_mgm >
Geben Sie show;
show in der Befehlszeile ein.
Die Ausgabeinformationen sollten wie folgt aussehen:
ndb_mgm> show;
Connected to Management Server at: localhost:1186
Cluster Configuration
———————
[ndbd(NDB)] 2 node( s)
id= 2 @192.168.0.101 (Version: 5.0.19, Nodegroup: 0, Master)
id=3 @192.168.0.102 (Version: 5.0.19, Nodegroup: 0)
[ndb_mgmd(MGM)] 1 Node(s )
id=1 @192.168.0.103 (Version: 5.0.19)
[mysqld(API)] 2 Knoten
id=4 @192.168.0.101 (Version: 5.0.19)
id=5 @192.168.0.102 (Version: 5.0.19)
ndb_mgm>
Wenn Sie sehen, dass alle Ihre Knoten verbunden sind. Dann geht alles gut!
Geben Sie
quit;
ein,um die ndb_mgm-Clientkonsole zu verlassen.
Jetzt erstellen wir eine Testdatenbank auf dem Knoten sql1.test.com, erstellen eine Testtabelle und
geben einige Testdaten ein:
mysql -u root -p
CREATE DATABASE mysqlclustertest;
USE
CREATE TABLE testtable (i INT) ENGINE=NDBCLUSTER ;
INSERT INTO testtable () VALUES (1);
SELECT * FROM testtable;
(
Sehen Sie sich die CREATE-Anweisung oben an: Die Tabellen aller Datenbanken, die wir gruppieren möchten, müssen ENGINE=NDBCLUSTER
verwenden funktioniert nicht!)
Das Ergebnis von SELECT sollte sein:
mysql> SELECT*
FROM testtable
;
+
——
+
1
|
Dieselbe Datenbank auf dem Knoten sql2.test.com (ja, wir müssen sie noch erstellen, aberdie Daten werden
nach der Erstellung der Testtabelle
nach sql2.test.com kopiert, da die Testtabelle ENGINE=NDBCLUSTER verwendet):sql2. test. com:
mysql -u root -p
CREATE DATABASE mysqlclustertest;
USE
mysqlclustertest;
Das Ergebnis von SELECT
*
FROM testtable;
—+
|. i |.
+
——
+
1 Zeile im Satz (0,04 Sek.)
Wir sehen, dass die Daten vom Knoten sql1.test.com kopiert wurden.
Jetzt
fügenwir
eine weitere Zeile in die Testtabelle ein:
sql2.test.com:
INSERT
INTO testtable () VALUES (2);
sql1.example.com:
mysql
-u root
-p
SELECT
*
FROM
testtable
;
quit
;
|. 2 |.
+——+
2 Zeilen im Satz (0,05 Sek.),
sodass jeder Clusterknoten die gleichen Daten hat!
Sehen wir uns nun an, ob wir Knoten 1 (sql1.example.com) stoppen: Führen Sie
sql1.example.com:
killall ndbd
ausund überprüfen Sie
,
ob alle ndbd-Prozesse beendet wurden. Wenn immer noch ndbd-Prozesse angezeigt werden, führen Sie
killall ndbd
erneut aus, bis alle ndbd-Prozesse beendet sind.
Überprüfen Sie nun auf unserem Verwaltungsserver den Status des Clusters (loadb1.example.com):
Loadb1.example.com:
ndb_mgm
Geben Sieshow;
auf der ndb_mgm-Konsole
ein.Sie sollten Folgendes sehen:
ndb_mgm> show;
Connected to Management Server at: localhost :1186
Cluster-Konfiguration
————————
[ndbd(NDB)] 2 Knoten
id=2 (nicht verbunden, akzeptiert Verbindung von 192.168.0.101)
id=3 @192.168.0.102 (Version: 5.0 .19 , Knotengruppe: 0, Master)
[ndb_mgmd(MGM)] 1 Knoten
id=1 @192.168.0.103 (Version: 5.0.19)
[mysqld(API)] 2 Knoten
id=4 @192.168 .0.101 (Version: 5.0.19)
id=5 @192.168.0.102 (Version: 5.0.19)
ndb_mgm>
Sie sehen, der Knoten sql1.example.com ist nicht verbunden.
Geben Sie ein:
quit;
beenden Sie die ndb_mgm-Konsole.
Überprüfen wir den Knoten
sql2.example.com:
mysql -u root -p
USE mysqlclustertest;
Das
Ergebnis der SELECT-Abfrage sollte immer noch sein:
mysql> SELECT * FROM testtable
;
+
——
+
|
.
1
|
.example .com:
ndbd
5 So starten Sie den Cluster neu
Stellen wir uns nun vor, dass Sie den MySQL-Clusteraufgrund einer Änderung von /var/lib/mysql-cluster/config.ini auf dem Knoten „loadb1.test.com“
oder einem anderenneu starten müssen
Gründe.Dazu verwenden Sie
den ndb_mgm-Clusterverwaltungsclient auf dem Knoten „loadb1.example.com“:
„loadb1.test.com:
ndb_mgm“
.
Geben Siean der ndb_mgm-Konsole
eine Meldung wie diese ein:
ndb_mgm> „shutdown“
; : Das Herunterfahren des Clusters wurde eingeleitet
. Knoten 2
wurde heruntergefahren. NDB-Cluster
-
Verwaltungsserver
wurden
heruntergefahrenDie Clusterverwaltungsserver wurden alle heruntergefahren.
Führen Sie
quit aus;
beenden Sie die ndb_mgm-Konsole.
Um den Cluster-Management-Server zu starten, führen Sie dies auf loadb1.test.com aus:
loadb1.test.com:
ndb_mgmd -f /var/lib/mysql-cluster/config.ini
und auf sql1.test.com und sql2.test.com Ausführen auf:
sql1.example.com / sql2.example.com:
ndbd
Oder Sie haben gerade die Datei /var/lib/mysql-cluster/config.ini auf loadb1.test.com geändert:
ndbd –initial
Danach Sie können auf „loadb1.test.com“ prüfen, ob der Cluster neu gestartet wurde:
„loadb1.test.com:
ndb_mgm“
Geben Sie in der ndb_mgm-Konsole
„show“
ein,um den aktuellen Status des Clusters anzuzeigen. Es kann einen Moment dauern, bis alle Knoten nach dem Neustart melden, dass sie verbunden sind.
Geben Sie ein:
quit;
beenden Sie die ndb_mgm-Konsole.
6. Konfigurieren des Lastausgleichs
Unser MySQL-Cluster ist nun fertig und Sie können ihn jetzt verwenden.
Allerdings haben wir keineseparate IP
-Adresse
für den Zugriff auf den Cluster
, was bedeutet, dass Sie einen Teil der Anwendung für die Verwendung von MySQL-Cluster-Knoten 1 (sql1.test.com) und einen anderen Teil für die Verwendung von Knoten 2 (sql2.test.com) konfigurieren müssen. test.com).Natürlich müssen alle Anwendungen nur einen Knoten verwenden, aber wenn Sie
die Last nicht auf Clusterknoten aufteilen möchten, was ist dann der Zweck eines Clusters? Eine andere Frage ist:
Was wäre, wenn ein Cluster
vorhanden wäre?Knoten geht aus? Dann können Anwendungen, die diesen Clusterknoten verwenden, überhaupt nicht funktionieren.
Die Lösung besteht hier darin, einen Lastausgleicher vor dem MySQL-Cluster zu konfigurieren, um die Last zwischen den einzelnen MySQL-Cluster-Knoten auszugleichen.
Der Load Balancer konfiguriert eine gemeinsame virtuelle IP-Adresse für die Clusterknoten, und alle Ihre Anwendungen verwenden diese virtuelle IP-Adresse, um
auf den Cluster zuzugreifen. Wenn einer der Knoten ausfällt, funktioniert Ihre Anwendung weiterhin, da der Load Balancer Anforderungen an den anderen Knoten weiterleitet,
der ordnungsgemäß funktioniert.
In diesem Beispiel wird nun der Load Balancer zum Flaschenhals. Was passiert, wenn dieser Load Balancer kaputt geht? Wir werden also
zwei Load Balancer im (aktiv/passiven) Aktiv/Passiv-Installationsmodus konfigurieren. Das bedeutet, dass wir einen Load Balancer haben, der aktiv ist, und einen anderen, der sich
im Hot-Standby befindet, und wenn der aktive Load Balancer ausfällt, wird er aktiv. Jeder Load Balancer verwendet Heartbeat, um
die Aktivität des anderen Load Balancers zu überprüfen, und der Load Balancer verwendet auch ldirectord, das für die Verteilung des Datenverkehrs an die Clusterknoten verantwortlich ist.
Sowohl heartbeat als auch ldirectord sind im Ultra Monkey-Installationspaket enthalten, das wir installieren werden.
Es ist sehr wichtig, dass der Systemkernel der Knoten „loadb1.test.com“ und „loadb2.test.com“ IPVS (IP Virtual Server) unterstützt.
IPVS führt einen Lastausgleich auf der Transportschicht des Linux-Kernels durch.
6.1 Ultra Monkey installieren
OK, jetzt fangen wir an: Zuerst aktivieren wir IPVS auf den Knoten Loadb1.test.com und Loadb2.test.com:
Loadb1.example.com / Loadb2.Example.com:
modprobe ip_vs_dh
modprobe ip_vs_ftp
modprobe ip_vs
modprobe ip_vs_lblc
modprobe ip_vs_lblcr
modprobe ip_vs_lc
modprobe
ip_vs_nq
modprobe ip_vs_rr modprobe ip_vs_sed
modprobe ip_vs_sh
modprobe ip_vs_wlc
modprobe ip_vs_wrr
Um IPVS-Module beim Start zu aktivieren, listen wir die Module in /etc/modules auf:
Loadb1.test.com / Loadb2.test.com:
vi / etc /
moduleip_vs_dh
ip_vs_ftp
ip_vs
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
Jetzt bearbeiten wir /etc/apt/sources.list, fügen den Download-Punkt von Ultra Monkey hinzu und installieren dann Ultra Monkey:
loadb1.test .com/loadb2 .test.com:
vi /etc/apt/sources.list
deb http://www.ultramonkey.org/download/3/ sarge main
deb-src http://www.ultramonkey.org/download/3 sarge main
apt-get update
apt-get Installieren Sie ultramonkey libdbi-perl libdbd-mysql-dev.
Wenn Sie die folgende Warnung sehen:
|
.
Es scheint,
dass Ihr Kernel nicht mit Sensorunterstützung kompiliert wurde.
libsensors3 ist auf Ihrem
System
nicht
funktionsfähig
.
BeantwortenSie
die folgende Frage:
Möchten Sie IPVS-Regeln beim Booten
automatisch
laden
?
MySQL-Cluster mit MySQL 5),
also installieren wir das neueste DBD::mysql Perl-Installationspaket:
Loadb1.test.com / Loadb2.test.com:
cd /tmp
wget
tar xvfz DBD-mysql-3.0002.tar.gz
cd DBD- mysql -3.0002
perl Makefile.PL
make
make install
Wir müssen zuerst die Paketweiterleitung aktivieren:
Loadb1.example.com / Loadb2.Example.com:
vi /etc/sysctl.conf
# Aktiviert die Paketweiterleitungnet.ipv4.ip_forward = 1
6.2 Heartbeat konfigurieren ( heartbeat )
Wir konfigurieren Heartbeat, indem wir drei Dateien erstellen (die Dateien von Loadb1.test.com und Loadb2.test.com müssen genau gleich sein):
Loadb1.test.com / Loadb2.test.com:
vi /etc/ha.d /ha .cf
logfacility local0
bcast eth0
mcast eth0 225.0.0.1 694 1 0
auto_failback off
nodeloadb1
nodeloadb2
respawn hacluster /usr/lib/heartbeat/ipfail
apiauth ipfail gid=haclient uid=hacluster
Denken Sie daran: Sie müssen den Knotennamen auflisten (dies Im Beispiel sind „loadb1“ und „loadb2“
uname -n.
Ansonsten müssen wir an dieser Datei keine Änderungen vornehmen.
vi /etc/ha.d/haresources
loadb1
ldirectord::ldirectord.cf
LVSSyncDaemonSwap::master
IPaddr2::192.168.0.105/24/eth0/192.168.0.255
Sie müssen einen der Lastausgleichsknotennamen aufzählen (hier: Loadb1) und listet
die virtuelle IP-Adresse (192.168.0.105) und die Broadcast-Adresse
(
192.168.0.255
)
auf
other. Das Passwort für den Daemon.
Legen Sie hier Ihr eigenes Passwort fest. Sie können aus 3 Verschlüsselungsmethoden wählen. Ich verwende im Allgemeinen MD5 zur Verschlüsselung.
/etc/ha.d/authkeys sollte für das Root-Konto schreibgeschützt sein. Hier machen wir das:
Loadb1.test.com / Loadb2.test.com:
chmod 600 /etc/ha.d/authkeys
6.3 Konfigurieren von ldirectord
Jetzt Für ldirectord Konfigurationsdatei erstellen, Load Balancer:
Loadb1.example.com / Loadb2.Example.com:
vi /etc/ha.d/ldirectord.cf
# Globale Anweisungen
checktimeout=10
checkinterval=2
autoreload=no
logfile="local0"
quiescent =ja,
virtuell = 192.168.0.105:3306
, Dienst = MySQL,
real = 192.168.0.101:3306, Tor,
real = 192.168.0.102:3306, Tor,
Prüftyp = verhandeln,
Login = „ldirector“,
passwd = „ldirectorpassword“,
Datenbank = „ldirectordb“,
request = „SELECT * FROM Connectioncheck“
Scheduler = WRR
Bitte geben Sie die korrekte virtuelle IP-Adresse (192.168.0.105) und die korrekte IP-Adresse des MySQL-Clusterknotens (192.168.0.101 und 192.168.0.102) ein.
3306 ist der Standardport, wenn MySQL ausgeführt wird. Wir haben außerdem einen MySQL-Benutzer (ldirector) und ein Passwort (ldirectorpassword), eine Datenbank (ldirectordb) und
eine SQL-Abfrage angegeben. ldirectord verwendet diese Informationen, um MySQL-Clusterknoten zu testen und zu überprüfen, ob sie immer verfügbar sind. Als nächstes verwenden wir den Benutzer ldirector, um
die Datenbank ldirectordb zu erstellen.
Jetzt erstellen wir die notwendigen Startverbindungen für Heartbeat und entfernen ldirectord (da ldirectord durch Heartbeat gestartet wird):
Loadb1.test.com / Loadb2.test.com:
update-rc.d -f Heartbeat Remove
Update-RC.d Heartbeat Start 75 2 3 4 5 . stop 05 0 1 6 .
update-rc.d -f ldirectord entfernen
6.4 Datenbank ldirector erstellen
Als nächstes erstellen wir die ldirector-Datenbank auf den MySQL-Clusterknoten sql1.test.com. Diese Datenbank wird von unserem Load Balancer verwendet, um
die Verfügbarkeit von MySQL-Clusterknoten zu überprüfen.
sql1.test.com:
mysql -u root -p
GRANT ALL ON ldirectordb.* TO 'ldirector'@'%' IDENTIFIED BY 'ldirectorpassword'
;
CREATE
DATABASE ldirectordb
;
=NDBCLUSTER;
INSERT INTO Connectioncheck (1);
quit;
mysql -u root -p
GRANT ALL ON ldirectordb.* TO 'ldirector'@'%' IDENTIFIED BY 'ldirectorpassword
'
;
CREATE DATABASE ldirectordb;
quit;
6.4 Vorbereiten von MySQL-Clusterknoten für den Lastausgleich
Abschließend müssen wir die MySQL-Clusterknoten sql1.test.com und sql2.test.com so konfigurieren, dass sie die virtuelle IP-Adresse 192.168.0.105 akzeptieren.
sql1.test.com / sql2.test.com:
apt-get install iproute
Fügen Sie den folgenden Inhalt in /etc/sysctl.conf hinzu:
vi /etc/sysctl.conf
# Konfiguration der arp_ignore-Option
net.ipv4.conf.all aktivieren. arp_ignore = 1
# Wenn eine ARP-Anfrage auf eth0 empfangen wird, antworten Sie nur, wenn diese Adresse
# auf eth0 konfiguriert ist. Antworten Sie insbesondere nicht, wenn die Adresse
# auf lo konfiguriert
istnet.ipv4.conf.eth0.arp_ignore = 1
#. Das Gleiche gilt für eth1, für alle ARPing-Schnittstellen hinzufügen
#net.ipv4.conf.eth1.arp_ignore = 1
# Konfiguration der arp_announce-Option aktivieren
net.ipv4.conf.all.arp_announce = 2
# Wenn Sie eine über eth0 gesendete ARP-Anfrage stellen, verwenden Sie immer an Adresse, die
auf eth0 als Quelladresse der ARP-Anfrage konfiguriert ist. Wenn diese
# nicht festgelegt ist und Pakete für eine Adresse auf # lo gesendet werden
und eine ARP-Anfrage erforderlich ist, dann ist die Adresse auf lo wird verwendet.
# Da die Quell-IP-Adresse von ARP-Anfragen in den ARP-Cache # des Ziels eingetragen wird
, hat dies den Effekt, dass diese Adresse
# in diesem Fall als Adressen auf lo auf dem echten Server
bekannt gegeben wird.Server sollten
# nur vom Linux-Direktor angekündigt werden.
net.ipv4.conf.eth0.arp_announce = 2
# Dito für eth1, für alle ARPing-Schnittstellen hinzufügen
#net.ipv4.conf.eth1.arp_announce = 2
sysctl -p
wird hinzugefügt den folgenden Absatz zu /etc/network/interfaces:
sql1.test.com / sql2.test.com:
vi /etc/network/interfaces
auto lo:0
iface lo:0 inet static
address 192.168.0.105
netmask 255.255.255.255
pre - up sysctl -p > /dev/null
ifup lo:0
7. Starten Sie den Load Balancer und testen Sie.
Jetzt starten wir zwei Load Balancing Manager:
Loadb1.test.com / Loadb2.test.com:
/etc/init.d /ldirectord stop
/etc/init.d/heartbeat start
Wenn Sie keine Fehler sehen, müssen Sie jetzt jeden Load Balancer neu starten:
Loadb1.test.com / Loadb2.test.com:
Shutdown -r Now
Nach dem Neustart können wir prüfen, ob beide geladen werden Balancer funktionieren wie erwartet:
Loadb1.test.com / Loadb2.test.com:
IP-Adresse SH eth0
Der aktive Load Balancer sollte die virtuelle IP-Adresse (192.168.0.105) auflisten:
2: eth0: mtu 1500 qdisc pfifo_fast qlen 1000
Link/Ether 00:16:3e:45:fc:f8 brd ff:ff:ff:ff:ff:ff
inet 192.168.0.103/24 brd 192.168.0.255 Bereich global eth0
inet 192.168.0.105/24 brd
Der Lastausgleicher für
192.168.0.255 Scope Global Secondary eth0 Passiv (Hot Standby) sollte wie folgt aussehen:2: eth0: mtu 1500 qdisc pfifo_fast qlen 1000
link/ether 00:16:3e:16:c1:4e brd ff:ff:ff :ff:ff:ff
inet 192.168.0.104/24 brd 192.168.0.255 Bereich global eth0
Loadb1.test.com / Loadb2.test.com:
ldirectord ldirectord.cf Status
Ausgabe auf aktivem Load Balancer:
ldirectord für /etc/ha .d/ldirectord.cf läuft mit pid: 1603
Ausgabe auf passivem Load Balancer:
ldirectord wird für /etc/ha.d/ldirectord.cf
Loadb1.example.com / Loadb2.example.com gestoppt:
ipvsadm -L - nOutput
auf aktivem Load Balancer:
IP Virtual Server-Version 1.2.1 (Größe=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.0.105:3306 wrr
-> 192.168.0.101:3306 Route 1 0 0
-> 192.168.0.102:3306
Ausgabe an Route 1 0 0 passiver Lastenausgleich:
IP Virtual Server Version 1.2.1 (Größe = 4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
Loadb1.test.com / Loadb2.test.com:
/etc/ ha.d/resource.d/LVSSyncDaemonSwap Master-Status
Ausgabe auf aktivem Load Balancer:
Master läuft
(ipvs_syncmaster pid: 1766)
Ausgabe auf passivem Load Balancer:
Master gestoppt
(ipvs_syncbackup pid: 1440)
Wenn Ihre Tests alle normal verlaufen, können Sie jetzt darauf zugreifen die MySQL-Datenbank von anderen Servern im selben Netzwerk (192.168.0.x) mithilfe der virtuellen IP-Adresse 192.168.0.105:
mysql -h 192.168 .0.105 -u ldirector -p
(Bitte beachten Sie: Ihr MySQL-Client muss mindestens Version 4.1 sein ; ältere Versionen führen MySQL5 nicht aus. )
Sie können jetzt einen der MySQL-Clusterknoten zum Testen herunterfahren; Sie sollten weiterhin eine Verbindung zur MySQL-Datenbank herstellen können.
8 Hinweise
Beim Betrieb eines MySQL-Clusters sind folgende wichtige Dinge zu beachten:
– Alle Daten befinden sich im Speicher! Daher benötigen Sie viel Speicher auf Ihren Clusterknoten. Hier ist
die Berechnungsformel für die für jeden Knoten erforderliche Speicherkapazität:
(Datenbankgröße SizeofDatabase * Anzahl der Replikate NumberOfReplicas * 1,1 ) / Anzahl der Datenknoten NumberOfDataNodes
Wenn Sie also eine Datenbankgröße von 1 GB haben, sollten Sie jeden Knoten mit 1,1 GB ausstatten der Erinnerung!
–Der Cluster-Verwaltungsknoten wartet auf jede Verbindung auf Port 1186. Das bedeutet, dass es nicht sehr sicher ist. Sie sollten MySQL Cluster daher in einem separaten Netzwerk ausführen.