2016-03-25 5 views
0

Wir haben ein paar krustige AWS-Hosts, die eine RabbitMQ-Implementierung in einem Cluster ausführen. Wir müssen die Hardware aufrüsten und haben deshalb ein Chef-Kochbuch entwickelt, um Ersatzserver zu erstellen.Clone RabbitMQ Admin-Benutzer usw. auf Ersatzserver

Eine Sache, die wir lieber nicht von Hand neu ist den Admin-Benutzer, die Warteschlangen usw.

Was ist die beste Methode, das Zeug aus dem alten Rechner zu den neuen zu bekommen? Ich glaube, es ist alles, was im Verzeichnis /var/lib/rabbitmq/mnesia lebt.

Ist es ratsam, die Dateien von einem Host auf einen anderen zu kopieren?

Gibt es eine programmatische Möglichkeit, dies zu tun?

Kann es in unserem Chefkochbuch kodiert werden?

Antwort

0

Wenn Sie neue rabbitmq-Knoten auf Ihrer neuen Hardware erstellen, erhalten Sie alle Benutzer in diesem neuen Knoten. Dies ist einfach zu versuchen:

  1. Lauf Docker Behälter mit dem Bild von rabbitmq (mit Management-Plugin) und erstellen Sie einen Benutzer
  2. Lauf ein weiterer Container und fügen Sie diesen Knoten zu dem Cluster des ersten
  3. töten rabbitmq auf dem ersten oder löschen der Behälter docker und Sie werden sehen, dass Sie immer noch die neu erstellten Benutzer auf dem zweiten (aber jetzt Master) Knoten

ich schrieb docker, da es auf diese Weise schneller möglich ist, einen Cluster zu erstellen, aber wenn Sie bereits einen Cluster haben, können Sie ihn zum Testen verwenden, wenn Sie möchten.

Für die Warteschlangen und den Austausch, ich will nicht fast alles, was in der rabbitmq doc-Seite für die high availability gefunden zitieren, aber ich werde einfach sagen, dass Sie die Aufmerksamkeit auf den folgende zahlen:

  • exklusive Warteschlangen, weil sie einmal Verbindung der Kunde gegangen ist weg
  • Warteschlange Spiegelung (wenn Sie festgelegt haben, wenn es nicht klug wäre, es zu berücksichtigen, wenn nicht sogar notwendig)

ich das tun würde, Migration nach und nach, warten auf t Er steht Schlange, um geleert zu werden und dann die Knoten auf der alten Hardware zu töten. Es ist vielleicht in einer Big-Bang-Mode machbar, scheint aber riskanter. Wenn Sie ein laufendes System haben, richten Sie die Warteschlangenspiegelung ein und versuchen Sie, den geeigneten Moment für die manuelle Synchronisierung zu finden - aber Vorsicht, dies hat einen großen Einfluss auf die Broker-Leistung.

Zusätzlich gibt es diese shovel plugin (ich habe darauf hinweisen, dass ich es nicht benutzt haben oder sogar erkunden es), aber das kann eine andere Art und Weise sein, da zu gehen (unter Angabe der Link bilden):

Im Wesentlichen Eine Schaufel ist eine einfache Pumpe.Jede Schaufel:

verbindet sich mit dem Source-Broker und dem Ziel-Broker, verbraucht Nachrichten aus der Warteschlange, erneut veröffentlicht jede Nachricht an das Ziel Broker (unter Verwendung standardmäßig der ursprüngliche Wechsel Namen und routing_key).