August 2013 Archive

Galera ist imho die derzeit beste Möglichkeit MySQL HA zu betreiben. Während Galera sich um die synchrone Replikation der Daten kümmert, muss der Admin sich noch Gedanken machen, wie der Zugriff auf den Cluster hochverfügbar gestaltet wird.

Die Klassichen Lösungen sind eine VIP, welche immer an einen laufenden Clusternode gebunden ist mit Pacemaker verwaltet, oder einen Proxy vor den Cluster zu setzen. Am meisten verwendet wird der Proxyansatz. Hier bietet sich HAProxy an. Codership - die Entwickler von Galera - liefern mit dem GaleraLoadBalancer (glb) einen eigenen Proxy mit. Oli hat schon über den glb berichtet. Das will ich hier nicht wiederholen. Glb - welches hier heruntergeladen werden sollte - ist nicht nur ein (stand alone) Proxy. Im selben Paket ist auch libglb enthalten.

Was ist libglb?

Libglb ist glb als library und es ist erschreckend simpel. Es greift die connect() Calls von libc auf und leitet sie - wenn dafür konfiguriert - um. Sprich es wird wirklich nur der connect abgefangen.

$ LD_PRELOAD=./src/.libs/libglb.so GLB_OPTIONS="--random 99.99.99.99:3306 10.0.3.8 10.0.3.9" mysql -u aha -h 99.99.99.99

Das war es schon. Alle Aufrufe auf die Adresse 99.99.99.99 und Port 3306 werden zufällig an 10.0.3.8 und 10.0.3.9 verteilt. Ich mag, dass die Adresse, welche abgegriffen wird, gar nicht existieren muss. Sorgt für ein einfacheres Clusterdesign. Anstatt mysql kann auch jede andere Applikation z.B. Apache genommen werden. So wird jede Applikation proxyfiziert \o/

P.S. Die Optionen für GLB_OPTIONS sind die gleichen wie für glb. Nur offensichtlich unpassende wie z.B. threads oder daemon sollte man unterlassen:) LD_PRELOAD zeigt auf auf die shared Library. Wir wollen ja, dass libglb als erstes den connect() abgreifen kann. Alle Adressen für die libglb keine Konfiguration hat, werden durchgereicht.

Viel Spaß

Erkan :)