如何设置 VirtualBox VM 集群?

如何设置 VirtualBox VM 集群?

我尝试在一台主机(Windows 主机、Ubuntu 客户机)上同时运行 3 个 VirtualBox VM,以便我可以测试运行各种服务的集群。

问题是,我无法正确获取 VirtualBox VM 的网络配置。

我需要:1)所有三个访客都可以访问互联网 2)所有三个访客都可以分别访问主机,并且主机可以分别访问所有三个访客(即每个主机都有自己独特的 IP,就好像它们是完全独立的服务器一样)

我无法让它工作。我尝试在每个盒子上安装两个网络适配器,一个 NAT(用于互联网访问),另一个仅主机网络(用于与主机通信)。我让它工作了;虽然它很混乱……有时当客户机启动时,它们拒绝激活两个连接中的一个,卡在启动中的“启动作业正在运行以提升网络接口”行,然后其中一个接口无法启动。但是,当它工作时,所有三个客户机在两个接口上最终都会获得完全相同的 IP 地址。是的,我检查过了——它们确实有不同的 MAC 地址。

我该如何解决这个问题,并让三位客人始终成功设置他们的网络,并让这三位客人都有自己的 IP,同时仍确保这三位客人都可以访问互联网?

答案1

说真的,使用 Vagrant 就可以了。它可以很好地处理第二个网络适配器。这是我与 docker swarm 一起使用的 Vagrantfile 示例:

$prepare_swarm_manager_script = <<SCRIPT
<<<shell commands>>>
SCRIPT

$prepare_swarm_node_script = <<SCRIPT
<<<shell commands>>>
SCRIPT

Vagrant.configure(2) do |config|
  config.vm.define "swarm_manager" do |config|
    config.vm.box = "ubuntu/xenial64"
    config.vm.hostname = "swarm-manager"
    config.vm.network "private_network", ip: "10.0.7.11"
    config.vm.provision "shell", inline: $prepare_swarm_manager_script
  end

  config.vm.define "swarm_node1" do |config|
    config.vm.box = "ubuntu/xenial64"
    config.vm.hostname = "swarm-node1"
    config.vm.network "private_network", ip: "10.0.7.12"
    config.vm.provision "shell", inline: $prepare_swarm_node_script
  end

  config.vm.define "swarm_node2" do |config|
    config.vm.box = "ubuntu/xenial64"
    config.vm.hostname = "swarm-node2"
    config.vm.network "private_network", ip: "10.0.7.13"
    config.vm.provision "shell", inline: $prepare_swarm_node_script
  end

shell 命令以 ubuntu 用户身份执行(因此使用 sudo)。然后去vagrant up喝杯啤酒。

但这里的关键信息是,在每次安装虚拟机之前添加仅主机网络适配器,并在全局 VirtualBox 首选项中检查仅主机网络适配器设置(这是 Vagrant 为您处理的)。正确设置子网后,它们可以互相看到

相关内容