5.5. 网络


OpenStack 网络服务(neutron)使最终用户或项目能够定义和使用网络资源。除了编排网络配置外,OpenStack 网络还提供面向项目的 API,用于为云中的实例定义网络连接和 IP 寻址。过渡到以 API 为中心的联网服务后,云架构师和管理员应考虑保护物理网络基础架构和服务的良好做法。

OpenStack 网络设计为一个插件架构,通过开源社区或第三方服务提供 API 的可扩展性。在评估您的架构设计需求时,务必要确定 OpenStack 网络核心服务中提供的哪些功能、第三方产品所提供的任何其他服务,以及在物理基础架构中实施哪些补充服务。

本节是实施 OpenStack 网络时应考虑哪些流程和良好实践的高级概述。

5.5.1. 网络架构

OpenStack 网络是一种独立服务,可在多个节点上部署多个进程。这些进程与其他 OpenStack 服务和其他 OpenStack 服务交互。OpenStack 网络服务的主要进程是 neutron-server,它是一个 Python 守护进程,它公开 OpenStack 网络 API,并将项目请求传递到一组用于额外处理的插件。

OpenStack 网络组件包括:

  • Neutron 服务器(neutron-serverneutron-*-plugin) - neutron-server 服务在 Controller 节点上运行,以服务网络 API 及其扩展(或插件)。它还强制执行每个端口的网络模型和 IP 寻址。neutron-server 需要直接访问持久数据库。代理可通过 neutron-server 间接访问数据库,以便使用 AMQP (高级消息队列协议)进行通信。
  • Neutron 数据库 - 数据库是 neutron 信息的集中式来源,API 会记录数据库中的所有事务。这允许多个 Neutron 服务器共享同一个数据库集群,将它们保持同步,并允许持久性网络配置拓扑。
  • 插件代理(neutron-*-agent) - 在每个计算节点上运行,以及 L3 和 DHCP 代理(与 L3 和 DHCP 代理一致)来管理本地虚拟交换机(vswitch)配置。enabled 插件决定启用哪些代理。这些服务需要消息队列访问,具体要看所使用的插件、访问外部网络控制器或 SDN 实施。某些插件,如 OpenDaylight (ODL)和 Open Virtual Network (OVN),不需要计算节点上任何 python 代理,只需要为集成需要启用的 Neutron 插件。
  • DHCP 代理(neutron-dhcp-agent) - 为项目网络提供 DHCP 服务。这个代理在所有插件中都相同,它负责维护 DHCP 配置。neutron-dhcp-agent 需要消息队列访问。根据插件的可选功能。
  • 元数据代理(neutron-metadata-agent,neutron-ns-metadata-proxy) - 提供用于应用实例操作系统配置和用户提供的初始脚本(用户数据)的元数据服务。实施需要 L3 或 DHCP 代理命名空间中运行的 neutron-ns-metadata-proxy 截获 cloud-init 发送的元数据 API 请求,以代理到元数据代理。
  • L3 代理(neutron-l3-agent) - 为项目网络上虚拟机的外部网络访问提供 L3/NAT 转发。需要消息队列访问。根据插件的可选功能。
  • 网络提供程序服务(SDN server/services) - 为项目网络提供额外的网络服务。这些 SDN 服务可以通过 REST API 等通信通道与 neutron-server、neutron-plugin 和 插件代理交互。

下图显示了 OpenStack 网络组件的架构和网络流程图:

请注意,当使用分布式虚拟路由(DVR)和第 3 层高可用性(L3HA)时,这种方法会有很大变化。这些模式会改变 neutron 的安全状况,因为 L3HA 在路由器之间实现 VRRP。部署需要正确调整并强化,以帮助缓解对路由器的 DoS 攻击,而且路由器之间的本地网络流量必须被视为敏感,以帮助解决 VRRP 欺骗的威胁。DVR 将网络组件(如路由)移到 Compute 节点,同时仍然需要网络节点。因此,计算节点需要访问公共网络或从公共网络进行访问,增加其暴露,并要求客户进行额外的安全性考虑,因为需要确保防火墙规则和安全模型支持此方法。

5.5.1.1. Neutron 服务在物理服务器上放置

本节介绍了包括控制器节点、网络节点以及一组用于运行实例的计算节点的标准架构。要为物理服务器建立网络连接,典型的 neutron 部署最多可有四个不同的物理数据中心网络:

  • 管理网络 - 用于 OpenStack 组件之间的内部通信。此网络上的 IP 地址应该只能在数据中心访问,并被视为管理安全区域。默认情况下,管理网络角色由 内部 API 网络执行。
  • 客户机网络 - 用于云部署中的虚拟机数据通信。此网络的 IP 寻址要求取决于所使用的 OpenStack 网络插件,以及项目所提出的虚拟网络的网络配置选择。此网络被视为客户机安全区域。
  • 外部网络 - 在一些部署场景中用于为虚拟机提供互联网访问功能。此网络上的 IP 地址应该可以被 Internet 上的任何人访问。此网络被视为在公共安全区中。该网络由 neutron External networks 提供。这些 neutron VLAN 托管在外部网桥上。它们不是由 Red Hat OpenStack Platform director 创建,而是在部署后由 neutron 创建。
  • 公共 API 网络 - 将所有 OpenStack API (包括 OpenStack 网络 API)公开给项目。此网络上的 IP 地址应该可以被 Internet 上的任何人访问。这可能与外部网络相同,因为可以为外部网络创建子网,它使用 IP 分配范围小于 IP 块中的完整 IP 地址范围。此网络被视为在公共安全区中。

建议您将此流量划分为不同的区。如需更多信息,请参见下一节。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat