1. Controller节点

1.1 安装 OVS和OVN

安装 Python3.7:

yum -y groupinstall "Development tools"
yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel libffi-devel zlib1g-dev zlib* libffi-devel wget https://www.python.org/ftp/python/3.7.2/Python-3.7.2.tar.xz
tar -xvJf Python-3.7.2.tar.xz
mkdir /usr/local/python3 cd Python-3.7.2
./configure --prefix=/usr/local/python3 --enable-optimizations --with-ssl make && make install ln -s /usr/local/python3/bin/python3 /usr/local/bin/python3
ln -s /usr/local/python3/bin/pip3 /usr/local/bin/pip3 python3 -V
pip3 -V

安装 ovs和ovn:

yum install -y epel-release net-tools gcc gcc-c++  kernel-devel kernel-headers kernel.x86_64 \
numactl-devel.x86_64 numactl-libs.x86_64 libpcap.x86_64 libpcap-devel.x86_64 pciutils \
autoconf automake libtool git clone https://github.com/openvswitch/ovs.git
git branch -a
git checkout
git checkout origin/branch-2.12
./boot.sh
./configure
make
make install # 配置数据库
mkdir -p /usr/local/etc/openvswitch
ovsdb-tool create /usr/local/etc/openvswitch/conf.db vswitchd/vswitch.ovsschema # 启动 ovsdb-server
mkdir -p /usr/local/var/run/openvswitch
mkdir -p /usr/local/var/log/openvswitch/
ovsdb-server --remote=punix:/usr/local/var/run/openvswitch/db.sock \
--remote=db:Open_vSwitch,Open_vSwitch,manager_options \
--private-key=db:Open_vSwitch,SSL,private_key \
--certificate=db:Open_vSwitch,SSL,certificate \
--bootstrap-ca-cert=db:Open_vSwitch,SSL,ca_cert \
--pidfile --detach --log-file ovs-vsctl --no-wait init
ovs-vswitchd --pidfile --detach --log-file

# 启动 ovn_northd
/usr/local/share/openvswitch/scripts/ovn-ctl start_northd

其他:

yum install -y python-networking-ovn

允许远程访问 osvdb-server:(将 0.0.0.0 替换成管理网络接口的IP,可以避免监听所有接口)

ovn-nbctl set-connection ptcp:6641:0.0.0.0 -- set connection . inactivity_probe=60000
ovn-sbctl set-connection ptcp:6642:0.0.0.0 -- set connection . inactivity_probe=60000

如果使用 vtep,则还需如下配置:

ovs-appctl -t ovsdb-server ovsdb-server/add-remote ptcp:6640:0.0.0.0

编辑配置文件 /etc/neutron/neutron.conf,添加或修改如下内容:

[DEFAULT]
...
core_plugin = ml2
service_plugins = ovn-router # 其他配置

注:其他配置正常(https://docs.openstack.org/neutron/latest/install/controller-install-rdo.html)。

编辑配置文件 /etc/neutron/plugins/ml2/ml2_conf.ini:

[ml2]
...
mechanism_drivers = ovn
type_drivers = local,flat,vlan,geneve
tenant_network_types = geneve
extension_drivers = port_security
overlay_ip_version = 4 [ml2_type_flat]
flat_networks = PHYSICAL_NETWORK [ml2_type_geneve]
vni_ranges = 1:65536
max_header_size = 38 [ml2_type_vlan]
network_vlan_ranges = PHYSICAL_NETWORK:MIN_VLAN_ID:MAX_VLAN_ID [securitygroup]
enable_security_group = true [ovn]
ovn_nb_connection = tcp:IP_ADDRESS:6641
ovn_sb_connection = tcp:IP_ADDRESS:6642
ovn_l3_scheduler = OVN_L3_SCHEDULER

将 PHYSICAL_NETWORK 替换为物理网络名称(自己取即可),如, provider。

MIN_VXLAN_ID:MAX_VLAN_ID 定义了最小、最大可用的 vlan id,如,1001:2000。

将 IP_ADDRESS 替换为 controller 节点上运行 osvdb-server 服务的IP地址。

OVN_L3_SCHEDULER可选值:

  • leastloaded:let the scheduler to select a compute node with the least number of gateway ports.
  • chance:let the scheduler to randomly select a compute node from the available list of compute nodes.

Set ovn-cms-options with enable-chassis-as-gw in Open_vSwitch table’s external_ids column. Then if this chassis has proper bridge mappings, it will be selected for scheduling gateway routers.

ovs-vsctl set open . external-ids:ovn-cms-options=enable-chassis-as-gw

重新填充数据库:(DBPASS:数据库登录密码,NEUTRON_DBPASS:neutron服务连接数据库时使用的密码)

mysql -uroot -p$DBPASS <<EOF
DROP DATABASE IF EXISTS neutron;
CREATE DATABASE neutron; GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'localhost' IDENTIFIED BY '$NEUTRON_DBPASS';
GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%' IDENTIFIED BY '$NEUTRON_DBPASS'; quit
EOF su -s /bin/sh -c "neutron-db-manage --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugins/ml2/ml2_conf.ini upgrade head" neutron

停止 linux-bridge 等服务(因为此处将 controller 节点也用作了 network 节点),并重新启动 neutron-server:

systemctl stop neutron-linuxbridge-agent.service neutron-dhcp-agent.service neutron-metadata-agent.service neutron-l3-agent.service
systemctl disable neutron-linuxbridge-agent.service neutron-dhcp-agent.service neutron-metadata-agent.service neutron-l3-agent.service systemctl restart neutron-server.service

2. Network节点

不再需要 DHCP 和 L3 功能。

3. Compute节点

使用 controller 节点上的 ovs 数据库:

systemctl start openvswitch
ovs-vsctl set open . external-ids:ovn-remote=tcp:IP_ADDRESS:6642

将 IP_ADDRESS 替换为 controller 上运行 ovsdb-server 服务的 IP地址。

ovs-vsctl set open . external-ids:ovn-encap-type=geneve,vxlan
ovs-vsctl set open . external-ids:ovn-encap-ip=IP_ADDRESS

Replace IP_ADDRESS with the IP address of the overlay network interface on the compute node.

4. Controller节点

启动 ovn-controller:

/usr/local/share/openvswitch/scripts/ovn-ctl start_controller

5. 验证

# openstack network create net1
# openstack subnet create --subnet-range 172.0.0.0/24 --network net1 subnet1
# openstack port create --network net1 --fixed-ip subnet=subnet1,ip-address=172.0.0.10 port1 # ovn-nbctl show
switch 00d310e3-1919-4dc8-a6d4-c9baaba1b006 (neutron-4c3d437a-f161-4c3e-9a57-606e9f80ed14) (aka net1)
port 40e23569-fd75-40fb-ae07-ce93053a007b (aka port1)
addresses: ["fa:16:3e:98:22:c7 172.0.0.10"]

参考资料

https://docs.openstack.org/neutron/latest/install/ovn/manual_install.html

https://www.cnblogs.com/xiujin/p/11477419.html

https://www.cnblogs.com/gaozhengwei/p/7100140.html

OpenStack使用OVN的更多相关文章

  1. 【Network】OVS、VXLAN/GRE、OVN等 实现 Docker/Kubernetes 网络的多租户隔离

    多租户隔离 DragonFlow与OVN | SDNLAB | 专注网络创新技术 Neutron社区每周记(6.25~7.6)| OVS将加入Linux基金会?OVN或抛弃ovsdb? | Unite ...

  2. 我的第二本译作《精通OpenStack》上架啦:书籍介绍和译者序

    1. 书籍简介 英文书名:Mastering OpenStack Second Edition 作者:[德] 奥马尔-海德希尔(Omar Khedher)[印] 坚登-杜塔-乔杜里(Chanda Du ...

  3. 我的第二本译作《精通OpenStack》上架啦:前言、目录和样章

    1. 前言 今天,随着新功能和子项目的增加,OpenStack已成为一个不断扩展的大型开源项目.随着数以百计大型企业采用并不断为OpenStack生态系统做出贡献,OpenStack必将成为下一代私有 ...

  4. 如何借助 OVN 来提高 OVS 在云计算环境中的性能

    众所周知,OpenvSwitch 以其丰富的功能和不错的性能,已经成为 Openstack 部署中最受欢迎的虚拟交换机.由于 Openstack Neutron 的架构引入了一些性能问题,比如 neu ...

  5. ovs ovn 学习资料

    0.A Primer on OVN http://blog.spinhirne.com/2016/09/a-primer-on-ovn.html 1.Open Virtual Networking W ...

  6. (转)Openstack Cascading和Nova Cell

    Openstack是看着AWS成长起来的,这点毋庸置疑:所以AWS大规模商用已成事实的情况下,Openstack也需要从架构和产品实现上进行优化,以满足大规模商用的要求.从已有的实现来看其中两种方式值 ...

  7. 在Packstack环境手动安装OVN

    安装OpenStack(allinone)环境 ### 参考"Packstack使用"章节安装,但是不要配置外网网络 安装OVN组件 ### 控制节点 # yum install ...

  8. OVN架构翻译

    概述 ovn-controller是OVN在虚拟机上的agent,北向连接OVN的南向数据库,学习OVN的配置和状态,并使用虚拟机的状态来填充PN表以及Binding表的Chassis列:南向连接op ...

  9. OpenStack日志分析

    日志文件说明 Nova日志 OpenStack计算服务日志位于/var/log/nova目录下(此目录在Controller和Compute节点都存在),默认权限拥有者是nova用户 文件名 作用 n ...

随机推荐

  1. 出现VMware Workstation 无法连接到虚拟机。请确保您有权运行该程序、访问该程序使用的所有目录以及访问所有临时文件目录。 未能将管道连接到虚拟机: 所有的管道范例都在使用中。

    今天在学习Linux 的时候 启动VM时出现了这个问题, 搞了很久终于弄好了, 就写篇博客来记录一下,帮助一下大家,如果对大家有帮助,还请大哥大姐点个关注,你的支持就是我坚持下去的动力 ! VMwar ...

  2. 教你如何修改Python的pip源镜像

    PS:在pip install安装扩展库的时候,遇到安装超时失败,可能是因为国外镜像被屏蔽了. 可以使用国内开放的pip源: 阿里云 http://mirrors.aliyun.com/pypi/si ...

  3. 制作3D小汽车游戏(下)

    书接上回,这一节我们分模块说一说怎么写一个这样的游戏 1. 初始化场景.相机和渲染器 这几乎是绘制three必须做的事情,我们有两套场景和相机,一个是主场景和相机,另一个是小地图的场景和相机(用来俯视 ...

  4. SpringCloud 源码系列(5)—— 负载均衡 Ribbon(下)

    SpringCloud 源码系列(4)-- 负载均衡 Ribbon(上) SpringCloud 源码系列(5)-- 负载均衡 Ribbon(下) 五.Ribbon 核心接口 前面已经了解到 Ribb ...

  5. 【Linux】使用笔记

    前言 搜狗输入法,作为我体验最好的一个输入法,一直陪我从小学走到了现在,优麒麟线上发布会时,搜狗团队代表用"聪明"来形同它,事实也确实如此,它能十分人性地记录使用者常用的热词,并且 ...

  6. 使用 SOS 对 Linux 中运行的 .NET Core 进行问题诊断

    目录 说明 准备一个方便的学习环境 2.x 配置内容 3.x 配置内容 工具介绍 lldb sos plugin 1. attach 到进程上进行调试 2. 分析core dump文件 SOS 案例分 ...

  7. Node 跨域问题 Access to XMLHttpRequest at 'http://localhost:8080/api/user/login' from origin 'http://localhost:808

    人不可能踏进同一条河流,我可以一天在同一个问题上摔倒两次. 这次是跨域问题,都是泪,教程提供的服务端代码虽然配置了文件,但是依然是没有解决跨域问题,依然报错 Request header field ...

  8. css3 知识点积累

    -moz-    兼容火狐浏览器-webkit-  兼容chrome 和safari1.角度  transform:rotate(30dge)  水平线与div 第四象限30度  transform: ...

  9. 洛谷P4848 崂山白花蛇草水 权值线段树+KDtree

    题目描述 神犇 \(Aleph\) 在 \(SDOI\ Round2\) 前立了一个 \(flag\):如果进了省队,就现场直播喝崂山白花蛇草水.凭借着神犇 \(Aleph\) 的实力,他轻松地进了山 ...

  10. python之logging 模块(下篇)

    四.日志处理流程(第二种日志使用方式) 上面简单配置的方法例子中我们了解到了logging.debug().logging.info().logging.warning().logging.error ...