跳转到: 导航, 搜索

Neutron/Networking-vSphere

概述

基于 ESX 的部署的 OVSvApp 解决方案

当云运营商希望使用开源组件在 vSphere 上使用 OpenStack 时,他们只能依赖 nova-network。目前,没有可行的开源参考实现来支持 ESX 部署,从而帮助云运营商利用 Neutron 提供的某些高级网络功能。在这里,我们讨论为云运营商提供一个 Neutron 支持的 vSphere 部署解决方案,该解决方案采用名为 OVSvApp VM 的服务 VM,通过该 VM 引导 ESX 租户 VM 的流量。该解决方案的价值在于在 ESX 环境中更快地部署解决方案,以及在添加 DVR、LBaaS、VPNaaS 等新的 OpenStack 功能时所需的最小工作量。为了应对上述挑战,OVSvApp 解决方案允许客户在 ESX/ESXi 超visor 上托管 VM,同时具有动态创建分布式虚拟交换机/虚拟标准交换机上的端口组的灵活性,然后通过 OVSvApp VM 引导其流量,该 VM 为租户 VM 通信和基于 OpenStack 的安全组功能提供 VLAN 和 VXLAN 底层基础设施。

OVSvApp 优势

  • 允许供应商将其投资的 ESX 工作负载迁移到云端。
  • 允许供应商部署基于 ESX 的云,具有原生 OpenStack,学习曲线更短(或)无需学习曲线。
  • 允许供应商利用 Neutron 提供的某些高级网络功能。
  • 无需依赖 nova-network(已弃用)。
  • 无需从任何供应商处获得特殊许可证即可部署、运行和管理。
  • 与 OpenStack Kilo 版本对齐。
  • 可在 OpenStack Neutron 的“openstack/networking-vsphere”项目中的上游提供 https://github.com/openstack/networking-vsphere

 

OVSvApp 解决方案架构

OVSvApp-Architecture.png

OVSvApp VM

OVSvApp 解决方案包含一个名为 OVSvApp VM(蓝色)的服务 VM,该 VM 托管在集群内的每个 ESXi 超visor 上,以及两个 vSphere 分布式交换机 (VDS)。OVSvApp VM 运行 Ubuntu 12.04 LTS 或更高版本的客户操作系统,并安装了 Open vSwitch 2.1.0 或更高版本。它还运行一个名为 OVSvApp agent 的代理。

对于 VLAN 配置,每个数据中心需要两个 VDS,对于 VXLAN,每个集群需要两个 VDS。第一个 VDS(命名为 vSphere Distributed Switch 1)不需要任何上行链路,这意味着没有外部网络连接,但将提供与租户 VM 和 OVSvApp VM 的连接。每个租户 VM 都与一个端口组(VLAN)关联。租户 VM 的数据流量通过各自的端口组,并通过另一个名为 Trunk Port group 的端口组(定义为“VLAN 类型”为“VLAN Trunking”,并且“VLAN trunk range”设置为租户 VM 流量的范围 - VLAN 范围,不包括如下所述的管理 VLAN)与 OVSvApp VM 关联,从而到达 OVSvApp VM。

第二个 VDS(命名为 vSphere Distributed Switch 2)具有一个或两个上行链路,并为 OVSvApp VM 提供管理和数据连接。OVSvApp VM 还与另外两个端口组关联,即 Management Port group(定义为“VLAN 类型”为“None”或“VLAN”,并在“VLAN ID”中设置特定的 VLAN Id,或“VLAN Trunking”,并设置“VLAN trunk range”为管理 VLAN 的范围)和 Data Port group(定义为“VLAN 类型”为“VLAN Trunking”,并且“VLAN trunk range”设置为租户 VM 流量的范围 - VLAN 范围,不包括管理 VLAN)。管理 VLAN 和数据 VLAN 可以共享相同上行链路,也可以位于不同的上行链路,并且这些上行链路端口可以是同一个 VDS 的一部分,也可以位于单独的 VDS 上。

Nova Compute

nova compute 是 ESX 的 nova-compute 服务。整个 ESX 部署只需要一个此服务的实例(不像 KVM,KVM 需要在每个 KVM Host 上运行 nova-compute 服务)。此 nova-compute 服务的单个实例可以在 OpenStack 控制节点本身(或云中的任何其他服务节点)中运行。nova-compute 包含针对 OVSvApp 解决方案定制的 OVSvApp Nova VCDriver。

Neutron 服务器

neutron server 向 OVSvApp Agent 提供租户网络和端口信息。它包含 OVSvApp 薄 Ml2 机制驱动程序。

OVSvApp VM 组件

OVSvApp-Internals.png


运行 OVSvApp L2 Agent 的 OVSvApp VM 等待来自 vCenter Server 的集群事件,例如“VM_CREATE”、“VM_DELETE”和“VM_UPDATE”,并相应地采取行动。OVSvApp agent 还与 Neutron Server 通信,以获取 VM 每端口的端口详细信息以及与 VM 的每个端口关联的安全组规则,从而在 OVSvApp VM 内使用 FLOW 编程 OpenvSwitch。

OpenvSwitch 包含三个 OVS 桥,即 Security Bridge(br-sec)、Integration Bridge(br-int) 和 Physical Connectivity Bridge(br-ethx)(在 VLAN 的情况下),以及 Tunnel Bridge(br-tun)(在 VXLAN 的情况下)。

Security Bridge (br-sec) 接收租户 VM 流量,并在 VM 端口级别应用安全组规则。它包含基于租户的 OpenStack 安全组规则的 Open vSwitch FLOW,这些规则将允许/阻止租户 VM 的流量。使用基于 Open vSwitch 的防火墙驱动程序来实现安全组功能,类似于在 KVM 计算节点中使用的 iptable 防火墙驱动程序。

Integration Bridge (br-int) 连接 Security Bridge 和 Physical Connectivity 或 Tunnel Bridge。拥有 Integration Bridge 的原因是最大程度地利用现有的 OpenStack Open vSwitch L2 agent 功能。

Physical Connectivity Bridge (br-ethx) 提供与物理网络接口卡的连接(VLAN 配置)。

Tunnel Bridge (br-tun) 用于建立 VXLAN 隧道以转发网络上的租户流量。

VLAN/VXLAN 配置

为了支持 2^24 个网络(可扩展的网络),使用了全局 VNI(虚拟网络标识符)或全局 VLAN id 到本地 VLAN Id 映射的间接映射方法,该方法适用于集群内。因此,一个全局 VNI 或全局 VLAN 可以映射到集群中的不同本地 VLAN Id。因此,在 vCenter 侧,在端口组级别,将与给定的全局 VNI 或全局 VLAN 关联的本地 vlan。

HP OVSvApp VXLAN.PNG

安全组

安全组 - 流量过滤规则应用于租户 VM 端口。使用基于 Open vSwitch 的防火墙 (OVSFirewallDriver) 对 Security Bridge 上的 Open vSwitch FLOW 进行编程以实施安全规则。基于 neutron server 提供的端口的安全规则,OVSFirewallDriver 将安全规则转换为 Open vSwitch 规则并相应地编程 Security Bridge。OVSvApp agent 中的一个线程会持续监视与安全规则相关的任何更新,并相应地将其应用于 Security Bridge。

vMotion

VMWare 分布式资源调度器 (DRS) 使用 vMotion 在集群内实时迁移 VM。为了通过 OVSvApp 解决方案支持 vMotion,将在集群内的所有 OVSvApp VM 上填充类似的 FLOW,即:当 vCenter server 在 ESXi 超visor 上启动租户 VM 时,与租户 VM 相关的 FLOW 不仅会添加到其托管的 OVSvApp VM 上,还会同时添加到集群内的所有其他 OVSvApp VM 上。因此,当租户 VM 从一个 ESXi 超visor 迁移到另一个 ESXi 超visor 时,将立即提供必要的 FLOW 以实现不间断的网络连接。应注意必要的 VMWare vMotion 先决条件。

部署

使用 Devstack

在 Devstack 中启用

https://github.com/openstack/networking-vsphere/tree/master/devstack

Devstack 设置

https://github.com/openstack/networking-vsphere/blob/master/devstack/settings

参考文献

源代码:https://github.com/openstack/networking-vsphere

OVSvApp 解决方案白皮书:https://github.com/hp-networking/ovsvapp/blob/master/OVSvApp_Solution.pdf

符合 Kilo 规范的 ESX 蓝图 - neutron-specs 规范:https://blueprints.launchpad.net/neutron/+spec/ovsvapp-solution-for-esx-deployments

OVSvApp 解决方案:具有 VLAN 的 ESX https://github.com/openstack/networking-vsphere/blob/master/specs/kilo/ovsvapp_esx_vlan.rst

符合 Kilo 规范的 ESX 蓝图 - neutron-specs 规范:https://blueprints.launchpad.net/neutron/+spec/ovsvapp-esxi-vxlan

OVSvApp 解决方案:具有 VXLAN 的 ESX https://github.com/openstack/networking-vsphere/blob/master/specs/kilo/ovsvapp_esx_vxlan.rst

基于 Open vSwitch 的安全组:Open vSwitch 防火墙驱动程序实现:https://blueprints.launchpad.net/neutron/+spec/ovs-firewall-driver