Quantum中的L3模型实战
本博客欢迎转发,但请保留原作者(@孔令贤HW)信息!内容系本人学习、研究和总结,如有雷同,实属荣幸!
截止到OpenStack Folsom版,Quantum中的对象模型有以下几个:Network, Subnet, Port, Router, FloatingIP。前三个在我之前的博客已有所分析,今天来看下Router和FloatingIP。
以官方文档中给出的一个quantum部署示例为例:
这个图是用户视角的虚拟机网络部署。每个租户可以创建自己的router,并把自己的private network与router关联。同时,可以把router与一个external network关联,在这个external network上创建公网IP池(即创建subnet,subnet里的IP是公网IP)。更进一步,可以创建floatingIP并将其与虚拟机的port绑定,这样就可以从公网访问虚拟机。
下面使用quantum命令行来从无到有完成上述的网络模型。注意,实际执行命令时,将尖括号内的内容替换成实际内容,我都是以管理员角色执行的命令,实际执行时,可以根据需要在命令参数中添加--tenant-id。
1. 创建network
为租户A创建网络TenantA_PrivateNet:
quantum net-create --tenant-id <tenantA_ID> TenantA_PrivateNet --provider:network_type vlan --provider:physical_network physnet1 --provider:segmentation_id 1024
(我的ovs_quantum_plugin.ini中有如下配置:tenant_network_type=vlan;network_vlan_ranges = physnet1:1:4094)
为租户C创建网络TenantC_PrivateNet1和TenantC_PrivateNet2:
quantum net-create --tenant-id <tenantC_ID> TenantC_PrivateNet1 --provider:network_type vlan --provider:physical_network physnet1 --provider:segmentation_id 1025
quantum net-create --tenant-id <tenantC_ID> TenantC_PrivateNet2 --provider:network_type vlan --provider:physical_network physnet1 --provider:segmentation_id 1026
创建外部网络External_Net:
quantum net-create External_Net --router:external=True
2. 为网络添加subnet
在租户A的网络上添加subnet:
quantum subnet-create --tenant-id <tenantA_ID> TenantA_PrivateNet 10.0.0.0/24
在租户C的网络上分别添加subnet:
quantum subnet-create --tenant-id <tenantC_ID> TenantC_PrivateNet1 10.0.0.0/24
quantum subnet-create --tenant-id <tenantC_ID> TenantC_PrivateNet2 10.0.1.0/24
(注意设置配置项allow_overlapping_ips=true)
在外部网络添加subnet:
quantum subnet-create External_Net --gateway 30.0.0.1 30.0.0.0/22 --enable_dhcp=False
3. 指定网络创建虚拟机
虚拟机的创建不属于本篇范畴,略去。假设:
租户A在TenantA_PrivateNet网络上创建两个虚拟机A_VM1和A_VM2,这样,在Quantum上就对应的创建了两个port,A_Port1和A_Port2.
同样的,租户C创建虚拟机:C_VM1, C_VM2, C_VM3, C_VM4,对应的port:C_Port1, C_Port2, C_Port3, C_Port4
4. 创建router
为租户A创建路由RouterA:
quantum router-create --tenant-id <tenantA_ID> RouterA
为租户C创建路由RouterC:
quantum router-create --tenant-id <tenantC_ID> RouterC
router创建完后,其实什么也没做,只在数据库添加了一条记录。
5. 将租户A和C的router与外部网络关联
quantum router-gateway-set RouterA External_Net
quantum router-gateway-set RouterC External_Net
上述命令,其实是在External_Net上面创建了两个Port,port的属性中device_owner=network:router_gateway,device_id=router_id。在创建Port的同时,分别分配了公网IP(因为外部网络的子网是公网IP)。
6. 将租户A和C的虚拟机绑定到各自的router
quantum router-interface-add RouterA <A_Subnet_ID>
quantum router-interface-add RouterC <C_Subnet1_ID>
quantum router-interface-add RouterC <C_Subnet2_ID>
上述命令,其实是在各自subnet所对应的network内创建port,port的属性中device_owner=network:router_interface,device_id=router_id,fixed_ip={'ip_address': subnet['gateway_ip'], 'subnet_id': subnet['id']}
需要注意的是,在同一个Router内,IP地址是不能重复的。
7. 给虚拟机关联公网IP
首先创建四个floatingIP:
quantum floatingip-create External_Net
quantum floatingip-create External_Net
quantum floatingip-create External_Net
quantum floatingip-create External_Net
上述命令执行后,其实是在External_Net分配了四个port,port的属性中device_owner=network:floatingip
然后关联floatingIP和虚拟机port:
quantum floatingip-associate <floatingip1-ID> <A_Port1_ID>
quantum floatingip-associate <floatingip2-ID> <A_Port2_ID>
quantum floatingip-associate <floatingip3-ID> <C_Port1_ID>
quantum floatingip-associate <floatingip4-ID> <C_Port2_ID>
至此,完成了上述的网络模型。
当然,逻辑上的网络模型只是为了方便应用,其实并不能说明什么,底层的实现才是关键。Quantum的安装部署中,有一个l3 agent进程(可以是一个或多个),这个进程脚本其实就是个死循环,不停的调用QuantumAPI获取router和floatingIP的信息,然后通过底层的网络命令实现上层的模型(主要还是iptable命令)。这样,在大规模部署时,如果系统中存在多个router和floatingIP,将会对l3 agent造成较大的负载,虽然可以通过增加循环间隔的方式缓解,但这样又会造成信息的延迟生效。所以,需要寻求两外的方式来满足规模部署的需求。
本博客欢迎转发,但请保留原作者(@孔令贤HW)信息!内容系本人学习、研究和总结,如有雷同,实属荣幸!
相关推荐
unity3d Quantum Cold 雪山模型.zip模型资源unity模型资源下载unity3d Quantum Cold 雪山模型.zip模型资源unity模型资源下载unity3d Quantum Cold 雪山模型.zip模型资源unity模型资源下载 1.合个人学习技术做项目...
Unity3D 山地模型带贴图 Quantum Arid.zip模型资源unity模型资源下载Unity3D 山地模型带贴图 Quantum Arid.zip模型资源unity模型资源下载Unity3D 山地模型带贴图 Quantum Arid.zip模型资源unity模型资源下载 ...
- L3 Agent 是 Quantum 中用于实现 L3 路由和 NAT 功能的服务。 - 说明了如何配置 L3 Agent 以支持跨网络通信。 **7. 认证与授权** - **Authentication and Authorization** - 详细解释了 Quantum 如何与 ...
在这个“Unity3D 山地模型带贴图 Quantum Arid.zip”压缩包中,包含的是一个适用于Unity3D的山地场景模型,附带有纹理贴图。让我们深入探讨一下Unity3D中的山地建模和贴图技术。 首先,山地建模通常使用高度图...
One of the most cited books in physics of all time, Quantum Computation and Quantum Information remains the best textbook in this exciting field of science. This 10th Anniversary Edition includes a ...
### OpenStack Quantum网络模型介绍 #### 一、OpenStack Essex架构回顾 OpenStack Essex作为早期版本之一,在架构设计上相对简单。在Essex版本中,网络功能主要由`nova-network`组件来实现,该组件负责处理虚拟机...
* 模型号:JBL Quantum Duo * 传感器:2.5 英寸低音喇叭,0.75 英寸高音喇叭 * 等效输出功率:20W RMS * 频率响应:60Hz – 20kHz * 信噪比:> 80dB * 蓝牙版本:4.2 * 蓝牙配置文件:A2DP v1.3, AVRCP v1.5 * 蓝牙...
手册中介绍了JBL Quantum Duo耳机的组件,包括耳机本体、充电线、音频线、用户手册等。 2. 产品 TOUR 手册中提供了JBL Quantum Duo耳机的产品tour,指导用户如何正确地使用耳机的各个组件,例如音频输入、音频输出...
最近,谷歌推出了TensorFlow Quantum(TFQ),一个开源的量子机器学习框架,它允许开发者快速构建量子机器学习模型原型。 TensorFlow Quantum框架提供了一系列高级抽象,用于设计和训练量子模型。这些模型既可以是...
### Quantum GIS (QGIS) 中文教程知识点概览 #### 一、QGIS概述 - **定义与背景**:QGIS是一款开源的桌面地理信息系统,适用于多种操作系统平台,包括Linux、Unix、MacOSX和Windows。该软件项目始于2002年5月,采用...
从提供的文件内容中,我们可以提炼出有关Modicon Quantum系列PLC(可编程逻辑控制器)的关键知识点。Modicon Quantum是施耐德电气旗下的一款高性能PLC,具有模块化设计,广泛应用于工业自动化领域。以下是根据文件...
matlab 中quantum optics 的帮助文档
Quantum-SI是一款专为高速PCB设计提供信号完整性、串扰分析和时序分析的综合性工具。这款软件由QSI技术公司开发,是目前唯一能够处理真正意义上的High-Speed Design ClosureTM的系统级解决方案。其核心功能在于帮助...
Quantum walks, the quantum mechanical counterpart of classical random walks, is an advanced tool for building quantum algorithms that has been recently shown to constitute a universal model of quantum...
相较于其前辈如CPMD、CP2K等,Quantum Espresso在安装过程中优化了许多流程,使其更加便捷。本文将详细介绍Quantum Espresso的安装步骤及相关知识点。 #### 二、安装环境准备 - **硬件要求**:建议使用多核处理器...
通过使用Quantum Console,开发者可以更好地理解和解决游戏中出现的问题,提升开发效率。 首先,Quantum Console 的核心特性包括实时过滤和搜索功能,允许开发者快速定位到特定的日志条目。这在处理大量日志输出时...
2. **量子控制理论**:介绍基本的最优控制概念,如 Pontryagin's 最大原则,动态规划方法,以及现代控制理论中的线性二次型调节器(LQR)和模型预测控制(MPC)等。 3. **量子误差纠正**:讨论量子系统中的噪声和...