云计算深度实践者。《每天5分钟玩转OpenStack》《每天5分钟玩转Docker容器技术》作者。
这是 OpenStack 实施经验分享系列的第 1 篇。 OpenStack 的 instance 是通过 Glance 镜像部署的,所以准备镜像是必须要做的工作。本节介绍 Linux 镜像的制作方法,后面还会讨论 Windows 镜像。
上一节创建了 vxlan100_net 并部署 instance,今天我们来分析底层网络结构。 控制节点 执行 ovs-vsctl show: br-int br-int 连接了如下 port: tap0d4cb13a-7a 是 vxlan100_net 的 DHCP 服务对应的 interface。
上一节我们完成了 OVS VxLAN 的配置工作,今天创建 vxlan100_net 并部署 instance。 创建 vxlan100_net 打开菜单 Admin -> Networks,点击 “Create Network” 按钮。
今天我们开始学习 OVS 如何实现 Neutron VxLAN,关于 VxLAN 的概念以及 Linux Bridge 实现,大家可以参考前面相关章节。 Open vSwitch 支持 VXLAN 和 GRE 这两种 overlay network。
上一节完我们创建了外部网络 ext_net,接下来需要将其连接到 Neutron 的虚拟路由器,这样 instance 才能访问外网。 点击菜单 Project -> Network -> Routers 进入 router 列表。
上一节完成连接外网的配置准备工作,今天就来创建 OVS 外部网络 ext_net。 进入 Admin -> Networks 菜单,点击 “Create Network” 按钮。 显示创建页面。
前面我们学习了位于不同 Neutron subnet 的 instance 可以通过 router 通信,今天开始讨论 instance 如何访问外部网络。 这里的外部网络是指的租户网络以外的网络。
上一节我们创建了 router 连通了 vlan100 和 vlan101, 今天分析router是如何工作的。首先查看控制节点的网络结构发生了什么变化: br-int 上多了两个 port: 1. qr-d295b258-45,从命名上可以推断该 interface 对应 router_100_101 的 interface (d295b258-4586),是 subnet_172_16_100_0 的网关。
Neutron Routing 服务提供跨 subnet 互联互通的能力。例如前面我们搭建了实验环境: cirros-vm1 172.16.100.3 vlan100 cirros-vm3 172.16.101.3 vlan101 这两个 instance 要通信必须借助 router。
上一节我们完成了 OVS vlan 环境的搭建,当前拓扑结构如下: cirros-vm1 位于控制节点,属于 vlan100。 cirros-vm2 位于计算节点,属于 vlan100。 cirros-vm3 位于计算节点,属于 vlan101。
前面我们创建了 OVS vlan100 并部署了 instance,今天继续创建 vlan101。 subnet IP 地址为 172.16.101.0/24。 底层网络发生了什么变化 Neutron 自动在 br-int 网桥上创建了 vlan100 dhcp 的接口 “tap1820558c-0a”。
上一节创建了 OVS vlan network vlan100,今天部署 instance 到该网络。launch 新的 instance “cirros-vm1”,网络选择 vlan100。 cirros-vm1 分配到的 IP 为 172.16.100.3。
上一节完成了 OVS vlan network 的配置准备工作,今天我们创建 vlan100。打开菜单 Admin -> Networks,点击 “Create Network” 按钮。 显示创建页面。
前面我们已经学习了 OVS 的 local 网络 和 falt 网络,今天开始讨论 vlan 网络。 vlan network 是带 tag 的网络。 在 Open vSwitch 实现方式下,不同 vlan instance 的虚拟网卡都接到 br-int 上。
上一节创建了 OVS flat network,今天我们部署 instance 并验证 flat 网络的连通性。 launch 新的 instance “cirros-vm1”,网络选择 falt_net。
上一节完成了 flat 的配置工作,今天创建 OVS flat network。Admin -> Networks,点击 “Create Network” 按钮。 显示创建页面。 Provider Network Type 选择 “Flat”。
前面讨论了 OVS local network,今天开始学习 flat network。 flat network 是不带 tag 的网络,宿主机的物理网卡通过网桥与 flat network 连接,每个 flat network 都会占用一个物理网卡。
大家新年好,CloudMan 今天给大家带来一件新年礼物。 一直以来大家都反馈 OpenStack 学习有两大障碍:1. 实验环境难搭2. 体系复杂,难道大今天我就先帮大家解决环境问题。前两天我抽空在笔记本 VirtualBox 中搭建了两节点 N 版 OpenStack 环境,并全程录制了视频。
前面已经创建了两个 OVS local network,今天详细分析它们之间的连通性。 launch 新的 instance “cirros-vm3”,网络选择 second_local_net cirros-vm3 分配到的 IP 为 172.16.1.102 cirros-vm3 被 schedule 到控制节点,其虚拟网卡也连接到 br-int。
上一节部署了 cirros-vm1 到 first_local_net,今天我们将再部署 cirros-vm2 到同一网络,并创建 second_local_net。 连接第二个 instance 到 first_local_net 以同样的方式 launch instance “cirros-vm2”,分配的 IP 为 172.16.1.4。
上一节创建了 OVS 本地网络 first_local_net,今天我们会部署一个 instance 到该网络并分析网络结构。launch 一个 instance,选择 first_local_net 网络 instance 部署成功,分配的 IP 地址为 172.16.1.3 底层网络发生了什么变化? 对于 instance “cirros-vm1”,Neutron 会在 subnet 中创建一个 port,分配 IP 和 MAC 地址,并将 port 分配给 cirros-vm1。
上一节我们完成了 OVS 的准备工作,本节从最基础的 local network 开始学习。local network 不会与宿主机的任何物理网卡连接,流量只被限制在宿主机内,同时也不关联任何的 VLAN ID。
上一节我们启用了 Open vSwitch,本节将查看当前的网络状态并介绍 Open vSwitch 涉及的各种网络设备 初始网络状态 查看一下当前的网络状态。 控制节点 ifconfig 显示控制节点上有三个网桥 br-ex,br-int 和 br-tun。
Linux Bridge 和 Open vSwitch 是目前 OpenStack 中使用最广泛的两种虚机交换机技术。 前面各章节我们已经学习了如何用 Linux Bridge 作为 ML2 mechanism driver 实现 Neutron 网络。
前面我们是直接用 curl 测试 VIP,在更为真实的场景中通常会使用 floating IP 访问 VIP。 下面我们给 VIP 关联一个 floating IP,再进行测试。 访问 Project -> Compute -> Access & Security,打开 Floating IPs 标签页,点击 “Allocate IP to Project” 按钮。
上一节我们已经配置并测试 LBaaS,今天重点分析 Neutron 是如何用 Haproxy 来实现负责均衡的。 在控制节点上运行 ip netns,我们发现 Neutron 创建了新的 namespace qlbaas-xxx。
前面我们创建了 Pool,VIP 并添加了 Member。今天将创建 Monitor,然后测试 LBaaS 是否能够正常工作。 创建 Monitor LBaaS 可以创建 monitor,用于监控 Pool Member 健康状态。
我们已经有了 Load Balance Pool “web servers”和 VIP,接下来需要往 Pool 里添加 member 并学习如何使用 cloud image。 先准备两个 instance: “Web1” 和 “Web2”。
上节完成了 LBaaS 配置,今天我们开始实现如下 LBaaS 环境。 环境描述如下: 1. 创建一个 Pool “web servers”。 2. 两个 pool member “WEB1” 和 “WEB2”,均为运行 Ubuntu cloud image 的 instance。
上一节学习了 Neutron LBaaS 的原理,今天开始实践。首先在配置中启用 LBaaS 服务。 Neutron 通过 lbaas plugin 和 lbaas agent 提供 LBaaS 服务。
Load Balance as a Service(LBaaS)是 Neutron 提供的一项高级网络服务。LBaaS 允许租户在自己的网络中创建和管理 load balancer。 load balancer 可以说是分布式系统中比较基础的组件。
前面我们学习了安全组,今天学习另一个与安全相关的服务 -- FWaaS。理解概念 Firewall as a Service(FWaaS)是 Neutron 的一个高级服务。用户可以用它来创建和管理防火墙,在 subnet 的边界上对 layer 3 和 layer 4 的流量进行过滤。
Neutron 默认的安全组规则会禁止掉所有从外面访问 instance 的流量。 本节我们会修改安全组的配置,允许 ping 和 ssh instance。有两种方法可以达到这个目的: 1. 修改 “default” 安全组。
Neutron 为 instance 提供了两种管理网络安全的方法: 安全组(Security Group)和虚拟防火墙。 安全组的原理是通过 iptables 对 instance 所在计算节点的网络流量进行过滤。
前面我们学习了L2 Population 的原理,今天讨论如何在 Neutron 中配置和启用此特性。 目前 L2 Population 支持 VXLAN with Linux bridge 和 VXLAN/GRE with OVS。
前面我们学习了 VXLAN,今天讨论跟 VXLAN 紧密相关的 L2 Population。 L2 Population 是用来提高 VXLAN 网络 Scalability 的。 通常我们说某个系统的 Scalability 好,其意思是: 当系统的规模变大时,仍然能够高效地工作。
上一节我们创建了 vxlan 100_net,今天将部署 instance 并分析网络的连通性。 launch 新的 instance “cirros-vm1”,网络选择 vxlan100。 cirros-vm1 分配到的 IP 为 172.16.100.3。
前面我们讨论了 VXLAN 的理论知识,并且在 ML2 中完成了相关配置。今天将通过 Web UI 创建 vxlan100_net 并观察节点网络结构的变化。 打开菜单 Admin -> Networks,点击 “Create Network” 按钮 显示创建页面。
上一节我们介绍了 VXLAN 的基本概念,今天介绍如何在 ML2 中启用 VXLAN。 在 /etc/neutron/plugins/ml2/ml2_conf.ini 设置 vxlan network 相关参数。
上一节我们介绍了 VXLAN 的封装格式以及 VTEP。今天我们将通过例子讨论 VXLAN 封装和转发包的过程,以及 Linux 对 VXLAN 的原生支持。 VXLAN 包转发流程 VXLAN 在 VTEP 间建立隧道,通过 Layer 3 网络传输封装后的 Layer 2 数据。
除了前面讨论的 local, flat, vlan 这几类网络,OpenStack 还支持 vxlan 和 gre 这两种 overlay network。 overlay network 是指建立在其他网络上的网络。
上一节我们通过 Web UI 创建为 cirros-vm3 分配了浮动 IP,今天将分析其工作原理。 首先查看 router 的 interface 配置: 可以看到,floating IP 已经配置到 router 的外网 interface qg-b8b32a88-03 上。
先复习一下前面我们讨论的知识。 当租户网络连接到 Neutron router,通常将 router 作为默认网关。当 router 接收到 instance 的数据包,并将其转发到外网时: 1. router 会修改包的源地址为自己的外网地址,这样确保数据包转发到外网,并能够从外网返回。
本节我们会将上节创建的 ext_net 连接到 router,并验证内外网的连通性。 更重要的,我们会分析隐藏在表象之下的原理。 将外网连接到 Neutron 的虚拟路由器,这样 instance 才能访问外网。
虽然外部网络是已经存在的网络,但我们还是需要在 Neutron 中定义外部网络的对象,这样 router 才知道如何将租户网络和外部网络连接起来。 上一节我们已经为创建外部网络配置了ML2,本节将通过 UI 创建 ext_net。
通过 router 可以实现位于不同 vlan 中的 instance 之间的通信。 接下来要探讨的问题是 instance 如何与外部网络通信。 这里的外部网络是指的租户网络以外的网络。 租户网络是由 Neutron 创建和维护的网络。
上一节我们创建了虚拟路由器“router_100_101”,并通过 ping 验证了 vlan100 和 vlan101 已经连通。 本节将重点分析其中的原理。 首先我们查看控制节点的 linux bridge 结构发生了什么变化。
上一节我们为 Neutron 虚拟路由器配置好了 L3 agent,今天将创建虚拟路由器“router_100_101”,打通 vlan100 和 vlan101。 打开操作菜单 Project -> Network -> Routers。
上一节我们介绍了路由服务(Routing)的基本功能,今天教大家如何配置。 Neutron 的路由服务是由 l3 agent 提供的。 除此之外,l3 agent 通过 iptables 提供 firewall 和 floating ip 服务。
路由服务(Routing)提供跨 subnet 互联互通功能。 例如前面我们搭建了实验环境: cirros-vm1 172.16.100.3 vlan100 cirros-vm3 172.16.101.3 vlan101 这两个 instance 要通信必须借助 router。