High Availability Beispiel Konfiguration für MYSQL
Wir zeigen hier als Beispiel eine einfache Möglichkeit für die Cluster-Definition auf Basis einer MYSQL Datenbank inklusive Datenreplikation. Die Beispiel-Cluster-Systeme verfügen über je eine Netzwerkkarte. An diese Netzwerkkarte wird bei dem aktiven Knoten eine Cluster IP-Adresse, über welche der Dienst angeboten wird, gebunden. Über die Netzwerkkarte werden zusätzlichen die Daten der MYSQL Datenbank in Echtzeit repliziert und somit auf den beiden Cluster Systemen synchron gehalten.
High Availability Heartbeat Konfigurationen
Der Heartbeat wird über die Netzwerkkarten zwischen den beiden Systemen ausgetauscht. Über diesen Heartbeat informieren sich die Systeme über den aktuellen Zustand des jeweils anderen Systems. In diesem Beispiel erzeugen wir auf einer Netzwerkkarte einen Heartbeat. Die maximale Ausfallzeit beträgt 10 Sekunden. Wenn mehrere Netzwerkkarten vorhanden oder möglich, kann ein Heartbeat natürlich an mehrere Karten angebunden werden.
<heart timeout="10000"> <heartbeat> <server addr="192.168.1.2"/> <server addr="192.168.1.3"/> </heartbeat> </heart>
Cluster IP Adressen
Die Anwendungen können über virtuelle IP-Adressen sowie virtuelle Netzwerkkarten angebunden werden. Es besteht die Möglichkeit mehrere virtuelle IP-Adressen auch für unterschiedlichen Netzwerkkarten zu erzeugen. Darüber hinaus können unterschiedliche Eigenschaften an dieses IP-Adresse gebunden werden.
Virtuelle IP-Adresse vom Typ Real Interface
In diesem Fall wird auf dem aktiven (primären) System ein Cluster Interface auf Basis der Eigenschaften (MAC-Adresse) der Systemnetzwerkkarte als Alias erzeugt. Die Übernahme im Fehlerfall dauert in dieser Konfiguration wenige Sekunden. Zusätzlich wird noch der Status des angebundenen Systeminterfaces überprüft. Es ist natürlich möglich mehrere virtuelle IP Adressen zu definieren.
<vip> <interface_list> <interface check="on"> <real_interface> <virtual_addr addr="192.168.1.1" where="one_side_alias"/> </real_interface> </interface> </interface_list> </vip>
Anwendungsfehler Erkennung (Error Detection, Failover)
Um direkt Programmfehler, Programmprobleme oder auch Administrationsfehler zu bemerken, werden Anwendungsevents oder auch eine Mindesanzahl der überwachten Prozesse überwacht und geprüft. In dieser Konfiguration muss mindestens ein Prozess "mysqld" vorhanden sein. Wird die Mindesanzahl unterschritten oder ein Anwendungsexit-Code bemerkt wird die Funktion "stopstart" ausgeführt und die Anwendung neu gestoppt und neu gestartet.
<errd polltimer="10"> <proc name="mysqld" atleast="1" action="stopstart"/> </errd>
Datenreplikation (Spiegelung) für die Nutzung auf beiden Systemen
Für die Datenreplikation der MYSQL Servers sind im folgenden die Konfigurationsdateien sowie das Datenverzeichnis zur Datenreplikation definiert. Durch diese Einstellung werden die Daten synchron auf beide Systeme geschrieben. Durch den Eintrag "read-only" wird auch dem passiven Clusternode das zu replizierende Filesystem auf lesen umgestellt. Damit ist eine Manipulation auf dem zweiten Clusternode ausgeschlossen.
<rfs> <replicated dir="/var/lib/mysql/mysql" mode="read_only"/> <replicated dir="/etc/mysql" mode="read_only"/> </rfs>
Die beispielhafte aber vollständige Cluster High Availability Konfiguration für ein MYSQL ClusterL
<safe> <service mode="mirror" maxloop="1024">
<heart timeout="10000"> <heartbeat> <server addr="192.168.1.2"/> <server addr="192.168.1.3"/> </heartbeat> </heart>
<vip> <interface_list> <interface check="on"> <real_interface> <virtual_addr addr="192.168.1.1" where="one_side_alias"/> </real_interface> </interface> </interface_list> </vip>
<errd polltimer="10"> <proc name="mysqld" atleast="1" action="stopstart"/> </errd>
<rfs> <replicated dir="/var/lib/mysql/mysql" mode="read_only"/> <replicated dir="/etc/mysql" mode="read_only"/> </rfs>
</service> </safe> |