ubuntu安装运行Open vSwitch

本文主要参考了官方的安装文档,但也加入了一些个人理解。

一、安装

获取源码

从github上克隆openvswitch的仓库

$ git clone https://github.com/openvswitch/ovs.git

checkout相应的版本或分支

$ git checkout v2.7.0

或者

$ git checkout origin/branch-2.7

构建configure文件

直接从github克隆仓库的需要自己构建configure文件,下载release版本的原本就包含configure文件,不用这一步。

$ ./boot.sh

执行完后会在目录下生成configure文件。

配置

通常情况下运行configure不需要加参数

$ ./configure

默认情况下,所有文件都会安装在/usr/local目录下,ovs默认也会去/usr/local/etc/openvswitch目录下寻找数据库。当然你也可以手动指定参数,来改变这些默认的配置。比如将文件都安装在/usr目录下而非/usr/local,将运行时的一些文件放在/var,配置文件和数据库放在/etc,命令如下:

$ ./configure --prefix=/usr --localstatedir=/var --sysconfdir=/etc

Building

编译

$ make

安装

$ make install

将可执行文件和帮助文档安装到本机,默认安装到/usr/local目录。

二、运行

经过以上步骤的安装,在/usr/local/share/openvswitch/scripts目录下安装一些常用的管理脚本,可以将它们添加到路径中,方便以后的时候

$ export PATH=$PATH:/usr/local/share/openvswitch/scripts

无脑式启动

无脑式启动,需要root权限

$ ovs-ctl start

ovs-ctl命令顺序执行以下步骤:

  • 检查数据库:ovs-ctl start命令会先检查/usr/local/etc/openvswitch/conf.db是否存在,如果不存在则创建一个空的数据库(这个路径和你之前安装时的配置有关系)。
  • 运行ovsdb-server
  • 配置Open vSwitch系统ID
  • 插入openvswitch内核模块:这一步需要root权限
  • 启动ovs-vswitchd进程
  • 允许远程OVSDB managers

现在在命令行里执行ovs-vsctl,就会显示ovs的情况。

$ sudo ovs-vsctl show

分解步骤

虽然可以通过ovs-ctl start命令一键启动ovs,但因为启动工作有些步骤需要root权限,导致所有的启动工作都是在root权限下完成的,一些通信和配置用的sock文件也会变为root所有。这就是为什么最后运行ovs-vsctl show的时候也需要root权限。其实ovs支持将启动的步骤分开来执行(其实就是分别启动几个进程,本来程序就是几个不同分工的进程协作来完成工作的嘛)。

创建数据库

ovsdb-tool创建数据库的时候可以指定数据库的schema,例子里的schema在安装文件的根目录下的vswitchd/vswitch.ovsschema,当然也可以不指定。

$ mkdir -p /usr/local/etc/openvswitch
$ ovsdb-tool create /usr/local/etc/openvswitch/conf.db \
    vswitchd/vswitch.ovsschema

启动ovsdb-server(如果编译的时候没有包含SSL的支持,请省略 --private-key, --certificate, and --bootstrap-ca-cert这几个参数)

$ mkdir -p /usr/local/var/run/openvswitch
$ ovsdb-server --remote=punix:/usr/local/var/run/openvswitch/db.sock \
    --remote=db:Open_vSwitch,Open_vSwitch,manager_options \
    --private-key=db:Open_vSwitch,SSL,private_key \
    --certificate=db:Open_vSwitch,SSL,certificate \
    --bootstrap-ca-cert=db:Open_vSwitch,SSL,ca_cert \
    --pidfile --detach --log-file

初始化数据库

$ ovs-vsctl --no-wait init

插入内核模块

$ sudo /sbin/modprobe openvswitch
$ /sbin/lsmod | grep openvswitch

启动Open vSwitch守护进程

$ ovs-vswitchd --pidfile --detach --log-file

使能远程OVSDB managers

$ ovs-appctl -t ovsdb-server ovsdb-server/add-remote db:Open_vSwitch,Open_vSwitch,manager_options

现在就可以通过ovs-vsctl添加bridge了

$ ovs-vsctl add-br br0
$ ovs-vsctl show

你可能感兴趣的:(仿真建模与分析)