一 安装配置
1、安装依赖包
# yum -y install wget openssl-devel kernel-devel
2.安装开发工具
# yum groupinstall "Development Tools"
3.添加用户:
# adduser ovswitch
4.切换用户并跳转至用户文件夹
# su - ovswitch
5.创建编译目录
# mkdir -p ~/rpmbuild/SOURCES
6.进入目录
# cd ~/rpmbuild/SOURCES
7.下载源码:
# wget http://openvswitch.org/releases/openvswitch-2.3.1.tar.gz
8.解压:
# tar xfz openvswitch-2.3.1.tar.gz
9.从spec文件中删除openvswitch-kmod的依赖包,并创建一个新的spec文件:
# sed 's/openvswitch-kmod, //g' openvswitch-2.3.1/rhel/openvswitch.spec > openvswitch-2.3.1/rhel/openvswitch_no_kmod.spec
10.开始编译:
# rpmbuild -bb --without check /home/ovswitch/rpmbuild/SOURCES/openvswitch-2.3.1/rhel/openvswitch_no_kmod.spec
可能出现错误:
error: File /home/ovswitch/rpmbuild/SOURCES/openvswitch-2.3.0.tar.gz: No such file or directory
解决办法:检查openvswitch-2.3.1.tar.gz文件目录是否正确。
11.退出当前用户使用root:
# exit
12安装编译生成的rpm文件:
# yum localinstall /home/ovswitch/rpmbuild/RPMS/x86_64/openvswitch-2.3.1-1.x86_64.rpm
13.启动服务:
# systemctl start openvswitch.service
可能出现问题:服务起不起来
解决办法:
# yum install policycoreutils-python.x86_64 0:2.2.5-11.el7
# mkdir /etc/openvswitch
# semanage fcontext -a -t openvswitch_rw_t "/etc/openvswitch(/.*)?"
# restorecon -Rv /etc/openvswitch
再重启启动服务
【问题】
服务启不起来,报如下错误:
【解决方法】
杀死所有ovs的进程,然后重启服务
# ps aux | grep ovs*
# kill -9 {进程ID}
# systemctl start openvswitch.service
14.检查服务状态
#systemctl -l status openvswitch.service
二 常用操作
以下操作都需要root权限运行,在所有命令中br0表示网桥名称,eth0为网卡名称。
添加网桥:
#ovs-vsctl add-br br0
列出open vswitch中的所有网桥:
#ovs-vsctl list-br
判断网桥是否存在
#ovs-vsctl br-exists br0
将物理网卡挂接到网桥:
Eg:想把物理网卡eth0挂接到网桥bro上
1.修改网卡eth0文件
#Vi /etc/sysconfig/network-scripts/ifcfg-eth0
修改内容如下:
TYPE=Ethernet
BOOTPROTO=dhcp
DEVICE=eth0(改为自己网卡名字)
ONBOOT=yes
2.把网卡设置为动态自动获取地址模式
# vi/etc/sysconfig/network-scripts/ifcfg-br0
TYPE=bridge
BOOTPROTO=static
DEVICE=br0
ONBOOT=yes
IPADDR=10.10.3.103(改为自己的IP)
NETMASK=255.255.255.0
GATEWAY=10.10.3.254
ifcfg-br0是一个openvswitch的连接外网的bridge
3.将网络接口eth0挂接到网桥br0上
#ovs-vsctl add-port br0 eth0(配置完需要重启系统)
列出网桥中的所有端口:
#ovs-vsctl list-ports br0
列出所有挂接到网卡的网桥:
#ovs-vsctl port-to-br eth0
查看open vswitch的网络状态:
#ovs-vsctl show
删除网桥上已经挂接的网口:
#ovs-vsctl del-port br0 eth0
删除网桥:
#ovs-vsctl del-br br0