Seite wählen

Fehler, die es nicht gibt….

von | Mrz 28, 2012 | Linux, Web Services, MySQL, Betriebssysteme

Vergangene Woche ereignete sich ein ganz besonderes Fehlverhalten eines MySQL-Master-Master-Clusters. Das Setup besteht aus zwei MySQL-Servern, die über eine sogenannte Master-Master Konfiguration replizieren. Allerdings werden nicht beide Nodes aktiv verwendet, sondern jeweils nur der zur Zeit aktive. Das ganze ist relativ trivial realisiert und zwar über eine IP-Adresse, die mittels Heartbeat auf einem der beiden Server als Ressource genutzt wird und bei einem Ausfall auf den anderen Node schwenkt. Die Gründe für ein solches Setup sind die eingesetzten nicht replikationssicheren Anwendungen, welche für Inkonsistenzen sorgen würden, sobald sie auf beide Server zugreifen würden und zum zweiten natürlich die Hochverfügbarkeit im Fehlerfall.
Soviel zum Setup, passiert ist nun folgendes: Die Heartbeat IP-Adresse wurde von Server1 auf Server2 und wieder zurück geschwenkt. Anschließend kam es in der Datenbankreplikation zu Fehlern(„1062 Duplicate Key Entry“ und „1032 Key not found“). Nach dem wir die fehlgeschlagenen Statements überprüft und auch in den Bin- und Relay-Logs nachgesehen haben, stellte sich heraus, dass auf beiden Servern Datensätze eingetragen bzw. manipuliert wurden. Wie kann das sein?
Die IP-Adresse war, nach einer Kontrolle mit „ip a“, wieder auf Server Server1 gebunden und aktiv. Mit „netstat“ waren allerdings auf Server2 mehrere MySQL Verbindungen zu sehen. Ist die IP doppelt vergeben? Nein. Mit „ip a“ auf dem zweiten Server gab es keine Spur der Heartbeat-IP. Was jetzt? Was passiert hier?
Es war Zeit für „tcpdump“. Mit „tcpdump port 1234“ auf Server2 und einem „telnet server2 1234“ von einem der Webserver wurde klar, Server2 nimmt Verbindungen für diese IP entgegen. Was kommt jetzt? Klar, vermutlich sind die lokalen ARP-Einträge krumm. In der Tat, die ARP-Tabelle auf einem der Webserver enthält die MAC-Adresse von Server2 für die entsprechende Heartbeat-IP, die ja eigentlich auf Server1 laufen sollte. Ok, das macht soweit Sinn. Der Ressource-Agent für die Heartbeat-IP Adresse gibt zwar mittels Gratuitous ARP seine neue MAC-Adresse via Broadcast bekannt, aber vielleicht hat es ja diese Webserver nicht erreicht. Die Frage jetzt lautet eigentlich: Warum nimmt Server2 diese IP-Verbindungen überhaupt für die offensichtlich nicht konfigurierte IP-Adresse Verbindungen entgegen. Nochmal „ip a“ kontrolliert, ob die IP nicht doch konfiguriert ist. Nein. Mit „tcpdump -i any -n arp“ auf Server2 kontrolliert, ob Server2 auf ARP Requests für diese IP-Adresse antwortet. Ja, da ist der Reply!
Mit einem gekonnten Blick in den Kernel-Source-Code ../net/ipv4/arp.c wird man fündig. Auf ARP-Requests wird geantwortet wenn es einen Lokalen Routing Table Eintrag gibt. („inet_addr_type(net, tip) == RTN_LOCAL &&“). Die Ausgabe der lokalen Routing-Table „ip route show table local“ beantwortet dann letztendlich auch die Frage, warum Server2 auf Pakete mit der vermeintlich nicht konfigurierten IP antwortet bzw. deren Verbindung akzeptiert.
Nach einem erneuten Schwenk auf Server2 und wieder zurück, verschwand auch dieser Eintrag und alles funktionierte wieder wie erwartet.

Sebastian Saemann
Sebastian Saemann
CEO Managed Services

Sebastian kam von einem großen deutschen Hostingprovider zu NETWAYS, weil ihm dort zu langweilig war. Bei uns kann er sich nun besser verwirklichen, denn er leitet das Managed Services Team. Wenn er nicht gerade Cloud-Komponenten patched, versucht er mit seinem Motorrad einen neuen Rundenrekord aufzustellen.

0 Kommentare

Trackbacks/Pingbacks

  1. Weekly Snap: Puppet 2.5, Python Debugger, OSDC Partners & Icinga/Nagios Training › NETWAYS Blog - [...] then encountered a strange MySQL master-master cluster error while Eric explained how to use the Python Debugger and Bernd…

Einen Kommentar abschicken

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

Mehr Beiträge zum Thema Linux | Web Services | MySQL | Betriebssysteme

CfgMgmtCamp 2024: Unser Rückblick

Vergangene Woche fuhr ein Teil unseres Teams bei NWS bis nach Ghent in Belgien, um am ConfigManagementCamp 2024 teilzunehmen. Hierbei handelt es sich um eine kostenlose Konferenz, direkt im Anschluss an die FOSDEM, was Jahr für Jahr für ein großes Publikum aus Fans...

Effektive Zugriffskontrolle für GitLab Pages

Grundlagen von GitLab Pages GitLab Pages sind eine facettenreiche Funktion, die es ermöglicht, statische Webseiten direkt aus einem GitLab-Repository heraus zu hosten. Diese Funktionalität eröffnet eine breite Palette von Anwendungsmöglichkeiten, von der Erstellung...