Linux

在 OpenNebula 集群上將虛擬網路橋接到真實 LAN

  • November 21, 2011

我正在使用 1 個集群控制器和 3 個節點執行 Open Nebula。

我在前端控制器上註冊了節點,我可以在其中一個節點上啟動一個 Ubuntu 虛擬機。

但是,從我的網路中,我無法 ping 虛擬機。我不太確定我是否正確設置了虛擬機。

節點都有一個br0eth0. 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

onevm list但是,即使 sunstone 說虛擬機正在執行並且還聲明 vm 正在執行,我也無法訪問任何虛擬機。

知道我們使用 KVM 作為管理程序可能會有所幫助,我不太確定安裝 KVM 時自動創建的 virbr0 介面是否有問題。

我遇到了同樣的問題,這是我使用 ubuntu vmbuilder 設置的虛擬機。

查看包含完整 vm 的介紹。我確信這對你有用。

他們提供了一個 init 腳本,除其他外,它會在啟動時設置某些網路參數,因此這可能是問題的核心。他們在這裡用語境化更充分地解釋了這一點

一般上下文方法

因此,在 VM 中安裝上下文文件是一個相當簡單的問題。

如果您使用 vmbuilder 來製作您的虛擬機,您可以使用安裝後掛鉤(我相信其他建構方法也有各種安裝後掛鉤)。

創建複製文件(hostfile 到 guestfile,確保它是單個空格分隔的?)

複製.cfg

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

創建安裝後掛鉤

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

創建腳本以 chmod 到 vm guest

chvm.sh

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

最後,為 VM 編輯 vmbuilder conf 文件

你的vm.cfg

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

然後用vmbuilder建構

sudo vmbuilder kvm ubuntu -c vmbuilder.cfg

添加一個基於星雲的vnc

在您的上下文中包含類似的內容

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

然後通過 ssh 隧道連接到來賓機器網路上的電腦

ssh -L 5900:127.0.0.1:5900 yourserver.com

並在本地電腦上的 127.0.0.1 打開一個 vnc 客戶端。

想法

Nebula 不能強制 kvm/libvirt 在 hd*/sh* 上執行你的驅動器,所以你需要在它們結束的地方玩耍(並編輯 rc 文件以反映這一點)。例如,在我的 Ubuntu 設置中,qcow2 映像獲取 /dev/sda,上下文映像獲取 /dev/sr0。

我還有一個問題,kvm 或 nebula 無法猜測我的 .qcow2 圖像的格式。因此,在 DISK 中我必須包含 DRIVER=qcow2。處理器架構也會出現同樣的問題,因此在作業系統中我必須包含 ARCH=x86_64(因為我執行的是 amd64 來賓)。

祝你好運

引用自:https://serverfault.com/questions/331145