文章目录

在看《Docker 容器与容器云(第2版)》一书时,文章中有介绍到Docker的相关网络知识,其中使用到Open vSwitch,它是一个开源的虚拟交换机,支持VLAN,Qos等,功能相当强大。本文就简单记录一下学习过程:

一、下载安装包

在http://www.openvswitch.org/download/中下载想要安装的版本

笔者下载的是最新的 openvswitch-2.12.0.tar.gz

二、安装

1. 解压、生成Makefile、编译、安装

1tar zxvf openvswitch-2.12.0.tar.gz
2cd openvswitch-2.12.0
3./configure 
4make -j4
5sudo make install

以上是正常的编译安装流程。 还有一种配置方式,即编译成内核模块:

1./configure -with-linux=/lib/modules/$(uname -r)/build

2. 如果在安装的过程中生成了修改了内核模块,那么重新编译内核。

1sudo make modules_install

3. 将openvswitch模块载入到内核中

1sudo modprobe openvswitch 

可以通过下面的命令来验证是否成功

1sudo lsmod | grep openvswitch

三、运行

openvswitch有几个脚本放在/usr/local/share/openvswitch/scripts下,为了方便使用,可以设置PATH路径。由于运行需要root权限,可以切换到root,再设置PATH。

1export PATH=$PATH:/usr/local/share/openvswitch/scripts
2ovs-ctl start 

1system ID not configured, please use --system-id ... failed!

这里有一个失败,可以不用管它。

这样的方式在下次启动后,还需要再手动开启,可以加入服务中自动启动。

验证是否开启:

1ps -e | grep ovs

1ovs-vsctl show

四、卸载OVS的内核模块

如果想要卸载,先停止服务:

1ovs-ctl stop

查看OVS datapath:

1ovs-dpctl show

删除datapath:

1ovs-dpctl del-dp ovs-system

卸载openvswitch内核模块

1rmmod openvswitch

此时查看内核模块,不再有openvswitch

1lsmod | grep openvswitch

五、加入服务自动启动

1. CentOS6:

在/etc/init.d/目录创建一个ovs文件,内容如下:

 1#!/bin/bash
 2# chkconfig: 2345 30 80
 3# description:  Starts, stops ovs
 4#
 5
 6# ovs Linux service controller script
 7cd "/usr/local/share/openvswitch/scripts/ovs-ctl"
 8
 9case "$1" in
10    start)
11        ./ovs-ctl start
12        ;;
13    stop)
14        ./ovs-ctl stop
15        ;;
16    *)
17        echo "Usage: $0 {start|stop}"
18        exit 1
19        ;;
20esac

并将之添加运行权限:

1chmod 755 ./ovs

然后使用

1chkconfig on

设置为开机启动。

2. CentOS7及以上版本:

在/usr/lib/systemd/system/下创建一个ovs.service文件,内容如下:

 1[Unit]
 2Description=Open vSwitch server daemon
 3After=network.target
 4
 5[Service]
 6Type=oneshot
 7RemainAfterExit=yes
 8ExecStart=/usr/local/share/openvswitch/scripts/ovs-ctl start
 9ExecStop=/usr/local/share/openvswitch/scripts/ovs-ctl stop
10
11[Install]
12WantedBy=multi-user.target

并将之添加运行权限:

1chmod 777 ./ovs.service

然后使用:

1systemctl enable ovs

设置为开机启动。

重启系统后可以看到进程:

参考: https://www.cnblogs.com/goldsunshine/p/10331606.html https://www.cnblogs.com/yearsj/p/9648749.html