OpenStack(4)--NameSpace实现不同项目(租户)重叠网段

news2024/9/30 9:20:37

openstack通过namespace将不同项目(租户)的网络隔离,每个项目的管理员都需要对项目网络进行规划建设,这就导致不同项目之间会重复使用到某些网段,例如192.168.X.X就是管理员习惯使用的网段。

上一次我们新建位于vxlan10_net的cirros-vm1和位于vxlan11_net的cirros-vm3的实例并成功通信,今天讲一下原理。

 cirros-vm1和cirros-vm3位于不同vxlan,tar设备的网卡信息并没有ip,但却可以通过router实现三层通信,如果没有 Gateway IP,router_100_101 是如何完成路由的呢?

router通过将ip网关信息封装在namespace实现不同vxlan之间的通信,但为何要多此一举呢?明明不需要namespace就可以实现不同vxlan之间的通信。答案就是为了实现不同项目(租户)可以重叠使用网络。

[root@localhost ~(keystone_admin)]# nova list
+--------------------------------------+------------+---------+------------+-------------+--------------------------+
| ID                                   | Name       | Status  | Task State | Power State | Networks                 |
+--------------------------------------+------------+---------+------------+-------------+--------------------------+
| 791556ab-6231-4370-8a81-972862da200f | cirros-vm1 | SHUTOFF | -          | Shutdown    | vxlan10_net=172.16.10.11 |
| 6173f9bf-bbed-4d71-96d3-f7ae660dc21c | cirros-vm2 | SHUTOFF | -          | Shutdown    | vxlan10_net=172.16.10.9  |
| ea42b670-c084-4e76-ae84-23d6617eb420 | cirros-vm3 | SHUTOFF | -          | Shutdown    | vxlan11_net=172.16.11.4  |
+--------------------------------------+------------+---------+------------+-------------+--------------------------+

###查看tap设备

[root@localhost ~(keystone_admin)]# virsh dumpxml 791556ab-6231-4370-8a81-972862da200f | grep tap
      <target dev='tap2c798bf4-8e'/>
[root@localhost ~(keystone_admin)]# virsh dumpxml ea42b670-c084-4e76-ae84-23d6617eb420 | grep tap
      <target dev='tap00515be6-9e'/>

###查看tap设备的网卡信息

[root@localhost ~(keystone_admin)]# ifconfig tap2c798bf4-8e
tap2c798bf4-8e: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1450
        inet6 fe80::fc16:3eff:feee:1305  prefixlen 64  scopeid 0x20<link>
        ether fe:16:3e:ee:13:05  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 1  bytes 90 (90.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

[root@localhost ~(keystone_admin)]# ifconfig tap00515be6-9e
tap00515be6-9e: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1450
        inet6 fe80::fc16:3eff:febf:c0eb  prefixlen 64  scopeid 0x20<link>
        ether fe:16:3e:bf:c0:eb  txqueuelen 1000  (Ethernet)
        RX packets 14  bytes 1368 (1.3 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 10  bytes 1382 (1.3 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

l3 agent 会为每个 router 创建了一个 namespace,而router下的接口信息同样会同步到namespce的接口信息,通过 veth pair 与 TAP 相连,然后将 Gateway IP 配置在位于 namespace 里面的 veth interface 上,这样就能提供路由了。

###查看路由(namespace)列表

[root@localhost ~(keystone_admin)]# neutron router-list
neutron CLI is deprecated and will be removed in the future. Use openstack CLI instead.
+--------------------------------------+--------------+----------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------+-------+
| id                                   | name         | tenant_id                        | external_gateway_info                                                                                                                                                                  | distributed | ha    |
+--------------------------------------+--------------+----------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------+-------+
| 30bba1f4-96bb-459c-9760-dba01bde3a01 | router_10_11 | 26f0265d7ca347239ea13ed32279ff7a | {"network_id": "463adb80-e2f3-4a18-9629-cf966fc0b360", "enable_snat": true, "external_fixed_ips": [{"subnet_id": "00897e13-a522-4b8a-943e-7943b652af5a", "ip_address": "172.24.4.4"}]} | False       | False |
| 341a7e57-463d-411b-af0a-8cddc56777d1 | router1      | e035103daab74f818fcb4a8a7dbcfda6 | {"network_id": "463adb80-e2f3-4a18-9629-cf966fc0b360", "enable_snat": true, "external_fixed_ips": [{"subnet_id": "00897e13-a522-4b8a-943e-7943b652af5a", "ip_address": "172.24.4.2"}]} | False       | False |
+--------------------------------------+--------------+----------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------+-------+

###查看具体路由(namespace)的接口信息

[root@localhost ~(keystone_admin)]# ip netns
qrouter-30bba1f4-96bb-459c-9760-dba01bde3a01 (id: 5)
qdhcp-53c25734-40ea-421e-8744-31d3e14819d0 (id: 4)
qdhcp-e64a94b3-3256-4a3d-9833-cc3c9f421e70 (id: 3)
qdhcp-d6c09c69-8bb0-476d-9c71-457251af87b9 (id: 1)
qdhcp-fcf7d046-0937-43af-8b94-32cc1edb24e1 (id: 2)
qrouter-341a7e57-463d-411b-af0a-8cddc56777d1 (id: 0)

id为5的路由(namespace)就是router_10_11的具体id,ip netns exec ID 可查看详细信息。 

###查看路由(namespaceID:qrouter-30bba1f4-96bb-459c-9760-dba01bde3a01)详细信息

[root@localhost ~(keystone_admin)]# ip netns exec qrouter-30bba1f4-96bb-459c-9760-dba01bde3a01 ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
33: qg-f86168a4-fc: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default qlen 1000
    link/ether fa:16:3e:b9:54:91 brd ff:ff:ff:ff:ff:ff
    inet 172.24.4.4/24 brd 172.24.4.255 scope global qg-f86168a4-fc
       valid_lft forever preferred_lft forever
    inet6 fe80::f816:3eff:feb9:5491/64 scope link 
       valid_lft forever preferred_lft forever
34: qr-03ede9be-8d: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc noqueue state UNKNOWN group default qlen 1000
    link/ether fa:16:3e:5f:04:7f brd ff:ff:ff:ff:ff:ff
    inet 172.16.10.1/24 brd 172.16.10.255 scope global qr-03ede9be-8d
       valid_lft forever preferred_lft forever
    inet6 fe80::f816:3eff:fe5f:47f/64 scope link 
       valid_lft forever preferred_lft forever
35: qr-3b2b1f99-dc: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc noqueue state UNKNOWN group default qlen 1000
    link/ether fa:16:3e:9a:3f:f7 brd ff:ff:ff:ff:ff:ff
    inet 172.16.11.1/24 brd 172.16.11.255 scope global qr-3b2b1f99-dc
       valid_lft forever preferred_lft forever
    inet6 fe80::f816:3eff:fe9a:3ff7/64 scope link 
       valid_lft forever preferred_lft forever

 新建网络时候没有设置网关,默认子网首个地址为该网络的网关地址,此处可以看到router有三个接口,分别是33、34、35,33为对外网关,新建路由时默认就有,34、35则对应vxlan10、vxlan11接口,172.16.10.0网络在没有设置网关的情况下默认网关为172.16.10.1。

1. qr-03ede9be-8d 上设置了 Gateway IP 172.16.10.1,与 root namespace 中的 tap03ede9be-8d 组成 veth pair。

2. qr-3b2b1f99-dc 上设置了 Gateway IP 172.16.11.1,与 root namespace 中的 tap3b2b1f99-dc 组成 veth pair。

这里将路由信息封装在namespace中,在外部理解可以直接把namespace当做是路由,并不需要管理员去管什么是namespace,项目管理员只需要配置好vxlan网络和路由就可以实现三层通信,但在openstack的管理员视角,却巧妙地解决了网络重叠的问题。

名称不一致,只关注拓扑关系就行。

不使用namespace

使用namespace

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/687405.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于Java的景区售票信息管理系统

1.设计要求 &#xff08;1&#xff09;要求每个学生独立完成期末作品&#xff0c;在遇到问题时&#xff0c;同学之间可以相互讨论&#xff0c;但切忌复制他人程序。 &#xff08;2&#xff09;根据期末作品题目&#xff0c;自己编写程序&#xff0c;上机调试程序&#xff0c;…

uniapp视频播放器

微信小程序使用hic-video-player app(android和ios)使用好用视频播放器注&#xff1a;用的是旧版本的这个组件 目前只有app中支持竖屏横批选集 android视频全屏是通过 beforeDestroy() {// #ifdef APP-VUE// 页面关闭时关闭沉浸模式if (uni.getSystemInfoSync().platform &quo…

【FFmpeg实战】解复用实战

原文链接&#xff1a;https://blog.csdn.net/u014078003/article/details/128554153 1.封装格式相关函数 avformat_alloc_context()&#xff1a;负责申请一个AVFormatContext结构的内存,并进行简单初始化&#xff0c;这个函数可以不用手动调用&#xff0c;内部会自动调用。avf…

【无标题】NXP i.MX 6ULL工业核心板硬件说明书( ARM Cortex-A7,主频792MHz)

1 硬件资源 创龙科技SOM-TLIMX6U是一款基于NXP i.MX 6ULL的ARM Cortex-A7高性能低功耗处理器设计的低成本工业级核心板&#xff0c;主频792MHz&#xff0c;通过邮票孔连接方式引出Ethernet、UART、CAN、LCD、USB等接口。核心板经过专业的PCB Layout和高低温测试验证&…

怎么才能提高自动化测试的覆盖率,华为大佬教你一招!

前言 自动化测试一直是测试人员的核心技能&#xff0c;也是测试的重要手段之一。尤其是在今年所谓的互联网寒冬的行情下&#xff0c;各大企业对测试人员的技术水平要求的很高&#xff0c;而测试人员的技术水平主要集中在三大自动化测试领域&#xff0c;再加测试辅助脚本的编写…

智慧园区能源管理系统建设方案

随着能源资源的日益紧缺和环境保护意识的不断提高&#xff0c;智慧园区能源管理系统建设成为了当前能源管理的热点话题。智慧园区能源管理系统是一种集成化的能源管理平台&#xff0c;可以实现对园区内各种能源的实时监测、分析和管理&#xff0c;从而达到优化能源配置、提高能…

Python 学习之NumPy(一)

文章目录 1.为什么要学习NumPy2.NumPy的数组变换以及索引访问3.NumPy筛选使用介绍筛选出上面nb数组中能被3整除的所有数筛选出数组中小于9的所有数提取出数组中所有的奇数数组中所有的奇数替换为-1二维数组交换2列生成数值5—10&#xff0c;shape 为(3,5)的二维随机浮点数 NumP…

对一大厂游戏测试员的访谈实录,带你了解游戏测试

今天采访了一个在游戏行业做测试的同学&#xff0c;他所在的游戏公司是做大型多人在线角色扮演类的游戏&#xff0c;类似传奇游戏。他所在的公司目前有1200多人&#xff0c;是上市公司&#xff0c;目前游戏产品在国内海外都有市场。 因为我是一个对游戏无感的人&#xff0c;所…

【C++ 程序设计】第 7 章:输入/输出流

目录 一、流类简介 二、标准流对象 三、控制I/O格式 &#xff08;1&#xff09;流操纵符 &#xff08;2&#xff09;标志字 四、调用cout的成员函数【示例一】 五、调用 cin 的成员函数 &#xff08;1&#xff09;get() 函数 &#xff08;2&#xff09;getline()…

高考选什么专业好?适合考公务员的10大热门专业,了解一下!

高考是人生的分水岭&#xff0c;它是青春和未来的交汇处。高考成绩的优劣将对考生未来的发展产生深远的影响。作为学生们人生中重要的一站&#xff0c;高考不仅考验着学生的学业能力&#xff0c;也考验着他们的心理素质和思维能力。 高考结束后&#xff0c;众多考生面临的一个重…

FFmpeg视频转码参数详解

1 固定码率因子crf&#xff08;Constant Rate Factor&#xff09; 固定码率因子&#xff08;CRF&#xff09;是 x264 和 x265 编码器的默认质量&#xff08;和码率控制&#xff09;设置。取值范围是 0 到 51&#xff0c;这其中越低的值&#xff0c;结果质量越好&#xff0c;同…

阿里云docker启动xxljob,部署自己的定时任务

本次安装版本xxl-job-admin:2.3.0 一&#xff1a;创建xxl-job数据库的各种表 作者官方地址 下载sql执行 二&#xff1a;docker拉取xxl-job镜像 docker pull xuxueli/xxl-job-admin:2.3.0 三&#xff1a;docker启动xxl-job服务 docker run -e PARAMS"--spring.datasour…

用C语言实现经典游戏——贪吃蛇

目录 1.游戏实现思想 &#xff08;1&#xff09;定义蛇对象 &#xff08;2&#xff09;食物对象 &#xff08;3&#xff09;分数&#xff1a; &#xff08;4&#xff09;初始化蛇 &#xff08;5&#xff09;初始化食物 &#xff08;6&#xff09;修改控制台光标位置 &…

Spring Data JPA 报 HOUR_OF_DAY: 0 -> 1异常的解决过程和方案

在进行数据查询时&#xff0c;控制台报了Caused by: com.mysql.cj.exceptions.WrongArgumentException: HOUR_OF_DAY: 0 -> 1异常&#xff0c;查询得知&#xff1a;这是由于查mysql库&#xff0c;转换类型为datetime类型的字段引起的。 网上的解决方案有多种&#xff0c;大…

坐标系转换QGIS插件GeoHey

最近要将面要素&#xff08;GCJ02火星坐标系&#xff09;转WGS84&#xff0c;用程序转太麻烦了&#xff0c;找了半天没找到合适的。 插件非常好用&#xff01;&#xff01;&#xff01; 在QGIS中&#xff0c;由极海&#xff08;GeoHey&#xff09;团队提供GeoHey Toolbox插件…

Linux_清理docker容器的log

最近发现服务器硬盘空间满了&#xff0c;就排查了一番&#xff0c;发现有docker容器的log文件占用太多&#xff0c;所以要做一下清理。 首先是要找到docker容器log文件的储存位置。 1、首先在执行了一下 df -Th 命令&#xff0c;发现根目录满了。 2、然后去到根目录下&#xff…

Android项目中接入 Lint代码规范

一、概述 Android Studio 提供了一个名为 Lint 的代码扫描工具,可帮助开发者发现并更正代码结构质量方面的问题,并且无需您实际执行应用,也不必编写测试用例。系统会报告该工具检测到的每个问题并提供问题的描述消息和严重级别,以便开发者可以快速确定需要优先进行的关键改…

Linux下vim的常见命令操作(快速复查)

目录 前言1、Vim常用操作1.1、环境参数1.2、方向1.3、插入命令1.4、定位命令1.5、删除命令1.6、复制和剪切命令1.7、替换和取消命令1.8、搜索和搜索替换命令1.9、保存和退出命令1.10、其他命令1.11、可视模式 前言 本篇文章不面向新手&#xff0c;全文几乎都是命令&#xff0c;…

【Redis】多级缓存之缓存数据同步策略与Canal

目录 一、数据同步策略 1.设置有效期 2.同步双写 3.异步通知 二、Canal 三、监听Canal 一、数据同步策略 缓存数据同步的常见方式有三种&#xff1a; 1.设置有效期 给缓存设置有效期&#xff0c;到期后自动删除。再次查询时更新&#xff0c;他简单、方便&#xff0c;但…

H5学习 (一)--创建工程

文章目录 一、下载安装VS Code二、创建新文件1. 使用cmd N&#xff0c;创建一个文件2. 点击 Select a language&#xff0c;改变文件的编码类型3. 选择HTML 语言模式4. 输入 !按回车键&#xff0c;就会自动生成一个HTML模版5. 右击项目&#xff0c;选择 “Open In Default Bro…