Vagrant 设置多个虚拟机,这些虚拟机和其他物理主机都可以相互通信

Vagrant 设置多个虚拟机,这些虚拟机和其他物理主机都可以相互通信,vagrant,virtualbox,Vagrant,Virtualbox,我正在尝试按如下方式设置服务器环境: 物理主机:(192.168.0.106) 物理笔记本电脑:(192.168.0.130) 在主机上,我尝试使用vagrant设置2个虚拟机 虚拟机1(VM_IP_1)。流浪汉被设置为端口转发5555:8080。这台机器将在端口8080上运行某种Web服务器 虚拟机2(VM_IP_2) 我正在努力实现以下目标: 从物理主机,我希望能够打开一个web浏览器,导航到VM_IP_1:5555,并连接到web服务器,显示一些网页 从笔记本电脑,我希望能够打开

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

  • 物理主机:(192.168.0.106)
  • 物理笔记本电脑:(192.168.0.130)
在主机上,我尝试使用vagrant设置2个虚拟机

  • 虚拟机1(VM_IP_1)。流浪汉被设置为端口转发5555:8080。这台机器将在端口8080上运行某种Web服务器
  • 虚拟机2(VM_IP_2)

我正在努力实现以下目标:

  • 从物理主机,我希望能够打开一个web浏览器,导航到VM_IP_1:5555,并连接到web服务器,显示一些网页
  • 从笔记本电脑,我希望能够打开一个web浏览器,导航到VM_IP_1:5555,并连接到web服务器,显示一些网页(与1相同)
  • 从Virtual Machine 2,我希望能够打开web浏览器,导航到VM_IP_1:5555,并连接到web服务器,显示一些网页(与1相同)
  • 这可能吗?在过去的两天里,我一直在修修补补,试图将其自动化,但运气不佳

    基本上,我想模拟一个由web服务器、负载平衡器、数据库等组成的非平凡的网络体系结构。我想能够像测试一台功能强大的服务器一样测试一个网络(即它将运行4个虚拟机)而且还具有vagrant automation的灵活性和可重用性,能够部署到生产环境中(2台功能强大的服务器,每个服务器运行2个虚拟机,总共4台)

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

    这是我一直在玩的流浪汉档案。尝试使用私有网络,但我认为这不对。只有主机,但我认为这是不对的。我在想,也许我需要从VM 2进行某种反向端口转发。但这听起来不对

    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'
    

    编辑:正如我发现的那样,当使用
    “公共网络”时,
    转发的端口
    似乎非常无用。我不确定我是否100%理解为什么,但如果我从端口5555更改为8080,我可以按照上面所述做任何事情。我通常使用
    专用网络来实现这一点,我不确定你为什么说得对

    这是一个3个VM设置的快速示例,其中包含一个负载平衡器和2个应用服务器(运行节点),因此您可以了解这一点

    专用网络只是一个比网桥网络(即一个流浪的公共网络)更安全的网络


    不管怎么说,使用静态IP是你的选择,我很高兴你认为在使用静态IP时,转发端口是不必要的(我一直是这样,而且更多)

    我和以前一样面临着同样的问题-我太专注于转发端口了,而这是不必要的。使用
    private_network
    ,我无法使用我的物理笔记本访问
    VM1
    ,这是预期的。据我所知,如果您的虚拟机只在运行它们的主机上相互通信,那么使用
    专用\u网络
    是有意义的。如果VM1想要与VM3(在另一个物理主机上)通信,则需要使用公共网络。至少这是我的理解-这是使用
    专用\u网络
    的限制是正确的,
    虚拟箱中的公共\u网络
    是一个桥接连接,因此您可以从同一网络中的另一个主机进行连接。