2016-04-23 60 views
4

我正试图用Virtualbox和Vagrant建立一个虚拟环境。 目标是能够从PC浏览器访问运行在虚拟机“服务器”上的应用程序,该应用程序与虚拟机“db”交互。如何使用Vagrant连接两个VM(postgreSQL和tomee)?

我设法创建了虚拟机。

第一个与Apache Tomee运行,我可以通过我的浏览器访问它。它工作正常。

第二个与Postgres运行和我可以通过我的浏览器访问它。它也可以正常工作。

当我尝试虚拟“服务器”与“DB”我得到一个HTTP 500错误(仅当我尝试与应用中的一些数据库操作)连接,特别是:

 
"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)"

我测试两台机器从PC浏览器,他们工作正常(事实上在数据库机器,我看到对象添加)。

这是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 

在文件tomee.xml呈现在Apache的tomee/CONF我指定我在测试中使用分贝连接(即正常工作了虚拟环境的)

相同的代码
<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> 

在分贝VM我修改都postgresql.conf中和的pg_hba.conf添加

的listen_addresses = '*'

在第一和

主机的所有一切0.0.0.0/0 MD5

在第二位。我不明白为什么在我的电脑上运行tomee时,我可以访问两个VM,但'server'无法与'db'通信。

这是的输出 “netstat的须藤-tulpn | grep的postgres的” 上分贝VM

TCP 0 0 0.0.0.0:5432 0.0.0.0:* LISTEN 5743/postgres的
TCP6 0 0 ::: 5432 ::: * LISTEN 5743/Postgres的

回答

1

变化localhost托管虚拟机(你必须从主机客人端口转发)的机器的IP。或者使用bridged networking并直接从客户端连接到服务器。

+0

我试过这样做,但错误大致相同。 (如果你参考tomee.xml文件)。 >“连接到10.12.1.201:2222被拒绝检查主机名和端口号 – TrinitasXVII

+0

如果您直接连接到guest虚拟机,请使用真实端口;转发的端口用于连接到* host *(运行您的机器virtualboxes) –

+0

IT WORKS!谢谢:D – TrinitasXVII