设置多个虚拟机,它们可以相互通信,也可以与其他物理主机通信

Setting up multiple virtual machines, that can all talk to each other, as well as other physical hosts

我正在尝试如下设置服务器环境:

在主机上,我正在尝试使用 vagrant 设置 2 个虚拟机


我正在努力完成以下任务:

  1. 我希望能够从物理主机打开网络浏览器,导航到 VM_IP_1:5555,然后连接到网络服务器,显示一些网页
  2. 我希望能够从笔记本电脑打开网络浏览器,导航到 VM_IP_1:5555,然后连接到网络服务器,显示一些网页(与 1 相同)
  3. 从虚拟机 2,我希望能够打开网络浏览器,导航到 VM_IP_1:5555,然后连接到网络服务器,显示一些网页(与 1 相同)。

这可能吗?我花了过去 2 天时间进行修补,尝试使其自动化,但没有成功。

基本上,我想模拟一个由 Web 服务器、负载平衡器、数据库等组成的重要网络架构。我希望能够像我的单个强大服务器模拟网络一样进行测试(即它将 运行 4 个虚拟机)但也具有我的流浪自动化的灵活性和可重用性,能够部署到生产环境中(2 个强大的服务器,每个 运行 宁 2 个虚拟机,总共 4 个)

每个人都应该能够与每个人通信(假设我正确转发了端口 - 路由表)

这是我一直在玩的 VagrantFiles。尝试使用 private_network 但我认为那不对。有 Host Only,但我也不认为那是对的我在想也许我需要从 VM 2 进行某种反向 port_forwarding。但这听起来不对。

VagrantFile VM 1
   config.vm.network 'public_network', ip: '192.168.0.140'
   config.vm.network 'forwarded_port', guest: 8080, host: 5555

VagrantFile VM 2
   config.vm.network 'public_network', ip: '192.168.0.150'

编辑:正如我发现的那样,似乎 forwarded_port 在使用 'public_network' 时几乎毫无用处。我不确定我是否 100% 理解为什么,但是如果我从端口 5555 更改为 8080

,我可以按照上面概述的方式执行所有操作

我通常与 private network 一起工作来实现这一点,我不确定你为什么这么说。

This 是一个带有负载均衡器和 2 个应用程序服务器(运行 节点)的 3 VM 设置的快速示例,因此您可以理解。

专用网络只是一个 virtualbox internal network 比桥接网络(即 vagrant public 网络)更安全的网络

无论如何使用静态 IP 都是您的选择,我很高兴您认为使用静态 IP 时不需要转发端口(我已经 too 等等)