我正试图用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的
我试过这样做,但错误大致相同。 (如果你参考tomee.xml文件)。 >“连接到10.12.1.201:2222被拒绝检查主机名和端口号 – TrinitasXVII
如果您直接连接到guest虚拟机,请使用真实端口;转发的端口用于连接到* host *(运行您的机器virtualboxes) –
IT WORKS!谢谢:D – TrinitasXVII