在OpenNebula集群上将虚拟networking连接到真实的LAN

我使用1个集群控制器和3个节点运行开放星

我在前端控制器注册了节点,我可以在其中一个节点上启动一个Ubuntu虚拟机。

但是,从我的networking,我无法ping虚拟机。 我不太确定是否已正确设置虚拟机。

节点都有一个与eth0桥接的br0接口。 IP地址在192.168.1.x范围内。

我用于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 

但是,即使Sunstone说虚拟机正在运行,而onevm list也指出虚拟机正在运行,我无法访问任何虚拟机。

知道我们使用KVM作为pipe理程序可能会有帮助,而且我不太确定安装KVM时自动创build的virbr0接口是否会成为问题。

我遇到了同样的问题,这是我使用Ubuntu vmbuilder安装的虚拟机。

看看这个介绍,包括一个完整的虚拟机 。 我确定这应该适合你。

他们提供了一个初始化脚本,其中包括在启动时设置特定的networking参数,所以这可能是问题的核心。 他们在这里更充分地解释这一点 。

一般上下文方法

所以事实certificate,在VM中安装contextualization文件是一个相当简单的问题。

如果你使用vmbuilder来创build你的虚拟机,你可以使用post安装钩子(我确信其他的构build方法也有不同的安装后挂钩)。

创build副本文件(hostfile到guestfile,确保它是单个空格分隔?)

copy.cfg

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

创build后安装钩子

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 

创build脚本来chmod vm guest

chvm.sh

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

最后,编辑虚拟机的vmbuilder conf文件

yourvm.cfg

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

然后用vmbuilder构build

 sudo vmbuilder kvm ubuntu -c vmbuilder.cfg 

添加一个基于星云的VNC

在你的上下文中包含这样的内容

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

然后SSH隧道到客机networking上的电脑

 ssh -L 5900:127.0.0.1:5900 yourserver.com 

在本地计算机上打开一个127.0.0.1的vnc客户端。

思考

星云不能强制kvm / libvirt在hd * / sh *上运行你的驱动器,所以你需要在它们结束的地方玩游戏(编辑rc文件来反映这个)。 例如,我的Ubuntu设置qcow2图像获取/ dev / sda和上下文图像获取/ dev / sr0。

我也有一个问题,无论是kvm或星云无法猜测我的.qcow2图像的格式。 因此,在DISK中,我必须包含DRIVER = qcow2。 同样的问题发生在处理器架构上,因此在操作系统中,我不得不包含ARCH = x86_64(因为我运行的是amd64 guest)。

祝你好运

当你第一次使用OpenNebula进行设置时,基于VNC的控制台是一个救星。 我强烈build议您在尝试诊断任何其他事情之前先进行设置,因为即使networkingconfiguration中断,您也可以查看虚拟机状态。 认真 – 不要过关,不要收200美元 – 去获得noVNC组件的工作,然后回到你的其他OpenNebula安装工作。

至于你的实际问题 – 这个问题几乎无疑是你正在使用一个股票的操作系统映像,没有任何networking上下文的脚本。 OpenNebula在devise上并不实际pipe理IP地址,即使它维护了一个IP地址池并“租赁”出来。 实际上,将MAC地址分配给具有在MAC地址的最后4个字节中编码的所需IP地址的虚拟以太网接口,由操作系统来识别并正确分配IP。

OpenNebula有一些关于语境化的文档 ,但实际上并不是那么好。 我发现只要读取示例vmcontext.sh脚本的源代码并通过在启动过程中的适当位置启动vmcontext来设置我的虚拟机来使用该机制更为简单。