Chinaunix首页 | 论坛 | 博客
  • 博客访问: 300451
  • 博文数量: 108
  • 博客积分: 4260
  • 博客等级: 上校
  • 技术积分: 1145
  • 用 户 组: 普通用户
  • 注册时间: 2008-02-21 13:22
文章分类

全部博文(108)

文章存档

2011年(40)

2010年(22)

2009年(17)

2008年(29)

我的朋友

分类: LINUX

2011-05-10 15:06:40

Open vSwitch 安装
(文档所针对软件版本:Open vSwitch 1.1.0pre2)

    Linux的发行版本比较多,下面的安装说明只针对于安装有 Xen 虚拟化平台的 CentOS 64 位操作系统,其他Linux发行版未做测试,不保证可行。安装步骤如下:

安装 Xen 虚拟化环境,并保证Xend启动成功,网络可正常连接,如不讲究 Xen 版本,可利用 CentOS 更新源已有的 Xen 虚拟化平台,采取下面的简单办法:

[root@localhost ~]# yum install xen.x86_64

 

安装完成后重启,启动菜单中选择包含xen的操作系统选项,启动成功之后,如不出异常,xend将正常运行于后台,进入dom0客户操作系统。通过以下命令可并判断xend是否正常启动,正常启动的情况下该命令将显示客户操作系统dom列表。

Open <wbr>vSwitch <wbr>安装

启动成功后安装内核源码,如下

[root@localhost ~]# yum install kernel.x86_64

从官方网站中下载Open vSwitch源代码包,最新版本可使用下面的链接:,下载完后输入以下命令解压

[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:生成内核模式的Open vSwitch时需指定的内核源码编译目录

指定Open vSwitch的安装位置加参数:--prefix=/…

如有其他问题可参考源码根目录下的帮助文件:INSTALL.Linux

 

编译、链接、生成和安装Open vSwitch,命令如下,make install目录只安装Open vSwitch除内核模块外的其他所有模块,如ovs-vsctlovs-vswitchdovs-ofctl

[root@localhost ~]# make

[root@localhost ~]# make install

 

卸载原有虚拟网桥模块,命令如下,如果Xend正常启动,将自动加载linux虚拟网桥模块bridge.ko

[root@localhost ~]# rmmod bridge

如果无法卸载,可用“lsmod”命令查看已加载的依赖于bridge的内核模块,并用“rmmod 模块名”卸载,常见的无法卸载的情况可通过预先执行下面两条命令解决。

[root@localhost ~]# /etc/init.d/iptables stop

[root@localhost ~]# rmmod xt_physdev

 

加载Open vSwitch内核模块openvswitch_mod.kolinux虚拟网桥兼容模块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

 

根据ovsdb模板vswitch.ovsschema创建ovsdb数据库ovs-vswitchd.conf.db,用于存储虚拟交换机的配置信息,只需第一次运行Open vSwitch时创建

[root@localhost ~]# ovsdb-tool create

/usr/local/etc/ovs-vswitchd.conf.db

openvswitch-1.1.0pre2/vswitchd/vswitch.ovsschema

 

启动ovsdb数据库服务器,Open vSwitch虚拟网桥模块将通过ovsdb-server获得虚拟交换机配置信息,“—detach”表示以后台方式运行, ovsdb-server其他参数请参考“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用户态模块,unix:后的文件为socket文件,为ovsdb-server监听的socket文件。

[root@localhost ~]# ovs-vswitchd unix:/usr/local/var/run/openvswitch/db.sock --detach

 

启动linux原有虚拟网桥兼容模块用户态组件ovs-brcompatd,该模块必须在ovsdb-serverovs-vswitchd启动后才能启动。

[root@localhost ~]# ovs-brcompatd

--pidfile

--detach

-vANY:console:EMER unix:/usr/local/var/run/openvswitch/db.sock

 

添加网桥br0

[root@localhost ~]# ovs-vsctl add-br br0

激活网桥br0

[root@localhost ~]# ifconfig br0 up

配置网桥br0ip地址和子网掩码

[root@localhost ~]# ifconfig br0 192.168.203.100/24

将需要添加到网桥br0上的网络接口添加到br0

[root@localhost ~]# ovs-vsctl add-port br0 peth0

[root@localhost ~]# ovs-vsctl add-port br0 vif0.0



下附在安装有Xen虚拟化平台的Linux发行版上Open vSwitch启动脚本:

(请确保Open vSwitch安装于默认路径,且该脚本放于与Open vSwitch工程目录同目录下)

#!/bin/bash

#./configure --with-l26=/lib/modules/`uname -r`/build
echo "close applications or modules depending on bridge.ko"
if service iptables status|grep running > /dev/null 2>&1; then
    /etc/init.d/iptables stop;
fi

if lsmod|grep xt_physdev > /dev/null 2>&1; then
    rmmod xt_physdev;
fi

echo "remove module bridge"
if lsmod|grep bridge > /dev/null 2>&1; then
    if rmmod bridge >/dev/null 2>&1; then
        echo "bridge.ko removed">/dev/null
    else
        echo "Failed to remove kernel module bridge"
        exit
    fi
fi

echo "clean obsolete socket files in /usr/local/var/run/openvswitch/"
for i in `ls /usr/local/var/run/openvswitch/|grep "ctl$"`;
do
    rm  /usr/local/var/run/openvswitch/$i;
done

echo "insert kernel module openvswitch_mod.ko"
if lsmod|grep bridge > /dev/null 2>&1; then
    echo "bridge is already running">/dev/null;
elif insmod openvswitch-1.1.0pre2/datapath/linux-2.6/openvswitch_mod.ko ; then
    echo  "openvswitch_mod.ko inserted";
else
    echo "failed to insert openvswitch_mod.ko";
    exit
fi

#ovsdb-tool create /usr/local/etc/ovs-vswitchd.conf.db openvswitch-1.1.0pre2/vswitchd/vswitch.ovsschema
echo "start daemon ovsdb-server"
if ps -ef|grep -E "[[:digit:]][[:space:]]+ovsdb-server" >/dev/null 2>&1; then
    echo "ovsdb-server is already running">/dev/null;
else
    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 ;
fi

#vs-vsctl --no-wait init
echo "start daemon ovs-vswitchd"
if ps -ef|grep -E "[[:digit:]][[:space:]]+ovs-vswitchd" >/dev/null 2>&1; then
        echo "ovs-vswitchd is already running" >/dev/null;
else
    ovs-vswitchd unix:/usr/local/var/run/openvswitch/db.sock --detach ;
fi

echo "start daemon ovs-brcompatd"
if insmod openvswitch-1.1.0pre2/datapath/linux-2.6/brcompat_mod.ko; then
    ovs-brcompatd --pidfile --detach -vANY:console:EMER unix:/usr/local/var/run/openvswitch/db.sock ;
fi

echo "add and configure bridge xenbr0"
if ovs-vsctl list-br|grep xenbr0 > /dev/null 2>&1; then
    echo "bridge xenbr0 already exists" >/dev/null
else
    ovs-vsctl add-br xenbr0
fi

ifconfig xenbr0 up
ifconfig xenbr0 192.168.205.118/24

echo "attach all interfaces to bridge xenbr0"
if /usr/sbin/brctl show |grep peth0 > /dev/null 2>&1; then
    echo "peth0 is added" >/dev/null;
else
    ovs-vsctl add-port xenbr0 peth0 > /dev/null 2>&1;

    for i in `ifconfig|grep vif|awk '{print $1}'`;
    do
             ovs-vsctl add-port xenbr0 $i > /dev/null 2>&1;
    done
fi
echo "Open vSwitch started successfully"
#ovs-vsctl add-port xenbr0 peth0
#/etc/init.d/network restart


  如需在未安装虚拟化平台的Linux发行版上安装,可参考以上步骤和脚本,大同小异。

阅读(3992) | 评论(0) | 转发(0) |
0

上一篇:setup network and route

下一篇:kde pager

给主人留下些什么吧!~~