Hallo liebe Kollegen, die letzten Tage habe ich mich ein wenig um den RabbitMQ-Clusters gekümmert. Dieser war bisher lediglich durch seine eigene Erlang-Mnesia Datenbank im Hintergrund geclustert, d.h. Daten die auf rabbit01 aufliefen, standen auch auf rabbit02 zur verfügung und vice versa. Jedoch musste sich die Applikation immer einen der beiden Server (entweder rabbit01 oder rabbit02) aussuchen, um sich darauf zu verbinden. Dies stellte einen single point of failure bei allen Kunden dar. Corosync-Homepage: http://www.corosync.org/ Pacemaker-Homepage: http://clusterlabs.org/ Darum wurde der Cluster Resource Manager und der Massaging Daemon Corosync (forked heartbeat v3) auf den Maschinen installiert. Die Cluster IP-Adresse wird nun als Ressource im Cluster auf einen funktionierenden Knoten verschoben. Der Verbindungshost ist damit immer erreichbar, der SPOF eliminiert. Last schlägt nun aber immer auf dem Server mit der Cluster-IP auf. Darum läuft auf jeder Maschine ein Loadbalancer, welcher Verbingungsanfragen an die Cluster-IP(virtuellen Server) je nach Quellmaschine an den selben echten Server (real Server) weiterleitet. Der Loadbalancer IP-Virtual Server "ipvs" ist als Modul im Linux-Kernel integriert und damit auch extrem flott. "Zufällig" gibt es dafür einen Resource-Agent für Pacemaker. :) -> ocf:heartbeat:ldirectord http://www.linuxvirtualserver.org/software/ipvs.html Die beiden RabbitMQ-Knoten haben nun in etwa gleiche Leistungszahlen. Ich habe die Konfigurationsparameter der FlowControl, welche in jüngster Vergangenheit zur Abschaltung von rabbit01 geführt haben, angepasst: %Memory threshold at which the flow control is triggered. %See the memory-based flow control documentation. default: 0.4 {vm_memory_high_watermark, 0.7}, %Disk free space limit of the partition on which RabbitMQ is storing data. %When available disk space falls below this limit, flow control is triggered. %The value may be set relative to the total amount of RAM (e.g. % {mem_relative, 1.0},). %The value may also be set to an integer number of bytes. %By default free disk space must exceed 1GB. %See the memory-based flow control documentation. {disk_free_limit, 536870912}, Für rabbitmq existiert bereits ein Ressource Agent für pacemaker (ocf:rabbitmq). Rabbitmq wurde aber noch nicht als Ressource in den paceamerk/corosync-Cluster aufgenommen (für z.B. automatischen Neustart). Ich warte noch auf den HBD-Import. ^_^ Der RabbitMQ-Cluster muss nun getestet werden !!! Der Cluster ist nun als Einheit erreichbar unter: * rabbit.luan.xres.de * ampq.luan.xres.de * 172.16.16.20 Grüße Tobias -- Tobias Stein - Systemadministration - activate communication systems GmbH G.-Schumann-Str. 294 04159 Leipzig Tel.: +49 341 90 98 7 508 email: t.stein@activate.de Geschäftsführer: Markus Hartwig, Rainer Jansen Handelsregister: Amtsgericht Leipzig (HRB 21850)
participants (1)
-
Tobias Stein