第 10 章 Red Hat OpenStack Platform 网络服务
OpenStack Networking 服务(neutron)可让最终用户或项目定义和使用网络资源。OpenStack 网络提供了一个面向项目的 API,用于定义云中实例的网络连接和 IP 寻址,除了编排网络配置之外。随着以 API 为中心的网络服务,云架构师和管理员应考虑良好的实践来保护物理和虚拟网络基础架构和服务。
OpenStack 网络使用插件架构设计,通过开源社区或第三方服务提供 API 的可扩展性。当您评估架构设计要求时,务必要确定 OpenStack 网络核心服务中提供了哪些功能、第三方产品提供的其他服务,以及在物理基础架构上实施哪些附件服务。
本节概述了实施 OpenStack 网络时应考虑哪些进程和良好实践。
10.1. 网络架构 复制链接链接已复制到粘贴板!
OpenStack 网络是一种单机服务,可在多个节点之间部署多个进程。这些流程相互交互,以及其他 OpenStack 服务。OpenStack 网络服务的主要流程是 neutron-server,它是一个 Python 守护进程,用于公开 OpenStack Networking API,并将项目请求传递给一组插件以进行额外的处理。
OpenStack 网络组件有:
-
Neutron 服务器(
neutron-server和neutron the-plugin) - neutron-server 服务在 Controller 节点上运行,为网络 API 及其扩展(或插件)提供服务。它还强制实施每个端口的网络模型和 IP 地址。neutron-server 需要直接访问持久数据库。代理可以通过 neutron-server 间接访问数据库,它们使用 AMQP (高级消息队列协议)进行通信。 - Neutron 数据库 - 数据库是 neutron 信息的集中来源,API 记录数据库中的所有事务。这允许多个 Neutron 服务器共享相同的数据库集群,这样可保持它们同步,并允许网络配置拓扑持久性。
-
插件代理(
neutron-*-agent) - 在每个计算节点和网络节点(与 L3 和 DHCP 一起)上运行,以管理本地虚拟交换机(vswitch)配置。启用的插件决定了哪些代理被启用。这些服务需要消息队列访问,并取决于所使用的插件,访问外部网络控制器或 SDN 实现。有些插件(如 slirp (ODL)和 Open Virtual Network (OVN))不需要计算节点上任何 python 代理,只需要启用的 Neutron 插件进行集成。 -
DHCP 代理(
neutron-dhcp-agent) - 为项目网络提供 DHCP 服务。这个代理在所有插件中都是相同的,负责维护 DHCP 配置。neutron-dhcp-agent 需要消息队列访问。根据插件,可选。 -
元数据代理(
neutron-metadata-agent、neutron-ns-metadata-proxy) - 提供用于应用实例操作系统配置和用户提供的初始脚本('userdata')的元数据服务。该实施需要在 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 节点,同时仍然需要网络节点。因此,计算节点需要访问公共网络并从公共网络访问,增加其暴露,并需要客户需要额外的安全考虑,因为它们需要确保防火墙规则和安全模型支持这种方法。