Einen Proxy für den Galera-Cluster

In diesem Artikel beschreibe ich wie man einen Proxy für den Galera-Cluster hinzufügt. Neben HAProxy habe ich auch noch den ProxySQL als tauglich befunden mich aber dann doch für den HAProxy entschieden, weil er gleich einen eingebauten Monitor mitbringt.

 

Den HAProxy installieren

Zuerst installieren wir die benötigten Software-Pakete:

apt-get install haproxy mariadb-client

Den MariaDB-Client benötigen wir später zum Testen.

 

Den HAProxy konfigurieren

Jetzt passen wir die Konfigurationsdatei /etc/haproxy/haproxy.cfg des HAProxy’s an und ergänzen folgende Einträge:

# Load Balancing for Galera Cluster
listen galera 192.168.1.10:3306
     balance roundrobin
     mode tcp
     option tcplog
     option tcpka
     option mysql-check user haproxy
     server node1 192.168.1.1:3306 check weight 1
     server node2 192.168.1.2:3306 check weight 1
     server node2 192.168.1.3:3306 check weight 1

listen stats
    bind 0.0.0.0:8080
    mode http
    stats enable
    stats uri /
    stats realm Strictly\ Private
    stats auth user:passwd

Danach wird der HAProxy neu gestartet:

service haproxy restart

Damit der HAPRoxy regelmäßig prüfen kann, ob alle Galera-Cluster Knoten noch funktionieren und antworten benötigt er einen MariaDB-User, der auf jedem Knoten anzulegen ist.

/usr/local/mysql/bin/mysql  -e "INSERT INTO mysql.user (Host,User) values ('192.168.1.10','haproxy'); FLUSH PRIVILEGES;"

Wieso muss man das auf jedem Knoten ausführen? Wie haben doch einen Cluster gebaut. Galera synchronisiert nur Tabellen vom Typ InnoDB. Die Systemtabellen von MariaDB liegen aber im Format MYISAM vor, so dass diese nicht synchronisiert werden.

Die Statistiken kann man auf dem Proxy-Knoten mit einem Browser abrufen unter der URL http://<Proxy-Knoten>:8080/. Dabei wird dann der in der Konfigurationsdatei angegeben User und das Passwort abgefragt.

 

Den HAProxy testen

Um das Ganze dann mal auszuprobieren legen wir jetzt eine Datenbank an und richten einen User ein. Dazu startet man mysql und setzt dann folgende SQL Befehle ab:

CREATE DATABASE `meine_Datenbank`;
CREATE USER 'username' IDENTIFIED BY 'passwort';
GRANT ALL privileges ON `meine_Datenbank`.* TO 'user'@'%';
FLUSH PRIVILEGES;
SHOW GRANTS FOR 'user';    

Danach kann man von jedem Rechner im heimischen Netzwerk mit dem User auf die Datenbank zugreifen.

Teile diesen Beitrag

Kommentar verfassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

:bye: 
:good: 
:negative: 
:scratch: 
:wacko: 
:yahoo: 
B-) 
mehr …
 


Diese Seite verwendet Cookies. Mit der Nutzung von tuxlog erklärst Du Dich mit der Verwendung von Cookies einverstanden. Detaillierte Informationen über die Verwendung von Cookies auf dieser Website findest Du in der Datenschutzerklärung.

Nach oben scrollen