文章目录
在看《Docker 容器与容器云(第2版)》一书时,文章中有介绍到Docker的相关网络知识,其中使用到Open vSwitch,它是一个开源的虚拟交换机,支持VLAN,Qos等,功能相当强大。本文就简单记录一下学习过程:
一、下载安装包
在http://www.openvswitch.org/download/中下载想要安装的版本
笔者下载的是最新的openvswitch-2.12.0.tar.gz
二、安装
1. 解压、生成Makefile、编译、安装
tar zxvf openvswitch-2.12.0.tar.gz
cd openvswitch-2.12.0
./configure
make -j4
sudo make install
以上是正常的编译安装流程。
还有一种配置方式,即编译成内核模块:
./configure -with-linux=/lib/modules/$(uname -r)/build
2. 如果在安装的过程中生成了修改了内核模块,那么重新编译内核。
sudo make modules_install
3. 将openvswitch模块载入到内核中
sudo modprobe openvswitch
可以通过下面的命令来验证是否成功
sudo lsmod | grep openvswitch
三、运行
openvswitch有几个脚本放在/usr/local/share/openvswitch/scripts下,为了方便使用,可以设置PATH路径。由于运行需要root权限,可以切换到root,再设置PATH。
export PATH=$PATH:/usr/local/share/openvswitch/scripts
ovs-ctl start
system ID not configured, please use --system-id ... failed!
这里有一个失败,可以不用管它。
这样的方式在下次启动后,还需要再手动开启,可以加入服务中自动启动。
验证是否开启:
ps -e | grep ovs
ovs-vsctl show
四、卸载OVS的内核模块
如果想要卸载,先停止服务:
ovs-ctl stop
查看OVS datapath:
ovs-dpctl show
删除datapath:
ovs-dpctl del-dp ovs-system
卸载openvswitch内核模块
rmmod openvswitch
此时查看内核模块,不再有openvswitch
lsmod | grep openvswitch
五、加入服务自动启动
1. CentOS6:
在/etc/init.d/目录创建一个ovs文件,内容如下:
#!/bin/bash
# chkconfig: 2345 30 80
# description: Starts, stops ovs
#
# ovs Linux service controller script
cd "/usr/local/share/openvswitch/scripts/ovs-ctl"
case "$1" in
start)
./ovs-ctl start
;;
stop)
./ovs-ctl stop
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
;;
esac
并将之添加运行权限:
chmod 755 ./ovs
然后使用
chkconfig on
设置为开机启动。
2. CentOS7及以上版本:
在/usr/lib/systemd/system/下创建一个ovs.service文件,内容如下:
[Unit]
Description=Open vSwitch server daemon
After=network.target
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/usr/local/share/openvswitch/scripts/ovs-ctl start
ExecStop=/usr/local/share/openvswitch/scripts/ovs-ctl stop
[Install]
WantedBy=multi-user.target
并将之添加运行权限:
chmod 777 ./ovs.service
然后使用:
systemctl enable ovs
设置为开机启动。
重启系统后可以看到进程:
参考:
https://www.cnblogs.com/goldsunshine/p/10331606.html
https://www.cnblogs.com/yearsj/p/9648749.html