第一篇:【個(gè)人總結(jié)系列-15】搭建虛擬網(wǎng)絡(luò)環(huán)境總結(jié)-XEN-創(chuàng)建及克隆虛擬機(jī)-安裝配置OpenvSwitch-NOX
搭建虛擬網(wǎng)絡(luò)環(huán)境總結(jié)-XEN-創(chuàng)建及克隆虛擬機(jī)-安裝配置
OpenvSwitch-NOX 搭建虛擬網(wǎng)絡(luò)環(huán)境的工作內(nèi)容主要涉及到安裝xen、創(chuàng)建虛擬機(jī)、復(fù)制虛擬機(jī)、安裝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 ? 修改啟動(dòng)順序并重啟電腦:
[root@localhost ~]# vi /boot/grub/grub.conf default=1改為default=0,使得電腦優(yōu)先以包含xen的內(nèi)核啟動(dòng)(不然的話要每次啟動(dòng)的時(shí)候手動(dòng)選擇與xen相關(guān)的內(nèi)核來啟動(dòng))
? 檢查xen列表:
[root@localhost ~]# xm list Name ID Mem(MiB)VCPUs State Time(s)Domain-0 0 423 4 r-----65.3 ? 如果xen進(jìn)程未啟動(dòng),手動(dòng)執(zhí)行:
[root@localhost ~]# /etc/init.d/xend start [root@localhost ~]# /etc/init.d/xendomains start #正常情況xend啟動(dòng)后將默認(rèn)啟動(dòng)xendomains
1.1.2 創(chuàng)建虛擬機(jī)
如上面安裝好xen之后,打開virt-manager(在終端里輸入:virt-manager),用virt-manager新建一個(gè)CentOS5.6的虛擬機(jī)。創(chuàng)建Xen虛擬機(jī)的步驟如下圖所示:
? 在virt-manager的圖形界面中點(diǎn)擊右鍵,選擇新建虛擬機(jī),為虛擬機(jī)選擇一個(gè)名稱,設(shè)置虛擬機(jī)的各項(xiàng)參數(shù),步驟如截圖所示:
圖2-1 創(chuàng)建虛擬機(jī)
圖2-2 為虛擬機(jī)選擇名稱
圖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è)置虛擬機(jī)的內(nèi)存等信息
圖2-9 完成虛擬機(jī)的創(chuàng)建
圖2-10 安裝虛擬機(jī)
? 這樣就開始了一個(gè)虛擬機(jī)的安裝,接下去的步驟同普通安裝基本一樣。
1.1.3 快速克隆虛擬機(jī)
安裝完之后,在/var/lib/xen/images中有一個(gè)vmpc1.img文件,即虛擬機(jī)的映像文件。在/etc/xen中有一個(gè)vmpc1的配置文件。如果想再建一個(gè)虛擬機(jī)的話,可以通過克隆前面安裝的那臺(tái)虛擬機(jī)??寺∫慌_(tái)虛擬機(jī)非常方便,只要復(fù)制一份那臺(tái)虛擬機(jī)的映像文件(即.img文件,但是文件必須重命名)和配置文件(需要修改部分內(nèi)容,如主機(jī)名、mac地址等)即可。
復(fù)制一臺(tái)虛擬機(jī)的步驟如下:
? 首先關(guān)閉被復(fù)制的那臺(tái)虛擬機(jī)(假如復(fù)制vmpc1)
xm shutdown vmpc1 ? 復(fù)制虛擬機(jī)映像文件和配置文件
cp /var/lib/xen/images /vmpc1.img /var/lib/xen/images /vmpc2.img cp /etc/xen/vmpc1 /etc/xen/vmpc2 ? 修改虛擬機(jī)配置文件
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這個(gè)映像文件
? 啟動(dòng)并進(jìn)入虛擬機(jī)
vm create vmpc2-c ? 修改主機(jī)名
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 虛擬化平臺(tái)的 CentOS 64 位操作系統(tǒng)。安裝步驟如下:
? 安裝Xen虛擬化環(huán)境,并保證Xend啟動(dòng)成功,網(wǎng)絡(luò)可正常連接,如不講究
Xen 版本,可利用 CentOS 更新源已有的 Xen 虛擬化平臺(tái),采取下面的簡單辦法:
[root@localhost ~]# yum install xen.x86_64
? 安裝完成后重啟,啟動(dòng)菜單中選擇包含xen的操作系統(tǒng)選項(xiàng),啟動(dòng)成功之后,如不出異常,xend將正常運(yùn)行于后臺(tái),進(jìn)入dom0客戶操作系統(tǒng)。通過以下命令可并判斷xend是否正常啟動(dòng),正常啟動(dòng)的情況下該命令將顯示客戶操作系統(tǒng)dom列表。
? 啟動(dòng)成功后安裝內(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
? 進(jìn)入解壓后目錄,輸入以下命令配置Open vSwitch工程,生成Makefile文件。
[root@localhost ~]#./configure--with-l26=/lib/modules/`uname-r`/build--with-l26:生成內(nèi)核模式的Open vSwitch時(shí)需指定的內(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正常啟動(dòng),將自動(dòng)加載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,用于存儲(chǔ)虛擬交換機(jī)的配置信息,只需第一次運(yùn)行Open vSwitch時(shí)創(chuàng)建
[root@localhost ~]# ovsdb-tool create /usr/local/etc/ovs-vswitchd.conf.db openvswitch-1.1.0pre2/vswitchd/vswitch.ovsschema
? 啟動(dòng)ovsdb數(shù)據(jù)庫服務(wù)器,Open vSwitch虛擬網(wǎng)橋模塊將通過ovsdb-server獲得虛擬交換機(jī)配置信息,―—detach‖表示以后臺(tái)方式運(yùn)行,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管理配置虛擬交換機(jī)
[root@localhost ~]# ovs-vsctl--no-wait init ? 啟動(dòng)Open vSwitch用戶態(tài)模塊,unix:后的文件為socket文件,為ovsdb-server監(jiān)聽的socket文件。
[root@localhost ~]# ovs-vswitchd unix:/usr/local/var/run/openvswitch/db.sock--detach
? 啟動(dòng)linux原有虛擬網(wǎng)橋兼容模塊用戶態(tài)組件ovs-brcompatd,該模塊必須在ovsdb-server和ovs-vswitchd啟動(dòng)后才能啟動(dòng)。
[root@localhost ~]# ovs-brcompatd--pidfile--detach-vANY:console:EMER unix:/usr/local/var/run/openvswitch/db.sock
1.1.5 配置ovs 在安裝了xen的主機(jī)中,當(dāng)使用ifconfig命令時(shí),除了熟悉的eth0以外還會(huì)出現(xiàn)許多平常沒有見到過的網(wǎng)絡(luò)接口,這些接口的出現(xiàn)的原因是因?yàn)閤en會(huì)自動(dòng)為虛擬機(jī)創(chuàng)建一些虛擬的網(wǎng)絡(luò)接口,裝有xen的主機(jī)在啟動(dòng)時(shí)網(wǎng)絡(luò)的配置過程為:
1.執(zhí)行在/etc/xen/xend-config.sxp中指定的/etc/xen/scripts/network-bridge腳本
2.network-bridge腳本創(chuàng)建一個(gè)新網(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.啟動(dòng)網(wǎng)橋xenbr0,啟動(dòng)其他網(wǎng)絡(luò)接口peth0,eth0,vif0.0
對于每一個(gè)新的domU,Xen會(huì)創(chuàng)建“一對相連的虛擬網(wǎng)卡”,其中一塊在新建的domU上,另一塊在dom0上。對于Linux的domU來說,其虛擬網(wǎng)卡名字是eth0,而在dom0這端的這一塊的網(wǎng)卡名字是vif
圖2-11 裝有xen的主機(jī)中網(wǎng)絡(luò)端口的狀態(tài)
數(shù)據(jù)包到達(dá)物理網(wǎng)卡之后的處理流程為:數(shù)據(jù)包到達(dá)硬件物理網(wǎng)卡接口peth0,dom0上的網(wǎng)卡驅(qū)動(dòng)會(huì)進(jìn)行處理。因?yàn)閜eth0綁定在網(wǎng)橋上,所以數(shù)據(jù)包被發(fā)送到網(wǎng)橋上。觀察ifconfig的輸出,你會(huì)發(fā)現(xiàn)peth0,xenbr0,vif0.0和vif1.0都共享一個(gè)相同的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接收到一個(gè)數(shù)據(jù)包,它會(huì)將數(shù)據(jù)包直接發(fā)送到網(wǎng)橋接口xenbr0上。然后網(wǎng)橋會(huì)分發(fā)數(shù)據(jù)包,像交換機(jī)一樣(話說交換機(jī)也是網(wǎng)橋的一種)。網(wǎng)橋會(huì)根據(jù)數(shù)據(jù)包接收者的MAC地址將其轉(zhuǎn)發(fā)到正確的網(wǎng)絡(luò)接口上。所以peth0這個(gè)接口不需要配置ip地址,只有MAC地址就夠了。然后vif接口會(huì)將數(shù)據(jù)包發(fā)送給domU上相連的接口,然后domU中返回的數(shù)據(jù)包也通過vif發(fā)送回來。dom0也是一樣的操作模式,通過vif0.0->eth0這一對相連的網(wǎng)卡。
vif0.1:表示ID為0的第二個(gè)網(wǎng)絡(luò)接口,vif6.0:表示ID為6的第一個(gè)網(wǎng)絡(luò)接口 virbr0:是虛擬系統(tǒng)和真實(shí)系統(tǒng)進(jìn)行連接的接口,實(shí)現(xiàn)NAT功能 xenbr1:是虛擬系統(tǒng)和真實(shí)系統(tǒng)進(jìn)行連接的接口,橋接功能
圖2-11 裝有xen的主機(jī)中網(wǎng)橋的轉(zhuǎn)發(fā)原理
以上就是在裝有虛擬機(jī)的主機(jī)上網(wǎng)橋的轉(zhuǎn)發(fā)原理,使用ovs進(jìn)行基于網(wǎng)橋的轉(zhuǎn)發(fā)也是同上面描述的原理類似,只是要使用ovs自己建一個(gè)網(wǎng)橋(假設(shè)為br0),然后把物理網(wǎng)卡、虛擬網(wǎng)卡0、虛擬網(wǎng)卡1??連接在這個(gè)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
然后把虛擬機(jī)的網(wǎng)橋設(shè)置為br0,原來可能是xenbr0,修改虛擬機(jī)的配置文件即可,然后重啟虛擬機(jī)。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 ? 如果需要啟動(dòng)gui 必須做branch這一步
git branch –a git checkout-b destiny origin/destiny./boot.sh mkdir build/ cd build/../configure make-j 5 ? 啟動(dòng)控制器
./nox_core-v-i ptcp:6633 monitoring ? 有時(shí)候會(huì)因?yàn)橐蕾嚢膯栴}而使安裝出現(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