Ligando Rede Virtual em LAN Real em um Cluster OpenNebula

1

Estou executando o Open Nebula com 1 Cluster Controller e 3 nós.

Eu registrei os nós no controlador front-end e posso iniciar uma máquina virtual Ubuntu em um dos nós.

No entanto, na minha rede, não consigo executar ping na máquina virtual. Não tenho certeza se configurei a máquina virtual corretamente.

Os nós todos têm um br0 interfaces que é colmatado com eth0 . O endereço IP está no intervalo 192.168.1.x.

O arquivo de modelo que usei para a vmnet é:

NAME = "VM LAN"
TYPE = RANGED

BRIDGE = br0 # Replace br0 with the bridge interface from the cluster nodes

NETWORK_ADDRESS = 192.168.1.128 # Replace with corresponding IP address
NETWORK_SIZE    = 126
NETMASK         = 255.255.255.0
GATEWAY         = 192.168.1.1
NS              = 192.168.1.1

No entanto, não consigo acessar nenhuma das máquinas virtuais, embora sunstone diga que a máquina virtual está em execução e onevm list também declara que a VM está em execução.

Pode ser útil saber que estamos usando o KVM como um hipervisor e não tenho certeza se a interface virbr0 que foi criada automaticamente ao instalar o KVM pode ser um problema.

    
por user101012 15.11.2011 / 16:51

2 respostas

0

Eu encontrei o mesmo problema e foi a VM que eu configurei usando o vmbuilder do Ubuntu.

Confira esta introdução que inclui uma versão completa . Estou certo de que isso deve funcionar para você.

Eles fornecem um script de inicialização, entre outras coisas, que configura certos parâmetros de rede na inicialização, então é provável que isso esteja no centro do problema. Eles explicam mais completamente isso aqui com a contextualização .

Método de Contexto Geral

Por isso, instalar os arquivos de contextualização na VM é um problema bastante simples.

Se você estiver usando o vmbuilder para fazer sua VM, você pode usar um gancho pós-instalação (e eu tenho certeza que outros métodos de construção também têm vários ganchos pós-instalação).

Crie o arquivo de cópia (hostfile para guestfile, certifique-se de que ele seja separado por um único espaço?)

copy.cfg

<path>/rc.context /etc/init.d/vmcontext
<path>/postinstall.sh /tmp/postinstall.sh

Crie o gancho pós-instalação

postinstall.sh

#!/bin/bash
# create mount point for context image
mkdir /mnt/context
# setup vmcontext at runlevel 2 service level 1
ln -s /etc/init.d/vmcontext /etc/rc2.d/S01vmcontext

Crie um script para chmod para vm guest

chvm.sh

#!/bin/bash
# vmbuilder passes vmguest root as $1
chroot $1 /tmp/postinstall.sh

Finalmente, edite seu arquivo conf vmbuilder para a VM

yourvm.cfg

...
copy = <full_path>/copy.cfg
execscript = <full_path>/chvm.sh
...

Em seguida, construa com o vmbuilder

sudo vmbuilder kvm ubuntu -c vmbuilder.cfg

Adicione um vnc baseado em nebulosa

Inclua algo assim em seu contexto

GRAPHICS = [
  LISTEN = 0.0.0.0,
  PORT   = 5900,
  TYPE   = vnc ]

Em seguida, o túnel ssh para um computador que esteja na rede de máquinas convidadas

ssh -L 5900:127.0.0.1:5900 yourserver.com

E abra um cliente vnc em 127.0.0.1 no seu computador local.

Pensamentos

O Nebula não pode forçar o kvm / libvirt a rodar suas unidades em hd * / sh *, então você precisará brincar com onde elas vão parar (e editar o arquivo rc para refletir isso). Por exemplo. com minha configuração do Ubuntu, a imagem qcow2 recebe / dev / sda e a imagem de contexto recebe / dev / sr0.

Também tive um problema em que o kvm ou a nebulosa não conseguiam adivinhar o formato da minha imagem .qcow2. Por isso, no DISK eu tive que incluir DRIVER = qcow2. Esse mesmo problema ocorre para a arquitetura do processador, portanto, no sistema operacional, precisei incluir ARCH = x86_64 (desde que eu estava executando um convidado amd64).

Boa sorte

    
por 18.11.2011 / 04:21
1

Quando você está começando a configurar com o OpenNebula, o console baseado em VNC é um salva-vidas. Eu recomendo vivamente a configuração antes de tentar diagnosticar qualquer outra coisa, porque é simplesmente tão útil ter a capacidade de olhar para o estado da sua VM, mesmo quando sua configuração de rede está quebrada. Sério - não passe, não colete $ 200 - vá para o componente noVNC e volte para o outro trabalho de configuração do OpenNebula.

Quanto à sua pergunta real - o problema é quase indubitavelmente que você está usando uma imagem do sistema operacional de ações sem nenhum script de contextualização de rede. O OpenNebula, por padrão, na verdade não gerencia endereços IP, embora mantenha um conjunto deles e os "alugue". O que ele realmente está fazendo é atribuir um endereço MAC à interface ethernet virtual que tenha o endereço IP desejado codificado nos últimos 4 bytes do endereço MAC, e cabe ao SO reconhecer isso e atribuir um IP apropriadamente.

O OpenNebula tem alguma documentação sobre a contextualização , mas honestamente não é tão bom assim. Eu achei que era mais fácil apenas ler a fonte para o exemplo vmcontext script .sh e configurar minhas VMs para usar esse mecanismo executando vmcontext na inicialização no ponto apropriado no processo de inicialização.

    
por 18.11.2011 / 08:39