在 OpenNebula 集群上將虛擬網路橋接到真實 LAN
我正在使用 1 個集群控制器和 3 個節點執行 Open Nebula。
我在前端控制器上註冊了節點,我可以在其中一個節點上啟動一個 Ubuntu 虛擬機。
但是,從我的網路中,我無法 ping 虛擬機。我不太確定我是否正確設置了虛擬機。
節點都有一個
br0
與eth0
. 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 來賓)。
祝你好運