2016-07-21 11 views
0

Ich bin neu zu Networking, und ich schwimme (Ertrinken) in Semantik.RabbitMQ verbindet VM mit Host

Ich habe eine VM, die eine Java-Anwendung ausführt. Idealerweise würden Eingaben vom Host über eine RabbitMQ-Warteschlange eingespeist. Die Java-Anwendung würde dann die Ergebnisse in einer anderen RabbitMQ-Warteschlange an einem anderen Port platzieren, wo sie von der Host-Anwendung verwendet wird. Nach ein paar Recherchen scheint RabbitMQ nur im localhost-Bereich mit Zuhörern an verschiedenen Ports zu existieren, stimmt das?

Benötige ich zwei RabbitMQ-Server, die im Tandem-Modus ausgeführt werden, und dann (einer auf der VM und andere auf dem Host) jeweils denselben Port hören? Oder brauche ich nur einen RabbitMQ-Server, während beide Anwendungen auf dieselbe IP-Adresse/denselben Port zeigen?

Ich habe auch gelesen, dass Sie nicht als Gast/Gast verbinden können, es sei denn auf localhost, was ich verstehe, aber wie soll RabbitMQ zu allem außer localhost konfiguriert/erreichbar sein?

Ich habe mehrere Stunden recherchiert, aber die Dokumentation verweist nicht auf eine direkte Antwort/Anleitung. Vielleicht ist es mein Mangel an Netzwerkerfahrung. Wenn jemand diese Fragen näher ausführen oder auf Artikel/hilfreiche Anleitungen verweisen könnte, wäre ich sehr dankbar.

P.S. - Ich weiß nicht einmal, welchen Code angezeigt werden soll, um einen Kontext zu geben. Lass es mich wissen und ich werde den Code in den Post bearbeiten.

Antwort

1

RabbitMQ hört den TCP-Port 5672 auf allen Netzwerkschnittstellen ab sofort ab. Dies umfasst die "Loopback" -Schnittstelle (um schnelle Verbindungen zu sich selbst zu ermöglichen) und Schnittstellen, die für andere entfernte Hosts (einschließlich VMs) sichtbar sind.

Für Ihren Anwendungsfall benötigen Sie wahrscheinlich eine einzige RabbitMQ-Instanz für beide Richtungen. Die Anwendung auf dem Host veröffentlicht Nachrichten in einer Warteschlange, und die Java-Anwendung in der VM wird Nachrichten aus dieser Warteschlange verarbeiten und das Ergebnis in eine zweite Warteschlange verschieben. Diese zweite Warteschlange kann von der Anwendung auf dem Host belegt werden.

Für den Benutzer müssen Sie einen neuen Benutzer mit den entsprechenden Rechten erstellen. Dies ist in der access control article dokumentiert. Um den Benutzer zu erstellen, können Sie dies über die Verwaltungs-Webbenutzeroberfläche (nachdem Sie das Verwaltungs-Plugin aktiviert haben) oder über das Befehlszeilentool rabbitmqctl ausführen.

Der letzte Teil ist die Vernetzung zwischen dem Host und der VM. Es hängt wirklich von der Technologie ab, die Sie verwenden. Es funktioniert möglicherweise sofort oder Sie müssen möglicherweise konfigurieren, wie VMs mit dem Netzwerk verbunden sind. Siehe die Dokumentation Ihres Hypervisors.

+0

Vielen Dank für Ihre Antwort. Ich fand heraus, dass das viel zu kompliziert war, Dinge zu verkomplizieren. Während der Hase den lokalen Host "lebt", ist er für den Rest des Netzwerks immer noch sichtbar. Ich musste nur die Konfigurationsdatei ändern. Auch das Kaninchen-zu-Kaninchen-Setup funktionierte für diesen Anwendungsfall ebenfalls gut. Vielen Dank für Ihre Zeit und Antwort! – fhornplayer

+0

Gern geschehen! Wenn diese Antwort Sie zufriedenstellt, können Sie das bitte akzeptieren? –

+0

Sicherlich! Mein Fehler, das zu vergessen. – fhornplayer