openvswitch 安装,参考: https://phpor.net/blog/post/5102
启动相关进程:
创建数据库:
1 |
ovsdb-tool create |
语法说明: ovsdb-tool [options] create [db [schema]]
默认数据库位置: /etc/openvswitch/conf.db
默认的表结构: /usr/share/openvswitch/vswitch.ovsschema (schema 是一个很大的json)
启动ovsdb-server:
1 |
ovsdb-server --detach --remote=punix:/var/run/openvswitch/db.sock --log-file |
语法说明: ovsdb-server [database]… [–remote=remote]… [–run=command] –log-file[=/var/log/openvswitch/ovsdb-server.log]
默认数据库文件: /etc/openvswitch/conf.db
监听socket文件: 通过 –remote指定,可以是ip:port ,没有默认值
日志文件: 通过–log-file 开启日志,通过 –log-file=/var/log/ovsdb-server.log 来指定文件位置,默认位置: /var/log/openvswitch/ovsdb-server.log
通过ovsdb-client 操作数据库
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
# ovsdb-client list-dbs Open_vSwitch # ovsdb-client list-tables Open_vSwitch Table ------------------------- Controller Bridge Queue IPFIX NetFlow Open_vSwitch QoS Port sFlow SSL Flow_Sample_Collector_Set Mirror Flow_Table Interface AutoAttach Manager |
ovsdb-client – command-line interface to ovsdb-server
默认的server socket文件: unix:/var/run/openvswitch/db.sock
加载openvswitch 内核模块:
1 |
modprobe openvswitch |
如果不加载该模块,则ovs-vswitchd启动时会报错
该模块内核中已经有了,加载即可:
1 2 3 4 5 |
[root@localhost ~]# find /lib/modules -name openvswitch.ko /lib/modules/3.10.0-514.el7.x86_64/kernel/net/openvswitch/openvswitch.ko /lib/modules/4.4.61-1.el7.elrepo.x86_64/kernel/net/openvswitch/openvswitch.ko [root@localhost ~]# rpm -qf /lib/modules/4.4.61-1.el7.elrepo.x86_64/kernel/net/openvswitch/openvswitch.ko kernel-lt-4.4.61-1.el7.elrepo.x86_64 |
启动ovs-vswitchd: ovs-vswitchd – Open vSwitch daemon
1 |
ovs-vswitchd --detach --log-file |
语法说明: ovs-vswitchd [database]
database 就是ovsdb-server listen的unix socket或ip:port ,这里默认位置为: unix:/var/run/openvswitch/db.sock
日志通过 –log-file 打开,默认位置: /var/log/openvswitch/ovs-vswitchd.log
查看网络配置:
1 2 3 4 5 6 7 8 |
# ovs-vsctl show 72cc794c-0319-4794-bbd6-649b867aee46 Bridge "br0" Port "br0" Interface "br0" type: internal Port "86406999afdb4_l" Interface "86406999afdb4_l" |
ovs-vsctl 通过
各组件之间的关系:
数据库文件是静态文件,如同sqlitedb,需要通过工具(ovsdb-tool)创建;对于mysql数据库,本身就可以直接提供网络服务,但是这里的数据库文件却仅仅是个文件,需要 ovsdb-server 来提供网络服务,ovsdb-server 只知道如何操作数据库(表),对网络却一无所知,但是ovs-vswitchd却是懂网络的,ovs-vswitchd 通过ovsdb-server数据库的变更,执行网络配置,提供一个配置网络的服务;ovs-vsctl 通过ovsdb-server (/var/run/openvswitch/db.sock)操作数据库