第一篇:【個人總結(jié)系列-15】搭建虛擬網(wǎng)絡(luò)環(huán)境總結(jié)-XEN-創(chuàng)建及克隆虛擬機-安裝配置OpenvSwitch-NOX
搭建虛擬網(wǎng)絡(luò)環(huán)境總結(jié)-XEN-創(chuàng)建及克隆虛擬機-安裝配置
OpenvSwitch-NOX 搭建虛擬網(wǎng)絡(luò)環(huán)境的工作內(nèi)容主要涉及到安裝xen、創(chuàng)建虛擬機、復(fù)制虛擬機、安裝ovs、配置ovs和安裝nox等這些方面。以下各節(jié)是對這些主要內(nèi)容的介紹。1.1.1 安裝xen 編寫本文檔所對應(yīng)的Xen的安裝環(huán)境是CentOS5.6。具體的安裝步驟如下: ? 安裝xen相關(guān)的軟件包:
[root@localhost ~]# yum-y install kernel-xen virt-manager virt-viewer libvirt xen ? 修改啟動順序并重啟電腦:
[root@localhost ~]# vi /boot/grub/grub.conf default=1改為default=0,使得電腦優(yōu)先以包含xen的內(nèi)核啟動(不然的話要每次啟動的時候手動選擇與xen相關(guān)的內(nèi)核來啟動)
? 檢查xen列表:
[root@localhost ~]# xm list Name ID Mem(MiB)VCPUs State Time(s)Domain-0 0 423 4 r-----65.3 ? 如果xen進程未啟動,手動執(zhí)行:
[root@localhost ~]# /etc/init.d/xend start [root@localhost ~]# /etc/init.d/xendomains start #正常情況xend啟動后將默認(rèn)啟動xendomains
1.1.2 創(chuàng)建虛擬機
如上面安裝好xen之后,打開virt-manager(在終端里輸入:virt-manager),用virt-manager新建一個CentOS5.6的虛擬機。創(chuàng)建Xen虛擬機的步驟如下圖所示:
? 在virt-manager的圖形界面中點擊右鍵,選擇新建虛擬機,為虛擬機選擇一個名稱,設(shè)置虛擬機的各項參數(shù),步驟如截圖所示:
圖2-1 創(chuàng)建虛擬機
圖2-2 為虛擬機選擇名稱
圖2-3 選擇半虛擬化
圖2-4 選擇網(wǎng)絡(luò)安裝樹
? 半虛擬化的需要網(wǎng)絡(luò)安裝,網(wǎng)絡(luò)安裝的地址是:http://202.115.44.135/centos5.6。剩下的步驟如下圖所示:
圖2-5 填寫安裝的URL
圖2-6 選擇映像文件的存放位置及大小
圖2-7 選擇虛擬網(wǎng)絡(luò)
圖2-8 設(shè)置虛擬機的內(nèi)存等信息
圖2-9 完成虛擬機的創(chuàng)建
圖2-10 安裝虛擬機
? 這樣就開始了一個虛擬機的安裝,接下去的步驟同普通安裝基本一樣。
1.1.3 快速克隆虛擬機
安裝完之后,在/var/lib/xen/images中有一個vmpc1.img文件,即虛擬機的映像文件。在/etc/xen中有一個vmpc1的配置文件。如果想再建一個虛擬機的話,可以通過克隆前面安裝的那臺虛擬機。克隆一臺虛擬機非常方便,只要復(fù)制一份那臺虛擬機的映像文件(即.img文件,但是文件必須重命名)和配置文件(需要修改部分內(nèi)容,如主機名、mac地址等)即可。
復(fù)制一臺虛擬機的步驟如下:
? 首先關(guān)閉被復(fù)制的那臺虛擬機(假如復(fù)制vmpc1)
xm shutdown vmpc1 ? 復(fù)制虛擬機映像文件和配置文件
cp /var/lib/xen/images /vmpc1.img /var/lib/xen/images /vmpc2.img cp /etc/xen/vmpc1 /etc/xen/vmpc2 ? 修改虛擬機配置文件
vi /etc/xen/vmpc2 配置文件如下所示:
--------------------name = “vmpc1”
uuid = “85386e79-9f79-e243-9b62-3c9da736ae9f” maxmem = 2048 memory = 2048 vcpus = 2
bootloader = “/usr/bin/pygrub” on_poweroff = “destroy” on_reboot = “restart” on_crash = “restart”
disk = [ “tap:aio:/opt/vm1/vm1.img,xvda,w” ]
vif = [ “mac=00:16:36:47:a2:89,bridge=virbr0,script=vif-bridge” ]--------------------修改name、uuid、mac保持唯一,通常將最后一位加1。修改disk路徑,vmpc1的配置文件中的disk路徑對應(yīng)vmpc1.img這個映像文件
? 啟動并進入虛擬機
vm create vmpc2-c ? 修改主機名
hostname vmpc2 vi /etc/sysconfig/network vi /etc/hosts ? 修改網(wǎng)卡ip和mac,使得和和xen配置對應(yīng)
vi /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 BOOTPROTO=static
BROADCAST=192.168.122.255 HWADDR=00:16:36:47:A2:80 IPADDR=192.168.122.12 NETMASK=255.255.255.0 NETWORK=192.168.122.0 ONBOOT=yes ? 重啟網(wǎng)絡(luò),完成修改 /etc/init.d/network restart
1.1.4 安裝ovs Linux的發(fā)行版本比較多,下面的安裝說明只針對于安裝有 Xen 虛擬化平臺的 CentOS 64 位操作系統(tǒng)。安裝步驟如下:
? 安裝Xen虛擬化環(huán)境,并保證Xend啟動成功,網(wǎng)絡(luò)可正常連接,如不講究
Xen 版本,可利用 CentOS 更新源已有的 Xen 虛擬化平臺,采取下面的簡單辦法:
[root@localhost ~]# yum install xen.x86_64
? 安裝完成后重啟,啟動菜單中選擇包含xen的操作系統(tǒng)選項,啟動成功之后,如不出異常,xend將正常運行于后臺,進入dom0客戶操作系統(tǒng)。通過以下命令可并判斷xend是否正常啟動,正常啟動的情況下該命令將顯示客戶操作系統(tǒng)dom列表。
? 啟動成功后安裝內(nèi)核源碼,如下
[root@localhost ~]# yum install kernel.x86_64
? 從官方網(wǎng)站http://openvswitch.org/中下載Open vSwitch源代碼包,最新版本可使用下面的鏈接:http://openvswitch.org/releases/openvswitch-1.1.0pre2.tar.gz,下載完后輸入以下命令解壓
[root@localhost ~]# tar –xzvf openvswitch-1.1.0pre2.tar.gz
? 進入解壓后目錄,輸入以下命令配置Open vSwitch工程,生成Makefile文件。
[root@localhost ~]#./configure--with-l26=/lib/modules/`uname-r`/build--with-l26:生成內(nèi)核模式的Open vSwitch時需指定的內(nèi)核源碼編譯目錄 指定Open vSwitch的安裝位置加參數(shù):--prefix=/…
如有其他問題可參考源碼根目錄下的幫助文件:INSTALL.Linux
? 編譯、鏈接、生成和安裝Open vSwitch,命令如下,make install目錄只安裝Open vSwitch除內(nèi)核模塊外的其他所有模塊,如ovs-vsctl、ovs-vswitchd、ovs-ofctl等
[root@localhost ~]# make [root@localhost ~]# make install
? 卸載原有虛擬網(wǎng)橋模塊,命令如下,如果Xend正常啟動,將自動加載linux虛擬網(wǎng)橋模塊bridge.ko。
[root@localhost ~]# rmmod bridge
? 如果無法卸載,可用―lsmod‖命令查看已加載的依賴于bridge的內(nèi)核模塊,并用“rmmod 模塊名”卸載,常見的無法卸載的情況可通過預(yù)先執(zhí)行下面兩條命令解決。
[root@localhost ~]# /etc/init.d/iptables stop [root@localhost ~]# rmmod xt_physdev
? 加載Open vSwitch內(nèi)核模塊openvswitch_mod.ko和linux虛擬網(wǎng)橋兼容模塊brcompat_mod.ko [root@localhost~]#insmod openvswitch-1.1.0pre2/datapath/linux-2.6/openvswitch_mod.ko [root@localhost ~]# insmod openvswitch-1.1.0pre2/datapath/linux-2.6/brcompat_mod.ko ? 根據(jù)ovsdb
模板
vswitch.ovsschema
創(chuàng)建
ovsdb
數(shù)據(jù)庫ovs-vswitchd.conf.db,用于存儲虛擬交換機的配置信息,只需第一次運行Open vSwitch時創(chuàng)建
[root@localhost ~]# ovsdb-tool create /usr/local/etc/ovs-vswitchd.conf.db openvswitch-1.1.0pre2/vswitchd/vswitch.ovsschema
? 啟動ovsdb數(shù)據(jù)庫服務(wù)器,Open vSwitch虛擬網(wǎng)橋模塊將通過ovsdb-server獲得虛擬交換機配置信息,―—detach‖表示以后臺方式運行,ovsdb-server其他參數(shù)請參考―ovsdb-server –help‖
[root@localhost ~]# ovsdb-server /usr/local/etc/ovs-vswitchd.conf.db--remote=punix:/usr/local/var/run/openvswitch/db.sock--remote=db:Open_vSwitch,managers--private-key=db:SSL,private_key--certificate=db:SSL,certificate--bootstrap-ca-cert=db:SSL,ca_cert--detach
? 初始化Open vSwitch控制接口,以便用ovs-vsctl管理配置虛擬交換機
[root@localhost ~]# ovs-vsctl--no-wait init ? 啟動Open vSwitch用戶態(tài)模塊,unix:后的文件為socket文件,為ovsdb-server監(jiān)聽的socket文件。
[root@localhost ~]# ovs-vswitchd unix:/usr/local/var/run/openvswitch/db.sock--detach
? 啟動linux原有虛擬網(wǎng)橋兼容模塊用戶態(tài)組件ovs-brcompatd,該模塊必須在ovsdb-server和ovs-vswitchd啟動后才能啟動。
[root@localhost ~]# ovs-brcompatd--pidfile--detach-vANY:console:EMER unix:/usr/local/var/run/openvswitch/db.sock
1.1.5 配置ovs 在安裝了xen的主機中,當(dāng)使用ifconfig命令時,除了熟悉的eth0以外還會出現(xiàn)許多平常沒有見到過的網(wǎng)絡(luò)接口,這些接口的出現(xiàn)的原因是因為xen會自動為虛擬機創(chuàng)建一些虛擬的網(wǎng)絡(luò)接口,裝有xen的主機在啟動時網(wǎng)絡(luò)的配置過程為:
1.執(zhí)行在/etc/xen/xend-config.sxp中指定的/etc/xen/scripts/network-bridge腳本
2.network-bridge腳本創(chuàng)建一個新網(wǎng)橋,名字為xenbr0 3.復(fù)制物理網(wǎng)卡接口eth0的MAC地址和IP地址
4.停止物理網(wǎng)卡接口eth0
5.創(chuàng)建一對相連的虛擬網(wǎng)卡接口,veth0和vif0.0
6.將之前復(fù)制的物理網(wǎng)卡接口的MAC,IP分配給虛擬接口veth0 7.重命名物理網(wǎng)卡接口,從eth0改名為peth0 8.重名名虛擬網(wǎng)卡接口,從veth0改名為eth0
9.將物理網(wǎng)卡接口peth0,虛擬網(wǎng)卡接口vif0.0加入到網(wǎng)橋xenbr0中
10.啟動網(wǎng)橋xenbr0,啟動其他網(wǎng)絡(luò)接口peth0,eth0,vif0.0
對于每一個新的domU,Xen會創(chuàng)建“一對相連的虛擬網(wǎng)卡”,其中一塊在新建的domU上,另一塊在dom0上。對于Linux的domU來說,其虛擬網(wǎng)卡名字是eth0,而在dom0這端的這一塊的網(wǎng)卡名字是vif
圖2-11 裝有xen的主機中網(wǎng)絡(luò)端口的狀態(tài)
數(shù)據(jù)包到達(dá)物理網(wǎng)卡之后的處理流程為:數(shù)據(jù)包到達(dá)硬件物理網(wǎng)卡接口peth0,dom0上的網(wǎng)卡驅(qū)動會進行處理。因為peth0綁定在網(wǎng)橋上,所以數(shù)據(jù)包被發(fā)送到網(wǎng)橋上。觀察ifconfig的輸出,你會發(fā)現(xiàn)peth0,xenbr0,vif0.0和vif1.0都共享一個相同的MAC地址FE:FF:FF:FF:FF:FF,該地址是以太網(wǎng)廣播地址。這表明物理網(wǎng)卡接口,dom0的loopback接口,所有g(shù)uest domain的后端接口都廣播到網(wǎng)橋接口xenbr0。當(dāng)物理網(wǎng)卡接口peth0接收到一個數(shù)據(jù)包,它會將數(shù)據(jù)包直接發(fā)送到網(wǎng)橋接口xenbr0上。然后網(wǎng)橋會分發(fā)數(shù)據(jù)包,像交換機一樣(話說交換機也是網(wǎng)橋的一種)。網(wǎng)橋會根據(jù)數(shù)據(jù)包接收者的MAC地址將其轉(zhuǎn)發(fā)到正確的網(wǎng)絡(luò)接口上。所以peth0這個接口不需要配置ip地址,只有MAC地址就夠了。然后vif接口會將數(shù)據(jù)包發(fā)送給domU上相連的接口,然后domU中返回的數(shù)據(jù)包也通過vif發(fā)送回來。dom0也是一樣的操作模式,通過vif0.0->eth0這一對相連的網(wǎng)卡。
vif0.1:表示ID為0的第二個網(wǎng)絡(luò)接口,vif6.0:表示ID為6的第一個網(wǎng)絡(luò)接口 virbr0:是虛擬系統(tǒng)和真實系統(tǒng)進行連接的接口,實現(xiàn)NAT功能 xenbr1:是虛擬系統(tǒng)和真實系統(tǒng)進行連接的接口,橋接功能
圖2-11 裝有xen的主機中網(wǎng)橋的轉(zhuǎn)發(fā)原理
以上就是在裝有虛擬機的主機上網(wǎng)橋的轉(zhuǎn)發(fā)原理,使用ovs進行基于網(wǎng)橋的轉(zhuǎn)發(fā)也是同上面描述的原理類似,只是要使用ovs自己建一個網(wǎng)橋(假設(shè)為br0),然后把物理網(wǎng)卡、虛擬網(wǎng)卡0、虛擬網(wǎng)卡1??連接在這個br0上,具體的命令如下: 添加網(wǎng)橋br0 [root@localhost ~]# ovs-vsctl add-br br0 激活網(wǎng)橋br0 [root@localhost ~]# ifconfig br0 up 配置網(wǎng)橋br0的ip地址和子網(wǎng)掩碼
[root@localhost ~]# ifconfig br0 192.168.203.100/24 將需要添加到網(wǎng)橋br0上的網(wǎng)絡(luò)接口添加到br0中
[root@localhost ~]# ovs-vsctl add-port br0 peth0 [root@localhost ~]# ovs-vsctl add-port br0 vif0.0
然后把虛擬機的網(wǎng)橋設(shè)置為br0,原來可能是xenbr0,修改虛擬機的配置文件即可,然后重啟虛擬機。1.1.6 安裝nox ? 首先是NOX的安裝,安裝的環(huán)境是Ubuntu10.04,安裝操作的過程如下:
cd /etc/apt/sources.list.d sudo wget http://openflowswitch.org/downloads/debian/nox.list sudo apt-get update sudo apt-get install nox-dependencies git clone git://noxrepo.org/nox cd nox ? 如果需要啟動gui 必須做branch這一步
git branch –a git checkout-b destiny origin/destiny./boot.sh mkdir build/ cd build/../configure make-j 5 ? 啟動控制器
./nox_core-v-i ptcp:6633 monitoring ? 有時候會因為依賴包的問題而使安裝出現(xiàn)問題,所以建議執(zhí)行以下操作
apt-get install python-qt4 python-simplejson apt-get install python-qt4-sql ? 使open vswitch連接到控制器,查看安裝是否成功
ovs-vsctl set-controller br0 tcp:172.16.1.230