用虚拟 router 连通 subnet - 每天5分钟玩转 OpenStack(141)

Neutron Routing 服务提供跨 subnet 互联互通的能力。
例如前面我们搭建了实验环境:

cirros-vm1      172.16.100.3        vlan100
cirros-vm3      172.16.101.3        vlan101

这两个 instance 要通信必须借助 router。可以是物理 router 或者虚拟 router。
下面详细讨论 Neutron 的虚拟 router 实现。

配置 l3 agent

Neutron 的路由服务是由 l3 agent 提供的。
l3 agent 需要正确配置才能工作,配置文件为 /etc/neutron/l3_agent.ini,位于控制节点或网络节点。

devstack 已经帮我们配置默认的属性,大部分情况下不需要修改就可以使用。

external_network_bridge 指定连接外网的网桥,默认是 br-ex。

interface_driver 是最重要的选项,如果 mechanism driver 是 open vswitch,则:

interface_driver = neutron.agent.linux.interface.OVSInterfaceDriver

如果选用 linux bridge,则:

interface_driver = neutron.agent.linux.interface.BridgeInterfaceDriver

l3 agent 运行在控制或网络节点。

下面将创建虚拟 router “router_100_101”,打通 vlan100 和 vlan101。

创建 router

进入操作菜单 Project -> Network -> Routers。

点击 “Create Router” 按钮。

router 命名为 “router_100_101”,点击 “Create Router” 按钮确认。

router_100_101 创建成功。

接下来需要将 vlan100 和 vlan101 连接到 router_100_101。
点击 “router_100_101” 链接进入 router 的配置页面,在 “Interfaces” 标签中点击 “Add Interface” 按钮。

选择 vlan100 的 subnet_172_16_100_0,点击 “Add Interface” 确认。

用同样的方法添加 vlan101 的 subnet_172_16_101_0。

完成后,可以看到 router_100_101 有了两个 interface,其 IP 正好是 subnet 的 Gateway IP 172.16.100.1 和 172.16.101.1。

到这里,我们可以预见:
1. router_100_101 已经连接了 subnet_172_16_100_0 和 subnet_172_16_101_0。
2. router_100_101 上已经设置好了两个 subnet 的 Gateway IP。
3. cirros-vm1 和 cirros-vm3 应该可以通信了。

通过 PING 测试一下:

不出所料,cirros-vm1 和 cirros-vm3 能通信了。

下一节我们详细探究 router_100_101 是如何起作用的。

时间: 2024-09-20 14:56:46

用虚拟 router 连通 subnet - 每天5分钟玩转 OpenStack(141)的相关文章

虚拟 ​router 原理分析- 每天5分钟玩转 OpenStack(101)

上一节我们创建了虚拟路由器"router_100_101",并通过 ping 验证了 vlan100 和 vlan101 已经连通. 本节将重点分析其中的原理. 首先我们查看控制节点的 linux bridge 结构发生了什么变化. vlan101 的 bridge 上多了一个 tape17162c5-00,从命名上可以推断该 TAP 设备对应 router_100_101 的 interface (e17162c5-00fa). vlan100 的 bridge 上多了一个 tapd

Neutron Router 工作原理 - 每天5分钟玩转 OpenStack(142)

上一节我们创建了 router 连通了 vlan100 和 vlan101, 今天分析router是如何工作的. 首先查看控制节点的网络结构发生了什么变化: br-int 上多了两个 port:  1. qr-d295b258-45,从命名上可以推断该 interface 对应 router_100_101 的 interface (d295b258-4586),是 subnet_172_16_100_0 的网关.  2. qr-2ffdb861-73,从命名上可以推断该 interface 对

写在最前面 - 每天5分钟玩转 OpenStack(1)

<每天5分钟玩转 OpenStack>是一个 OpenStack 教程,这是第 1 篇. 这个教程有下面两个特点: 系统讲解 OpenStack 从架构到各个组件:从整体到细节逐一讨论 重实践并兼顾理论 主要从实际操作的角度带着大家学习 OpenStack.   为啥要写这个? 简单回答是:因为OpenStack 学习难度大,但如果掌握了价值会很大 先做一个自我介绍吧. 本人网名CloudMan,在 IT 这个行当已经摸爬滚打了十多年,05年之前是搞上层应用开发的,那时候 Java 比较火,所

理解 Neutron FWaaS - 每天5分钟玩转 OpenStack(117)

前面我们学习了安全组,今天学习另一个与安全相关的服务 -- FWaaS. 理解概念 Firewall as a Service(FWaaS)是 Neutron 的一个高级服务.用户可以用它来创建和管理防火墙,在 subnet 的边界上对 layer 3 和 layer 4 的流量进行过滤. 传统网络中的防火墙一般放在网关上,用来控制子网之间的访问. FWaaS 的原理也一样,是在 Neutron 虚拟 router 上应用防火墙规则,控制进出租户网络的数据. FWaaS 有三个重要概念: Fir

Routing 功能概述 - 每天5分钟玩转 OpenStack(98)

路由服务(Routing)提供跨 subnet 互联互通功能. 例如前面我们搭建了实验环境: cirros-vm1      172.16.100.3        vlan100 cirros-vm3      172.16.101.3        vlan101 这两个 instance 要通信必须借助 router. 可以是物理 router 或者虚拟 router. 物理 router 使用物理 router,如下图所示: 接入的物理 router 有两个 interface ip:

cloud-init 典型应用 - 每天5分钟玩转 OpenStack(174)

本节介绍几个 cloud-init 的典型应用:设置 hostanme,设置用户初始密码,安装软件.  设置 hostname cloud-init 默认会将 instance 的名字设置为 hostname.但这样不太方便,有时希望能够将二者分开,可利用 cloud-init 的set_hostname 模块实现.set_hostname 它会查询 metadata 中 hostname 信息,默认值就是 instance 的名字.我们可以指定自己的 hostname,方法是将下面的内容传给

学习 OpenStack 的方法论 - 每天5分钟玩转 OpenStack(150)

作为 OpenStack 的核心教程,我们已经到了最后总结的部分. OpenStack 目前已经有好几十个模块,本教程讨论的是最最重要的核心模块:Keystone,Nova,Glance,Cinder 和 Neutron.请大家看下图: 此图截自 https://www.openstack.org/software/project-navigator/,这是 OpenStack 官方定义的 6 个 Core Service.每个模块都会从三个维度来衡量: ADOPTION - 采用度 MATUR

创建 router 连通 subnet- 每天5分钟玩转 OpenStack(100)

上一节我们为 Neutron 虚拟路由器配置好了 L3 agent,今天将创建虚拟路由器"router_100_101",打通 vlan100 和 vlan101. 打开操作菜单 Project -> Network -> Routers. 点击 "Create Router" 按钮 router 命名为 "router_100_101",点击 "Create Router" 按钮确认. router_100_10

将 ext_net 连接到 router - 每天5分钟玩转 OpenStack(145)

上一节完我们创建了外部网络 ext_net,接下来需要将其连接到 Neutron 的虚拟路由器,这样 instance 才能访问外网. 点击菜单 Project -> Network -> Routers 进入 router 列表. 点击 router_100_101 的 "Set Gateway" 按钮. 在 "External Network" 下拉列表中选择 ext_net,点击 "Set Gateway". 外网设置成功.我们