2016-04-23 11 views
4

Ich versuche, eine virtuelle Umgebung mit Virtualbox und Vagrant zu erstellen. Ziel ist es, vom PC-Browser auf eine App zugreifen zu können, die auf dem virtuellen Computer 'server' läuft und mit der virtuellen Maschine 'db' interagiert.Wie verbindet man zwei VM (postgreSQL und tomee) mit Vagrant?

Ich schaffte es, die virtuellen Maschinen zu erstellen.

Der erste ist mit Apache Tomee läuft und ich kann es über meinen Browser zugreifen. Es funktioniert korrekt.

Die zweite ist mit Postgres läuft und ich kann es über meinen Browser zugreifen. Es funktioniert auch richtig.

Wenn ich versuche, VM ‚Server‘ mit ‚db‘ Ich erhalte einen http 500-Fehler zu verbinden (nur, wenn ich mit der App einig db Betrieb versuchen), insbesondere:

 
"Connection to localhost:2222 refused. Check that the hostname and port
 are correct and that the postmaster is accepting TCP/IP connections.
 javax.faces.webapp.FacesServlet.service(FacesServlet.java:229)"

testete ich die zwei Maschinen von PC-Browser und sie funktionieren richtig (in der Tat in db-Maschine sehe ich Objekte hinzugefügt).

Dies ist Vagrantfile:

config.vm.define "server" do |node| 
    node.vm.hostname = "server"  
    node.vm.network "private_network", ip: "10.12.1.101",  virtualbox__intnet: true 

    [...] 

    node.vm.network "forwarded_port", guest: 22, host: 2211, id: 'ssh', auto_correct: true 
    node.vm.network "forwarded_port", guest: 8080, host: 2212 

    node.ssh.forward_agent = true 

[...] 
end 

config.vm.define "client" do |node| 
    node.vm.hostname = "client"  
    node.vm.network "private_network", ip: "10.12.1.201", virtualbox__intnet: true 

    [...] 

    node.vm.network "forwarded_port", guest: 22, host: 2221, id: 'ssh', auto_correct: true 
    node.vm.network "forwarded_port", guest: 5432, host: 2222 

end 

In-Datei in Apache-tomee/conf tomee.xml präsentiere ich den gleichen Code für DB-Verbindung I in Tests verwenden angegeben

(die richtig aus virtueller Umgebung arbeitet)
<tomee> 
    <Resource id="PostgreSQL Database" type="DataSource"> 
      JdbcDriver org.postgresql.Driver 
     JdbcUrl jdbc:postgresql://localhost:2222/music 
     UserName  postgres 
     Password  postgres 
     JtaManaged  true 
     DefaultAutoCommit false 
    </Resource> 
</tomee> 

zu db VM modifiziert i sowohl postgresql.conf und pg_hba.conf Zugabe

listen_addresses = '*'

in der ersten und der

Host alle alle 0.0.0.0/0 md5

in der zweiten. Ich verstehe nicht, warum, wenn Tomee auf meinem PC läuft, ich auf beide VM zugreifen kann, aber "Server" kann nicht mit "Db" kommunizieren.

Dies ist die Ausgabe von "sudo netstat -tulpn | grep Postgres" zu db VM

tcp 0 0 0.0.0.0:5432 0.0.0.0:* LISTEN 5743/Postgres
tcp6 0 0 ::: 5432 ::: * LISTEN 5743/postgres

Antwort

1

ändern localhost auf die IP der Maschine die VMs Hosting (Sie Port-Forwarding für die Gäste haben vom Host). Oder verwenden Sie bridged networking und verbinden Sie sich direkt vom Client zum Server.

+0

Ich habe versucht, es zu tun, aber der Fehler ist es mehr oder weniger das gleiche. (wenn Sie sich auf die Datei tomee.xml beziehen). > "Verbindung zum 10.12.1.201:2222 abgelehnt. Überprüfen Sie, ob der Hostname und Port – TrinitasXVII

+0

Wenn Sie direkt mit dem Gast verbinden, verwenden Sie den echten Port; der weitergeleitete Port ist für die Verbindung mit dem * Host * (der Computer, auf dem virtualboxes) –

+0

ES FUNKTIONIERT! Danke: D – TrinitasXVII