操作系统openeuler22.0,x86架构
分别下载ovn和ovs的源码
https://github.com/openvswitch/ovs/tree/v2.13.0
https://github.com/ovn-org/ovn/tree/v20.03.1
![](https://i-blog.csdnimg.cn/blog_migrate/0ccb91931bdedb73461da83561161fe2.png)
安装必要工具:
yum install -y unzip tar make autoconf automake libtool rpm-build gcc libuuid-devel
准备好官方指导文件
https://github.com/ovn-org/ovn/blob/v20.03.1/Documentation/intro/install/general.rst
https://github.com/openvswitch/ovs/blob/v2.13.1/Documentation/intro/install/general.rst
分别解压在opt目录下:
![](https://i-blog.csdnimg.cn/blog_migrate/1f754ff9ae7ffdeaf62742dbbd10c03c.png)
进到各自目录下执行:./boot.sh
如果在没有配置ovs的环境时安装ovn则会报如下错误
![](https://i-blog.csdnimg.cn/blog_migrate/3c68328413a6e18d7b8e3ebd902a73db.png)
所以先针对ovs执行:
./configure --prefix=/usr --localstatedir=/var --sysconfdir=/etc
![](https://i-blog.csdnimg.cn/blog_migrate/6f6780067324582b71911041dd501350.png)
然后在ovn里面执行:
./configure --with-ovs-source=/root/ovn_src/ovs-2.13.0 -prefix=/usr --localstatedir=/var --sysconfdir=/etc
![](https://i-blog.csdnimg.cn/blog_migrate/02a1a6bad6f25f9e9cd62834f891c11a.png)
在ovn目录下执行make rpm-fedora 提示需要依赖
'/root/ovn_src/ovs-2.13.0/openvswitch-2.13.0.tar.gz'
![](https://i-blog.csdnimg.cn/blog_migrate/b33cc7178d6d5ea5dbf71f402588ef91.png)
将ovs-2.13.0 更换名称为openvswitch-2.13.0
并打包成openvswitch-2.13.0.tar.gz 然后放到/root/ovn_src/ovs-2.13.0
继续执行make rpm-fedora
![](https://i-blog.csdnimg.cn/blog_migrate/4e0af5e8fbf2a86979409c2b0cecab99.png)
提示缺少依赖:逐个安装
![](https://i-blog.csdnimg.cn/blog_migrate/94df82343913a16703565c3e7cad8f7d.png)
yum install -y checkpolicy desktop-file-utils gcc-c++ graphviz libcap-ng-devel openssl-devel python3-devel selinux-policy-devel unbound-devel python3-sphinx
注意:当前欧拉系统里面的python版本是3.9.9
![](https://i-blog.csdnimg.cn/blog_migrate/e7915720c9252f8efc0e4b89fc863f4c.png)
在centos7系统上可能需要安装python2-sphinx
×执行编译:make rhel/ovn-fedora.spec(到上一步骤正常已经打出了rpm包)
![](https://i-blog.csdnimg.cn/blog_migrate/1a822c91d41748704a0ea3088584501b.png)
编译成功:
![](https://i-blog.csdnimg.cn/blog_migrate/034cb36b9af3461abacf4f8919e0eb65.png)
ovn源码目录下生成了rpm目录
![](https://i-blog.csdnimg.cn/blog_migrate/9a48a14eaa1cdf2f1507dad3e2626890.png)
这个打出来的rpm,这里我们在环境中使用红框几个包即可满足基本的应用
![](https://i-blog.csdnimg.cn/blog_migrate/380e272b1845b89053264e634cd22c68.png)
下面编译ovs的rpm包
![](https://i-blog.csdnimg.cn/blog_migrate/f3e91f6b87f24346b14bc408fb80485d.png)
编译ovs选择编译用户空间的依赖包
![](https://i-blog.csdnimg.cn/blog_migrate/3b8bb275462fe59f0a67ed3ffae64d47.png)
![](https://i-blog.csdnimg.cn/blog_migrate/e1e5b2a310648bc18b4088d5c1492ae5.png)
...
![](https://i-blog.csdnimg.cn/blog_migrate/710b3efefdaf636014371906c7ff9215.png)
上述安装完成
测试安装ovn 和 ovs的rpm包
我们将ovn 服务基础的包整理在一起
![](https://i-blog.csdnimg.cn/blog_migrate/41f6a8e7cd93e21884bca38a7f06446f.png)
![](https://i-blog.csdnimg.cn/blog_migrate/9207b8279ddfb59f06768d29d3d6edc9.png)
![](https://i-blog.csdnimg.cn/blog_migrate/f8f30b5248e43841e0728c6bffcf5a9c.png)
安装ovs::状态时active(exit)但可以正常使用了
![](https://i-blog.csdnimg.cn/blog_migrate/1b2228a39a780118c622d2fe0c60709d.png)
测试ovs
![](https://i-blog.csdnimg.cn/blog_migrate/60115140a7f362e752e771be4a8e0085.png)
测试ovn
![](https://i-blog.csdnimg.cn/blog_migrate/deceb5af5abe27c61e78cd14335576d2.png)
测试ovn管理ovs
第一步:在北向数据库创建服务
ovn-sbctl set-connection ptcp:6642:127.0.0.1
ovn-nbctl set-connection ptcp:6641:127.0.0.1
[root@euler22 ovn_rpm_mini]# ss -anlpt | grep 66
LISTEN 0 4096 0.0.0.0:111 0.0.0.0:* users:(("rpcbind",pid=666,fd=8))
LISTEN 0 10 127.0.0.1:6641 0.0.0.0:* users:(("ovsdb-server",pid=51866,fd=20))
LISTEN 0 10 127.0.0.1:6642 0.0.0.0:* users:(("ovsdb-server",pid=51892,fd=19))
LISTEN 0 4096 [::]:111 [::]:* users:(("rpcbind",pid=666,fd=11))
第二步:在ovs节点配置以下三个全局参数,三个参数全部填写才行
ovs-vsctl set open . external-ids:ovn-encap-type=geneve
ovs-vsctl set open . external-ids:ovn-encap-ip="127.0.0.1"
ovs-vsctl set open . external-ids:ovn-remote="tcp:127.0.0.1:6642"
![](https://i-blog.csdnimg.cn/blog_migrate/a305c3a4317adfbca9ab40c1153beb5a.png)
检查南向数据库是否同步到了chassis ID,以下显示已经成功
![](https://i-blog.csdnimg.cn/blog_migrate/36fd1ee52ac69fe4df2ba793d09d0436.png)
至此完成ovn- ovs 编译-安装-应用的大致流程
不足支持请批评指正