Openstack Liberty网络架构实现分析(一)

2024-01-29 22:50

本文主要是介绍Openstack Liberty网络架构实现分析(一),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

春节前在研究Openstack最新版本Liberty网络时,发现了一篇较好的介绍Liberty网络实现和一些新技术的文章。经过仔细研究后决定写写研究后的体会。

此系列文章分为7个部分,分别介绍:

1.Liberty网络总览

2.网络架构

3.Neutron配置

4.网络创建

5.添加路由、网络和子网

6.在租户网络启动虚机

7.在FLAT网络启动虚机

 

文章连接:OpenStack Liberty Neutron Deployment (Part 1-7 Overview) http://www.opencloudblog.com/?p=557 

 

下面我也会分7个部分来写写自己阅读和实验后的一些心得体会。

 

1、Liberty网络总览

 

从构架图中可以看到节点、网络和服务的总体架构,其中有一下几点比较重要:

1.在传统三节点(控制、网络、计算)环境中,添加了API节点,API节点暴露给外部网络,保证控制节点不直接对外,以此提高系统的安全性。

2.网络方面涉及以下内容:

1)内网和外网两个路由器,内网路由器单纯跑管理数据,保证各个节点之间通讯。

2)外网路由器包含API访问网络、虚机网络和Vxlan网络

3.各个节点跑的服务分布来看基本和传统Openstack一致,但其中nova-metadata元数据服务,从控制节点挪到了网络节点,此改变会减小虚机访问元数据信息对网络造成的压力。

4.为租户提供的虚拟网络资源

1)每个租户可以添加路由器挂接floating pool浮动ip池网络与租户自身内网实现虚机访问外网

2)为租户提供多个浮动IP池网络,并且浮动IP池网络的gateway可以是一个物理router

3)为租户提供多个flat网络,flat网络提供物理的router,只有虚机能够连接这个网络。

 

2.网络架构

根据以上节点和网络图可以发现:

1)两个floating网络使用vlan100和vlan101,snat和dnat通过iptables路由

2)两个flat网络使用vlan200和vlan201,虚机不需iptables路由

3)Vxlan网络使用vlan4000

在使用Vxlan和GRE隧道模式时,因为会对IP和UDP报文添加隧道头信息,造成报文MTU超过1500的情况,传统解决方案有通过DHCP下发MTU=1400配置给虚机,降低虚机的MTU数值以达到保证报文小于1500,由于会导致生产环境产生大的问题,作者不推荐降低MTU数值,作者建议修改交换机MTU为1600保证网络包的转发。

具体vlan配置信息:

vlan 100 name Floating-Pool-1
vlan 101 name Floating-Pool-2
vlan 200 name Flat-Net-1
vlan 201 name Flat-Net-2
# set the mtu to 1600 for vlan 4000
vlan 4000 name vxlan mtu 1600
# do not use vlan 1 for untagged packets
vlan 4090 name native vlan
#
############interface vlan 100description Floating-Network-1ip address 198.18.0.1/20
interface vlan 10description Floating-Network-2ip address 198.18.16.1/20
interface vlan 200description Flat-Network-ip address 198.19.1.1/24
interface vlan 201description Flat-Network-2ip address 198.19.2.1/24
# a L3 interface for the vxlan vlan may be added
#
#############
#
# the ports to the nodes (network and compute)
# They use the same config !
# just one link to each node - multiple links using LACP may also be used
interface portdescription to-network-nodemode trunktrunk native vlan 4090trunk vlan 100,101,200,201,4000,4090mtu 1600
interface port2description to-compute-nodemode trunktrunk native vlan 4090trunk vlan 100,101,200,201,4000,4090mtu 1600

 

 

网络节点配置

网络节点和计算节点的配置使用了一个物理口或一个绑定端口实现了虚机流量的传输还是非常有创新的一种配置方式。如果按照官方Openstack的部署方案,可能就需要四个物理网卡来支撑此种网络配置,但按作者的方案,可以通过一个物理网口实现这四个网口的功能,这样还是会大大降低组网的复杂度,也是一种不错的解决方案。

1)Vxlan的物理口可以不需要,因为Vxlan传输需要的是IP层地址,可以在br-uplink上创建internal port(l3vxlan),并给port配置一个IP地址,来实现Vxlan隧道信息的传输。

2)br-uplink是建立在一个物理网口例如eth1上的一个ovs网桥,它实现了隧道网络br-tun和vlan网络br-vlan的上联功能。

3)br-uplink和它与br-int与br-vlan的patch对虚拟网卡设备需要用户自己创建,br-tun、br-vlan和br-int网桥设备由Openstack代码创建和维护。

4)传统Openstack方案两个floating外网池对应两个L3 agent并且分配两个物理网卡配置br-ex外网桥。可实际上L3 agent现在已经足够智能,可以使用任何网桥设备了。任何一个L3 agent可以管理多个floating pools。

5)Liberty Neutron代码已经不必须使用br-ex来实现L3 agent的路由功能

网络节点和计算节点虚拟设备配置:

#
# the bridge, which connects the nodes to the transport network
ovs-vsctl add-br br-uplink
# the bridge used by Openstack Neutron to connect vlans and flatdhcp networks
ovs-vsctl add-br br-vlan
# the integration bridge used by Openstack
ovs-vsctl add-br br-int
#
# add the uplink (with dot1q tags 101,102,...)
# we assume, that eth1 is the uplink interface
ip link set dev eth1 up
# set the mtu of the physical uplink to the switch
ip link set dev eth1 mtu 1600
#
# disable gro and lro !! on the uplink
ethtool -K eth1 gro off
ethtool -K eth1 lro off
#
# enable for intel NICs udp port hashing to distribute traffic to different queues
ethtool -N eth1 rx-flow-hash udp4 sdfn
#
ovs-vsctl add-port br-uplink eth1 -- set port eth1 vlan_mode=trunk trunk=100,101,200,201,4000
#
# patch ports between br-uplink and br-vlan
ovs-vsctl add-port br-vlan patch-to-uplink -- set Interface patch-to-uplink type=patch options:peer=patch-to-vlan
ovs-vsctl add-port br-uplink patch-to-vlan -- set Interface patch-to-vlan type=patch options:peer=patch-to-uplink
#
# !! on br-uplink the allowed vlan tags on the patch port from br-vlan must be filtered using Openflow rules
# !! if this is not done, there is a risk that vlans from the infrastructure may get mixed with local vlans
# !! of br-int, if the neutron Openvswitch agent fails to set up the vlan mapping on br-vlan or br-int
# TBD
###
# create the Linux IP interface required for VXLAN transport
# this interface is attached to vlan 4000 of br-uplink
# XXX = Last octet of the VXLAN interface ip address of the node
ovs-vsctl add-port br-uplink l3vxlan tag=4000 -- set Interface l3vxlan type=internal
ip addr add 10.255.255.XXX/24 dev l3vxlan
ip link set dev l3vxlan up
# set the mtu of the logical vxlan interface
ip link set dev l3vxlan mtu 1600

 

3.Neutron配置

关于neutron配置项可以参考原文的配置,说几点比较重要的项:

1)在ml2_conf.ini中:

###>>>>>>>>> local_ip is only used on compute and network nodes ###
# local_ip = <ip address of the l3vxlan interface>

 

local_ip在此处需设置为l3vxlan openvswitch的internal port的ip地址,实现Vxlan隧道的ip

 2)在l3_agent.ini中

#
# very important - set the two following entries to an empty string
# do not leave the default values
gateway_external_network_id =  
external_network_bridge =  

 

传统l3外部网络需要配置br-ex外网网桥,由于liberty网络的l3 agnet可以不指定外网网桥,外网ip的qg虚拟设备可以建立在网络节点br-int集成网桥中,以实现l3路由的snat和dnat。

metadata_ip = 127.0.0.1

 

传统openstack的nova-metadata服务部署在控制节点,但此处metadata服务部署在network节点中,因此metadata_ip需配置为127.0.0.1

3)在nova-metadata.conf中

metadata_host = 127.0.0.1
metadata_listen = 127.0.0.1

 

在此metadata服务只监听本地127.0.0.1

 

以上步骤基本完成了liberty网络环境准备工作,下一部分将就介绍网络、路由、外网配置与虚机创建。

 

作者简介:赵俊峰,现为北京新云东方系统科技有限责任公司 云计算部Openstack开发工程师。主要从事Power和x86混合环境下Openstack相关计算、网络、存储相关服务软件开发和系统架构设计工作。

转载于:https://www.cnblogs.com/run4life/p/5223927.html

这篇关于Openstack Liberty网络架构实现分析(一)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/658414

相关文章

mybatis的整体架构

mybatis的整体架构分为三层: 1.基础支持层 该层包括:数据源模块、事务管理模块、缓存模块、Binding模块、反射模块、类型转换模块、日志模块、资源加载模块、解析器模块 2.核心处理层 该层包括:配置解析、参数映射、SQL解析、SQL执行、结果集映射、插件 3.接口层 该层包括:SqlSession 基础支持层 该层保护mybatis的基础模块,它们为核心处理层提供了良好的支撑。

百度/小米/滴滴/京东,中台架构比较

小米中台建设实践 01 小米的三大中台建设:业务+数据+技术 业务中台--从业务说起 在中台建设中,需要规范化的服务接口、一致整合化的数据、容器化的技术组件以及弹性的基础设施。并结合业务情况,判定是否真的需要中台。 小米参考了业界优秀的案例包括移动中台、数据中台、业务中台、技术中台等,再结合其业务发展历程及业务现状,整理了中台架构的核心方法论,一是企业如何共享服务,二是如何为业务提供便利。

hdu1043(八数码问题,广搜 + hash(实现状态压缩) )

利用康拓展开将一个排列映射成一个自然数,然后就变成了普通的广搜题。 #include<iostream>#include<algorithm>#include<string>#include<stack>#include<queue>#include<map>#include<stdio.h>#include<stdlib.h>#include<ctype.h>#inclu

性能分析之MySQL索引实战案例

文章目录 一、前言二、准备三、MySQL索引优化四、MySQL 索引知识回顾五、总结 一、前言 在上一讲性能工具之 JProfiler 简单登录案例分析实战中已经发现SQL没有建立索引问题,本文将一起从代码层去分析为什么没有建立索引? 开源ERP项目地址:https://gitee.com/jishenghua/JSH_ERP 二、准备 打开IDEA找到登录请求资源路径位置

【C++】_list常用方法解析及模拟实现

相信自己的力量,只要对自己始终保持信心,尽自己最大努力去完成任何事,就算事情最终结果是失败了,努力了也不留遗憾。💓💓💓 目录   ✨说在前面 🍋知识点一:什么是list? •🌰1.list的定义 •🌰2.list的基本特性 •🌰3.常用接口介绍 🍋知识点二:list常用接口 •🌰1.默认成员函数 🔥构造函数(⭐) 🔥析构函数 •🌰2.list对象

【Prometheus】PromQL向量匹配实现不同标签的向量数据进行运算

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全栈,前后端开发,小程序开发,人工智能,js逆向,App逆向,网络系统安全,数据分析,Django,fastapi

让树莓派智能语音助手实现定时提醒功能

最初的时候是想直接在rasa 的chatbot上实现,因为rasa本身是带有remindschedule模块的。不过经过一番折腾后,忽然发现,chatbot上实现的定时,语音助手不一定会有响应。因为,我目前语音助手的代码设置了长时间无应答会结束对话,这样一来,chatbot定时提醒的触发就不会被语音助手获悉。那怎么让语音助手也具有定时提醒功能呢? 我最后选择的方法是用threading.Time

Linux 网络编程 --- 应用层

一、自定义协议和序列化反序列化 代码: 序列化反序列化实现网络版本计算器 二、HTTP协议 1、谈两个简单的预备知识 https://www.baidu.com/ --- 域名 --- 域名解析 --- IP地址 http的端口号为80端口,https的端口号为443 url为统一资源定位符。CSDNhttps://mp.csdn.net/mp_blog/creation/editor

Android实现任意版本设置默认的锁屏壁纸和桌面壁纸(两张壁纸可不一致)

客户有些需求需要设置默认壁纸和锁屏壁纸  在默认情况下 这两个壁纸是相同的  如果需要默认的锁屏壁纸和桌面壁纸不一样 需要额外修改 Android13实现 替换默认桌面壁纸: 将图片文件替换frameworks/base/core/res/res/drawable-nodpi/default_wallpaper.*  (注意不能是bmp格式) 替换默认锁屏壁纸: 将图片资源放入vendo

C#实战|大乐透选号器[6]:实现实时显示已选择的红蓝球数量

哈喽,你好啊,我是雷工。 关于大乐透选号器在前面已经记录了5篇笔记,这是第6篇; 接下来实现实时显示当前选中红球数量,蓝球数量; 以下为练习笔记。 01 效果演示 当选择和取消选择红球或蓝球时,在对应的位置显示实时已选择的红球、蓝球的数量; 02 标签名称 分别设置Label标签名称为:lblRedCount、lblBlueCount