多台机器 vagrant 文件作为主动-被动集群

多台机器 vagrant 文件作为主动-被动集群

我已经配置了一个多机 Vagrant 文件,其中两台虚拟机充当迷你故障转移主动-被动集群。

由于正在运行的服务相同且在同一个端口上运行,Vagrant 不允许我在主机上两次转发同一个端口,因此我无法访问它们,Vagrant 也无法成功运行第二个 VM。

我尝试通过将虚拟机放在我的真实网络上来绕过端口转发public_network(这有点像--net=host在 docker 中?),但这并不能解决问题。

答案1

正确的做法是:

  • 在物理网络上设置虚拟机并为其提供静态 IP,然后设置网络掩码以及:

    config.vm.define "vm1" do |vm1|
        vm1.vm.hostname = "vm1"
        vm1.vm.network "public_network", ip: "192.168.x.y", bridge: "wlan0", netmask: "255.255.255.0"
    end
    
    config.vm.define "vm2" do |vm2|
        vm2.vm.hostname = "vm2"
        vm2.vm.network "public_network", ip: "192.168.x.y", bridge: "wlan0", netmask: "255.255.255.0"
    end
    

这样,虚拟机就作为物理服务器出现在我的网络上,不需要端口转发(就像在带有--net=host参数的docker中一样)。

起初,我的服务只能从运行 Vagrant 的主机访问,直到我发现我需要提供网络掩码选项也是如此,然后,接下来vagrant reload我本地网络中的所有其他设备现在也可以访问这些服务了。

我已经通过这个解决方案线

我认为官方 Vagrant 文档应该更新以包含该选项,因为我最初在那里找不到它,而且它很重要。

相关内容