Como configurar o cluster de VMs do VirtualBox?

0

Estou tentando ter 3 VMs do VirtualBox sendo todas executadas ao mesmo tempo em um host (host do Windows, convidado do Ubuntu) para que eu possa testar a execução de clusters de vários serviços.

O problema é que não consigo configurar corretamente a configuração de rede das VMs do VirtualBox.

Eu preciso: 1) Todos os três convidados podem acessar a internet 2) Todos os três convidados podem acessar o host separadamente e o host pode acessar os três convidados separadamente (ou seja, cada host tem seu próprio IP exclusivo, como se fossem servidores completamente independentes)

Eu não consigo fazer isso funcionar. Eu estou tentando com dois adaptadores de rede em cada caixa, um NAT (para o acesso à Internet) e outra rede somente host (para comunicação com o host). Eu meio que consegui isso funcionar; embora seja um acerto ou uma bagunça .. às vezes quando os convidados iniciam, eles se recusam a ativar uma das duas conexões, ficando presos na linha "A start job está rodando para Raise network interfaces" na inicialização, então uma das interfaces não não comece. Quando isso funciona, no entanto, todos os três convidados acabam com o mesmo endereço IP em ambas as interfaces. E sim, eu verifiquei - eles têm endereços MAC diferentes.

Como posso consertar isso e ter os três convidados consistentemente bem-sucedidos na configuração de suas redes e ter todos os três com seus próprios IPs, enquanto ainda garanto que todos os três convidados possam acessar a Internet?

    
por user1072692 14.08.2017 / 20:21

1 resposta

0

Sério, use o Vagrant para isso. Ele lida com o segundo adaptador de rede muito bem. Aqui está um exemplo Vagrantfile eu uso com o enxame docker:

$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

Os comandos shell são executados como o usuário do Ubuntu (então use o sudo). Então vá em vagrant up e pegue uma cerveja.

Mas as principais informações aqui são que você adiciona o adaptador de rede somente host antes de cada instalação de VM e nas preferências globais de virtualbox verificam as configurações do adaptador de rede somente de host (é o que a Vagrant manipula para você). Quando você configura a sub-rede corretamente, eles podem ver uns aos outros

    
por 14.08.2017 / 22:29

Tags