Red Hat OpenDaylight 安装和配置指南
使用 Red Hat OpenStack Platform 安装和配置 OpenDaylight
摘要
前言 复制链接链接已复制到粘贴板!
本文档论述了如何使用 OpenDaylight 软件定义网络(SDN)控制器部署 Red Hat OpenStack Platform 13。OpenDaylight 控制器是 neutron ML2/OVS 插件和 L2 和 L3 代理的简易替代品,并在 Red Hat OpenStack 环境中提供网络虚拟化。
第 1 章 概述 复制链接链接已复制到粘贴板!
1.1. 什么是 OpenDaylight? 复制链接链接已复制到粘贴板!
OpenDaylight 平台是以 Java 编写的可编程 SDN 控制器,可用于 OpenStack 环境的网络虚拟化。控制器架构由隔离的北向和南向接口组成。对于 OpenStack 集成目的,主北向接口使用 NeutronNorthbound 项目,该项目与 neutron (即 OpenStack 网络服务)通信。南向 OpenDaylight 项目( OVSDB 和 OpenFlow 插件)用于与 Open vSwitch (OVS)控制和数据平面通信。将 neutron 配置转换为网络虚拟化的主要 OpenDaylight 项目是 NetVirt 项目。
1.2. OpenDaylight 如何与 OpenStack 配合使用? 复制链接链接已复制到粘贴板!
1.2.1. 默认 neutron 架构 复制链接链接已复制到粘贴板!
neutron 参考架构使用一系列代理来管理 OpenStack 中的网络。这些代理作为不同的插件提供给 neutron。核心插件用于管理 第 2 层 覆盖技术和数据平面类型。服务插件用于在 OSI 模型(如防火墙、DHCP、路由和 NAT)中管理 第 3 层 或更高的网络操作。
默认情况下,Red Hat OpenStack Platform 使用 Modular Layer 2 (ML2)核心插件和 OVS 机制驱动程序,后者提供一个代理来配置每个 Compute 和 Controller 节点上的 OVS。服务插件、DHCP 代理、元数据代理以及 L3 代理在控制器上运行。
1.2.2. 基于 OpenDaylight 的网络架构 复制链接链接已复制到粘贴板!
OpenDaylight 通过提供自己的驱动程序(名为 networking-odl )与 ML2 核心插件集成。这消除了在每个节点上使用 OVS 代理的需求。OpenDaylight 可以在环境中直接编程每个 OVS 实例,无需个别节点上的任何代理。对于 第 3 层 服务,neutron 配置为使用 OpenDaylight L3 插件。这种方法减少了处理路由和网络地址转换(NAT)的多个节点上的代理数量,因为 OpenDaylight 可以通过直接编程数据平面来处理分布式虚拟路由功能。neutron DHCP 和元数据代理仍然用于管理 DHCP 和元数据(cloud-init)请求。
OpenDaylight 提供 DHCP 服务。但是,在部署当前 Red Hat OpenStack Platform director 架构时,使用 neutron DHCP 代理提供高可用性(HA),并对虚拟机(VM)实例元数据(cloud-init)实例元数据(cloud-init)实例元数据(cloud-init)提供支持,因此红帽建议您部署 neutron DHCP 代理,而不是依赖 OpenDaylight 来实现这样的功能。
1.3. 什么是 Red Hat OpenStack Platform director 及其设计? 复制链接链接已复制到粘贴板!
Red Hat OpenStack Platform director 是一个安装和管理完整的 OpenStack 环境的工具组,它主要基于 OpenStack 项目 - TripleO("OpenStack-On-OpenStack" 的缩写)。它主要基于 OpenStack TripleO (OpenStack-On-OpenStack)项目。
该项目使用 OpenStack 组件安装全面运行的 OpenStack 环境。它还包括新的 OpenStack 组件,用于置备和控制裸机系统,以作为 OpenStack 节点运行。通过此方法,您可以安装精益且强大的完整 Red Hat OpenStack Platform 环境。
Red Hat OpenStack Platform director 使用两个主要概念: undercloud 和 overcloud。undercloud 用来安装并配置 overcloud。有关 Red Hat OpenStack Platform director 架构的更多信息,请参阅 Director 安装和使用。
图 1.1. Red Hat OpenStack Platform director director的关闭undercloud 和 overcloud
Red Hat OpenStack Platform director 引进了可组合服务和自定义角色的概念。可组合服务形成隔离的资源,可在需要时为每个角色包含和启用。自定义角色允许用户独立于默认 Controller 和 Compute 角色来创建自己的角色。用户现在有选择选择它们要部署的 OpenStack 服务,哪些节点将托管它们。
添加了两个服务以将 OpenDaylight 与 director 集成:
- 用于运行 OpenDaylight SDN 控制器的 OpenDaylightApi 服务
- 用于在各个节点上配置 OVS 的 OpenDaylightOv 服务,以正确地与 OpenDaylight 进行通信。
默认情况下,OpenDaylightApi 服务在 Controller 角色上运行,而 OpenDaylightOvs 服务在 Controller 和 Compute 角色上运行。OpenDaylight 通过扩展 OpenDaylightApi 服务实例的数量来提供高可用性(HA)。默认情况下,将控制器的数量扩展到三个或更多个自动启用 HA。有关 OpenDaylight HA 架构的更多信息,请参阅 OpenDaylight 的高可用性和集群。
图 1.2. OpenDaylight 和 OpenStackFeature-ganeshabase 架构
1.3.2. Red Hat OpenStack Platform director 中的网络隔离 复制链接链接已复制到粘贴板!
Red Hat OpenStack Platform director 可将个别服务配置为特定的预定义网络类型。这些网络流量类型包括:
| IPMI | 节点的电源管理网络。在安装 undercloud 之前,您必须配置此网络。 |
| 调配(ctlplane) | director 使用此网络流量类型通过 DHCP 和 PXE 引导部署新节点,并在 overcloud 裸机服务器上编排 OpenStack 平台安装。在安装 undercloud 前,您必须配置网络。或者,操作系统镜像可直接由 ironic 部署。在这种情况下,不需要 PXE 引导。 |
| 内部 API (internal_api) | 内部 API 网络用于使用 API 通信、RPC 消息和数据库通信的 OpenStack 服务之间的通信,以及负载均衡器后面的内部通信。 |
| 租户(租户) | Neutron 利用 VLAN (每个租户网络是一个网络 VLAN)或覆盖隧道,为各个租户提供自己的网络。网络流量在各个租户网络内被隔离。如果使用隧道连接,则多个租户网络可以使用相同的 IP 地址范围,且不会出现任何冲突。 |
虽然代码库中都提供通用路由封装(GRE)和虚拟 eXtensible Local Area Network ( VXLAN ),但 VXLAN 是推荐的隧道协议。VXLAN 在 RFC 7348 中定义。每次使用隧道时,本文档的其余部分集中于 VXLAN。
| 存储(存储) | 块存储、NFS、iSCSI 及其他.理想情况下,这会被隔离成一个完全独立的交换机光纤,以实现性能优化。 |
| 存储管理(storage_mgmt) | OpenStack Object Storage (swift)使用此网络在参与副本节点之间同步数据对象。代理服务充当用户请求和底层存储层之间的中间接口。代理接收传入请求,并找到必要的副本来检索请求的数据。使用 Ceph 后端通过存储管理网络连接的服务,因为它们不直接与 Ceph 交互,而是使用前端服务。请注意,RBD 驱动程序是例外,因为此流量直接连接到 Ceph。 |
| external/Public API | 此 API 托管用于图形系统管理的 OpenStack Dashboard (horizon),以及执行传入实例流量的 SNAT。如果外部网络使用私有 IP 地址(根据 RFC-1918),则必须为来自互联网的任何流量执行进一步的 NAT。 |
| 浮动 IP | 允许传入流量使用浮动 IP 地址和固定 IP 地址(分配给租户网络中的实例的固定 IP 地址)之间的一对一的 IPv4 地址映射来访问实例。常见配置是组合外部和浮动 IP 网络,而不是维护一个。 |
| 管理 | 提供系统管理功能(如 SSH 访问、DNS 流量和 NTP 流量)的访问。此网络还充当不控制器的节点的网关。 |
在典型的 Red Hat OpenStack Platform 安装中,网络类型的数量通常会超过物理网络链路的数量。为了将所有网络都连接到正确的主机,overcloud 可以使用 802.1q VLAN 标记来为每个接口提供多个网络。大多数网络都是隔离的子网,但有些网络需要 第 3 层 网关来为互联网访问或基础架构网络连接提供路由。
对于 OpenDaylight,相关网络包含 内部 API 和 租户 服务,它们映射到 ServiceNetMap 内的各个网络。默认情况下,ServiceNetMap 将 OpenDaylightApi 网络映射到 Internal API 网络。此配置意味着到 neutron 的北向流量以及 OVS 的南向流量被隔离到 内部 API 网络。
由于 OpenDaylight 使用分布式路由架构,每个计算节点应当连接到 浮动 IP 网络。默认情况下,Red Hat OpenStack Platform director 假定 外部网络 将在物理 neutron 网络 datacentre 上运行,后者映射到 OVS 网桥 br-ex。因此,您必须在 Compute 节点 NIC 模板的默认配置中包含 br-ex 网桥。
图 1.3. OpenDaylight 和 OpenStack将Network 隔离示例
1.3.3. 网络和防火墙配置 复制链接链接已复制到粘贴板!
在一些部署中,如限制性防火墙时,您可能需要手动配置防火墙,以启用 OpenStack 和 OpenDaylight 服务流量。
默认情况下,OpenDaylight Northbound 使用 8080 端口。为了不与 swift 服务冲突,这也使用 8080 端口,在使用 Red Hat OpenStack Platform director 安装时,OpenDaylight 端口被设置为 8081。Red Hat OpenDaylight 解决方案中的南向量配置为侦听端口 6640 和 6653,OVS 实例通常会连接到其中。
在 OpenStack 中,每个服务通常具有自己的虚拟 IP 地址(VIP)和 OpenDaylight 的行为方式。HAProxy 配置为打开 8081 端口到公共端口,并控制 OpenStack 中已存在的 VIP。VIP 和端口显示到 ML2 插件,neutron 会发送所有通信。OVS 实例直接连接到运行 OpenDaylight 为南向运行的节点的物理 IP。
| Service | 协议 | 默认端口 | Network |
|---|---|---|---|
| OpenStack Neutron API | TCP | 9696 | 内部 API |
| OpenStack Neutron API (SSL) | TCP | 13696 | 内部 API |
| OpenDaylight Northbound | TCP | 8081 | 内部 API |
| OpenDaylight 南向:OVSDB | TCP | 6640 | 内部 API |
| OpenDaylight 南向:OpenFlow | TCP | 6653 | 内部 API |
| OpenDaylight 高可用性 | TCP | 2550 | 内部 API |
| VXLAN | UDP | 4789 | 租户 |
表 1:网络和防火墙配置
本节重点介绍与 OpenDaylight 集成相关的服务和协议,且并不详尽。有关在 Red Hat OpenStack 上运行的服务所需的网络端口的完整列表,请参阅 Red Hat OpenStack Platform 指南的防火墙规则。
第 2 章 您需要运行 OpenDaylight? 复制链接链接已复制到粘贴板!
以下部分包含有关使用 OpenDaylight 的 overcloud 部署要求的信息。您必须有足够的计算资源才能正确安装和运行 Red Hat OpenDaylight。使用以下信息来了解最低要求:
2.1. Compute 节点要求 复制链接链接已复制到粘贴板!
Compute 节点负责在启动虚拟机实例后运行虚拟机实例。所有 Compute 节点都必须支持硬件虚拟化。它们还必须有足够的内存和磁盘空间来支持其托管的虚拟机实例的要求。
| 处理器 | 支持 Intel 64 或 AMD64 CPU 扩展并启用了 AMD-V 或 Intel VT 硬件虚拟化扩展的 64 位处理器。我们推荐所使用的处理器最少有 4 个内核。 |
| 内存 | 至少 6 GB RAM。根据您要提供给虚拟机实例的内存大小,在此要求基础上增加额外的 RAM。 |
| 磁盘空间 | 最少具有 40GB 可用磁盘空间。 |
| 网络接口卡 | 最少一个 1 Gbps 网络接口卡,但建议在生产环境中至少使用两个网络接口卡(NIC)。对绑定的接口使用额外的网络接口卡,或代理标记的 VLAN 流量。有关 NIC 的更多信息,请参阅 测试 NIC。 |
| 电源管理 | 每个 Controller 节点都需要在服务器的主板上有一个被支持的电源管理接口(如 IPMI)。 |
2.2. Controller 节点要求 复制链接链接已复制到粘贴板!
Controller 节点负责在 Red Hat OpenStack Platform 环境中托管核心服务,如 horizon 仪表板、后端数据库服务器、keystone 身份验证和高可用性服务。
| 处理器 | 支持 Intel 64 或 AMD64 CPU 扩展的 64 位处理器。 |
| 内存 | 最小内存量为 20 GB。但是,建议的内存量取决于 CPU 内核数。使用以下计算作为指南: 控制器 RAM 最小计算: 每个内核使用 1.5 GB 内存。例如,一台有 48 个内核的计算机必须具有 72 GB RAM。 控制器 RAM 建议计算: 每个内核使用 3 GB 内存。例如,一台有 48 个内核的计算机必须具有 144 GB RAM。有关衡量内存要求的更多信息,请参阅红帽客户门户网站上的 高可用性控制器的 Red Hat OpenStack Platform 硬件要求。 |
| 磁盘空间 | 最少具有 40GB 可用磁盘空间。 |
| 网络接口卡 | 最少两个 1 Gbps 网络接口卡。对绑定的接口使用额外的网络接口卡,或代理标记的 VLAN 流量。 |
| 电源管理 | 每个 Controller 节点都需要在服务器的主板上有一个被支持的电源管理接口(如 IPMI)。 |
第 3 章 在 overcloud 上安装 OpenDaylight 复制链接链接已复制到粘贴板!
本文档侧重于 OpenDaylight 安装。在部署 OpenDaylight 前,您必须确保具有正常工作的 undercloud 环境,并且 overcloud 节点连接到物理网络。
请参阅使用 Director 安装和使用指南中的 CLI 工具 安装 Undercloud 和 配置基本 Overcloud 要求,它描述了部署 undercloud 和 overcloud 所需的步骤。
在 Red Hat OpenStack 平台中安装 OpenDaylight 有几种方法。以下小节介绍了 OpenDaylight 的最有用的场景,以及如何安装它们。
3.1. 了解默认配置和自定义设置 复制链接链接已复制到粘贴板!
安装 OpenDaylight 的建议方法是使用默认环境文件 neutron-opendaylight.yaml,并将它作为参数传递给 undercloud 上的部署命令。这将部署 OpenDaylight 的默认安装。
其他 OpenDaylight 安装和配置场景基于这个安装方法。您可以通过在部署命令中提供特定的环境文件,以不同的场景部署 OpenDaylight。
3.1.1. 了解默认环境文件 复制链接链接已复制到粘贴板!
默认环境文件是 /usr/share/openstack-tripleo-heat-templates/environments/services 目录中的 neutron-opendaylight.yaml。此环境文件会启用或禁用 OpenDaylight 支持的服务。该环境文件还定义了 director 在部署期间设置的必要参数。
以下文件是一个 neutron-opendaylight.yaml 文件示例,可用于基于 Docker 的部署:
Red Hat OpenStack Platform director 使用 resource_registry 将部署的资源映射到对应的资源定义 yaml 文件。服务是您可以映射的一个资源类型。如果要禁用特定的服务,请设置值 OS::Heat::None。在默认的 文件中,启用 OpenDaylightApi 和 OpenDaylightOvs 服务,而默认的 neutron 代理被明确禁用,因为 OpenDaylight 会继承其功能。
您可以使用 heat 参数通过 director 配置部署的设置。您可以使用环境文件的 parameter_defaults 部分覆盖其默认值。
在本例中,NeutronEnableForceMetadata、NeutronMechanismDrivers 和 NeutronServicePlugins 参数设置为启用 OpenDaylight。
本指南稍后会提供其他服务及其配置选项列表。
3.1.2. 配置 OpenDaylight API 服务 复制链接链接已复制到粘贴板!
您可以更改 /usr/share/openstack-tripleo-heat-templates/puppet/services/opendaylight-api.yaml 文件中的默认值以满足您的需要。不要直接覆盖此文件中的设置。复制此文件并保留原始备份解决方案。仅修改重复项并将重复内容传递给部署命令。
后者环境文件中的参数将覆盖之前环境文件中设置的参数。确保您注意环境文件的顺序,以避免意外覆盖参数。
3.1.2.1. 可配置选项 复制链接链接已复制到粘贴板!
当您配置 OpenDaylight API 服务时,您可以设置几个参数:
|
|
用于北向通信的端口。默认值为 |
|
|
OpenDaylight 的登录用户名。默认值为 |
|
|
OpenDaylight 的登录密码。默认值为 |
|
|
启用 OpenDaylight 充当 DHCP 服务。默认值为 |
|
|
在 OpenDaylight 中引导的以逗号分隔的功能列表。默认值为 |
|
|
用于 REST 的 L7 协议。默认值为 |
|
|
定义是否管理 OpenDaylight 存储库。默认值为 |
|
|
OpenDaylight 使用的 SNAT 机制。选择 |
|
|
OpenDaylight 的日志记录机制。选择 |
|
|
OpenDaylight TLS 密钥存储的密码。默认值为 |
|
|
启用或禁用内部网络中的 TLS。您可以使用值 |
|
|
如果为内部网络中的服务启用 TLS,则必须使用 |
有关如何使用 TLS 部署的更多信息,请参阅高级 Overcloud 自定义指南。
3.1.3. 配置 OpenDaylight OVS 服务 复制链接链接已复制到粘贴板!
您可以更改 /usr/share/openstack-tripleo-heat-templates/puppet/services/opendaylight-ovs.yaml 文件中的默认值以满足您的需要。不要直接覆盖此文件中的设置。复制此文件并保留原始备份解决方案。仅修改重复项并将重复内容传递给部署命令。
后者环境文件中的参数将覆盖之前环境文件中设置的参数。确保您注意环境文件的顺序,以避免意外覆盖参数。
3.1.3.1. 配置选项 复制链接链接已复制到粘贴板!
当您配置 OpenDaylight OVS Service 时,您可以设置几个参数:
|
|
用于向 OpenDaylight 进行北向通信的端口。默认值为 |
|
|
用于 REST 访问的第 7 层协议。默认值为 |
|
|
在 OVS 连接前,验证 OpenDaylight 的 URL 已完全启动。默认值为 |
|
|
以逗号分隔的逻辑网络和物理接口之间的映射列表。VLAN 部署需要此设置。默认值为 |
|
|
OpenDaylight OVS 服务的自定义用户名。默认值为 |
|
|
OpenDaylight OVS 服务的自定义密码。默认值为 |
|
|
定义此 OVS 主机允许的租户网络类型。它们可能因主机或角色而异,以限制 nova 实例和网络调度到的主机。默认值为 |
|
|
在 OVS 中启用或禁用 DPDK。默认值为 |
|
|
创建 vhostuser 端口的 OVS 模式。在客户端模式中,虚拟机监控程序负责创建 vhostuser 套接字。在服务器模式中,OVS 会创建它们。默认值为 |
|
|
用于 vhostuser 套接字的目录。默认值为 |
|
|
启用或禁用 OVS 硬件卸载。您可以使用 |
|
|
启用或禁用内部网络中的 TLS。您可以使用值 |
|
|
如果为内部网络中的服务启用 TLS,则必须使用 |
|
|
OpenDaylight 更新级别。您可以使用值 |
|
|
vhost-user 套接字目录组。当 vhostuser 处于默认的 |
|
|
vhost-user 套接字目录用户名。当 vhostuser 处于默认的 |
3.1.4. 将 neutron 元数据服务与 OpenDaylight 搭配使用 复制链接链接已复制到粘贴板!
OpenStack 计算服务允许通过向特殊的地址 169.254.169.254 发出 web 请求来查询与它们关联的元数据。OpenStack 网络代理将此类请求代理到 nova-api,即使请求来自隔离或多个具有重叠 IP 地址的网络。
元数据服务使用 neutron L3 代理路由器来提供元数据请求或 DHCP 代理实例。使用启用了第 3 层路由插件部署 OpenDaylight 会禁用 neutron L3 代理。因此,必须将元数据配置为通过 DHCP 实例流,即使租户网络中存在路由器。这个功能在默认的环境文件 neutron-opendaylight.yaml 中启用。要禁用它,将 NeutronEnableForceMetadata 设置为 false。
虚拟机实例安装了静态主机路由,使用 DHCP 选项 121 作为 169.254.169.254/32。使用此静态路由时,对 169.254.169.254:80 的元数据请求进入 DHCP 网络命名空间中的元数据名称服务器代理。然后,命名空间代理向请求添加带有实例的 IP 的 HTTP 标头,并通过 Unix 域套接字将它连接到元数据代理。元数据代理查询 neutron 以获取与源 IP 和网络 ID 对应的实例 ID,并将它代理到 nova 元数据服务。需要额外的 HTTP 标头才能在租户之间保持隔离并允许重叠 IP 支持。
3.1.5. 了解网络配置和 NIC 模板 复制链接链接已复制到粘贴板!
在 Red Hat OpenStack Platform director 中,物理 neutron 网络数据中心默认映射到名为 br-ex 的 OVS 网桥。它通过 OpenDaylight 集成一致。如果您使用默认的 OpenDaylightProviderMappings 和计划来创建 扁平 或 VLAN _External 网络,则必须在 Compute 节点的 NIC 模板中配置 OVS br-ex 网桥。由于第 3 层插件使用分布式路由到这些节点,因此不需要在 Controller 角色 NIC 模板上配置 br-ex。
br-ex 网桥可以映射到网络隔离中的任何网络,但通常映射到外部网络,如示例中所示。
使用 DPDK 时,您必须创建另一个 OVS 网桥,通常称为 br-phy,并为它提供 ovs-dpdk-port。网桥的 IP 地址是为 VXLAN 覆盖网络隧道配置的。
在使用网络隔离时,您不需要将 IP 地址或默认路由放在 Compute 节点上的这个网桥中。
或者,您可以在不使用 br-ex 网桥的情况下配置外部网络访问。要使用此方法,您必须事先知道 overcloud Compute 节点的接口名称。例如,如果 eth3 是 Compute 节点上的第三个接口的确定性名称,那么您可以使用它为 Compute 节点在 NIC 模板中指定接口。
- type: interface name: eth3 use_dhcp: false
-
type: interface
name: eth3
use_dhcp: false
3.2. OpenDaylight 的基本安装 复制链接链接已复制到粘贴板!
本节介绍如何使用标准环境文件部署 OpenDaylight。
3.2.1. 为 overcloud 准备 OpenDaylight 环境文件 复制链接链接已复制到粘贴板!
开始前
- 安装 undercloud。如需更多信息 ,请参阅安装 undercloud。
- 另外,还可使用要在 overcloud 和 OpenDaylight 安装过程中使用的容器镜像创建本地 registry。如需更多信息,请参阅 Director 安装和使用 指南中的 配置容器镜像源。
流程
登录 undercloud 并加载 admin 凭据。
source ~/stackrc
$ source ~/stackrcCopy to Clipboard Copied! Toggle word wrap Toggle overflow 创建一个 Docker registry 文件
odl-images.yaml,其中包含对 OpenStack 和 OpenDaylight 安装所需的 Docker 容器镜像的引用。openstack overcloud container image prepare -e /usr/share/openstack-tripleo-heat-templates/environments/services-docker/neutron-opendaylight.yaml --output-env-file /home/stack/templates/odl-images.yaml
$ openstack overcloud container image prepare -e /usr/share/openstack-tripleo-heat-templates/environments/services-docker/neutron-opendaylight.yaml --output-env-file /home/stack/templates/odl-images.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
现在,您已成功准备了部署 overcloud 的环境,并准备好启动 第 3.2.2 节 “使用 OpenDaylight 安装 overcloud” 中描述的安装。
更多信息
openstack overcloud image prepare 命令准备容器镜像环境文件,以安装 overcloud 和 OpenDaylight。这个命令使用以下选项:
- -e
- 指定要添加该环境所需的特定容器镜像的服务环境文件,如 OpenDaylight 和 OVS
- --env-file
- 创建新的容器镜像环境文件,其中包含用于安装的容器镜像列表
- --pull-source
- 设置 Docker 容器 registry 的位置
- --namespace
- 设置 Docker 容器的版本
- --prefix
- 为镜像名称添加前缀
- --suffix
- 为镜像名称添加后缀
- --tag
- 定义镜像的发行版本
3.2.2. 使用 OpenDaylight 安装 overcloud 复制链接链接已复制到粘贴板!
开始前
- 按照 Prepare the OpenDaylight 环境文件进行 overcloud 过程,为部署创建必要的环境文件。
流程
登录 undercloud 并加载 admin 凭据。
source ~/stackrc
$ source ~/stackrcCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用之前创建的环境文件部署 overcloud。
openstack overcloud deploy --templates /usr/share/openstack-tripleo-heat-templates \ -e <other environment files> -e /usr/share/openstack-tripleo-heat-templates/environments/services-docker/neutron-opendaylight.yaml \ -e /home/stack/templates/odl-images.yaml
$ openstack overcloud deploy --templates /usr/share/openstack-tripleo-heat-templates \ -e <other environment files> -e /usr/share/openstack-tripleo-heat-templates/environments/services-docker/neutron-opendaylight.yaml \ -e /home/stack/templates/odl-images.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
部署命令中存在的环境文件会覆盖您在 命令中之前包含的环境文件。您必须注意您包括的环境文件顺序以避免意外覆盖参数。
您可以通过创建一个最小的环境文件来覆盖一些参数,该文件只设置您要更改的参数并将其与默认环境文件合并。
更多信息
此流程中的 openstack overcloud deploy 命令使用以下选项:
- --templates
- 定义 heat 模板目录的路径
- -e
- 指定环境文件
3.3. 在自定义角色中安装 OpenDaylight 复制链接链接已复制到粘贴板!
在 Custom 角色中安装 OpenDaylight 会导致隔离的 OpenDaylightApi 服务在指定的 OpenDaylight 节点上运行,与 Controller 节点不同。
如果要将 Custom 角色用于 OpenDaylight,您必须创建一个角色文件,其中包含节点布局和功能配置。
3.3.1. 根据默认角色自定义角色文件 复制链接链接已复制到粘贴板!
您可以使用用户定义的角色列表部署 OpenStack,每个角色都运行用户定义的服务列表。角色是一组包含独立服务或配置的节点。例如,您可以创建一个包含 nova API 服务的 Controller 角色。您可以查看 openstack-tripleo-heat-templates 中的示例角色。
使用这些角色来生成 roles_data.yaml 文件,该文件包含 overcloud 节点所需的角色。您还可以通过在目录中创建单独的文件来创建自定义角色,并使用它们生成新的 roles_data.yaml。
要创建仅安装特定 OpenStack 角色的自定义环境文件,请完成以下步骤:
流程
加载管理员凭据。
source ~/stackrc
$ source ~/stackrcCopy to Clipboard Copied! Toggle word wrap Toggle overflow 列出可用于生成自定义
roles_data.yaml文件的默认角色。openstack overcloud role list
$ openstack overcloud role listCopy to Clipboard Copied! Toggle word wrap Toggle overflow 如果要使用所有这些角色,请运行以下命令来生成
roles_data.yaml文件:openstack overcloud roles generate -o roles_data.yaml
$ openstack overcloud roles generate -o roles_data.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 如果要自定义角色文件以仅包含某些角色,您可以将角色的名称作为参数传递给上一步中的命令。例如,要使用 Controller、Compute 和 Telemetry 角色创建
roles_data.yaml文件,请运行以下命令:openstack overcloud roles generate - roles_data.yaml Controller Compute Telemetry
$ openstack overcloud roles generate - roles_data.yaml Controller Compute TelemetryCopy to Clipboard Copied! Toggle word wrap Toggle overflow
3.3.2. 为 OpenDaylight 创建自定义角色 复制链接链接已复制到粘贴板!
要创建自定义角色,请在角色文件目录中创建新的角色文件,并生成新的 roles_data.yaml 文件。对于每个您创建的自定义角色,您必须创建一个新的角色文件。每个自定义角色文件都必须只包括特定角色的数据,自定义角色文件名必须与角色名称匹配。
简而言之,该文件必须定义这些参数:
name:定义角色的名称。名称必须始终是一个非空唯一字符串。- Name: Custom_role
- Name: Custom_roleCopy to Clipboard Copied! Toggle word wrap Toggle overflow ServicesDefault:列出此角色中使用的服务。如果没有使用服务,该变量可以保持空状态。示例格式类似如下:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
除了所需参数外,您还可以定义进一步设置:
CountDefault:定义节点的默认数量。如果CountDefault:为空,则默认为零。CountDefault: 1
CountDefault: 1Copy to Clipboard Copied! Toggle word wrap Toggle overflow HostnameFormatDefault:定义主机名的格式字符串。该值是可选的。HostnameFormatDefault: '%stackname%-computeovsdpdk-%index%'
HostnameFormatDefault: '%stackname%-computeovsdpdk-%index%'Copy to Clipboard Copied! Toggle word wrap Toggle overflow description:描述和添加有关角色的信息。Description: Compute OvS DPDK RoleDescription: Compute OvS DPDK RoleCopy to Clipboard Copied! Toggle word wrap Toggle overflow
流程
将默认角色文件复制到新目录中,并将原始文件保留为备份。
mkdir ~/roles cp /usr/share/openstack-tripleo-heat-templates/roles/* ~/roles
$ mkdir ~/roles $ cp /usr/share/openstack-tripleo-heat-templates/roles/* ~/rolesCopy to Clipboard Copied! Toggle word wrap Toggle overflow 修改
~/roles中的Controller.yaml文件中的默认 Controller 角色,并从文件中删除OpenDaylightApi行,以禁用 Controller 节点上的 OpenDaylightAPI 服务:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在
~/roles目录中创建一个新的OpenDaylight.yaml文件,并添加 OpenDaylight 角色描述:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 保存该文件。
生成新角色文件,以便在自定义角色中使用 OpenDaylight 部署 OpenStack overcloud 时使用。
openstack overcloud roles generate --roles-path ~/roles -o ~/roles_data.yaml Controller Compute OpenDaylight
$ openstack overcloud roles generate --roles-path ~/roles -o ~/roles_data.yaml Controller Compute OpenDaylightCopy to Clipboard Copied! Toggle word wrap Toggle overflow
3.3.3. 在自定义角色中使用 OpenDaylight 安装 OverCloud 复制链接链接已复制到粘贴板!
开始前
- 安装 undercloud。如需更多信息 ,请参阅安装 undercloud。
- 创建环境文件,并链接到 overcloud 容器镜像。如需更多信息,请参阅使用 OpenDaylight 准备 overcloud 安装。
- 准备角色文件,以在自定义角色中配置 OpenDaylight。如需更多信息,请参阅为 OpenDaylight 创建自定义角色。
流程
创建自定义角色。在环境文件中设置以下参数值:
- OvercloudOpenDaylightFlavor: opendaylight - OvercloudOpenDaylightCount: 3- OvercloudOpenDaylightFlavor: opendaylight - OvercloudOpenDaylightCount: 3Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如需更多信息,请参阅 创建 roles_data 文件。
使用 -r 参数运行部署命令来覆盖默认的角色定义。此选项告知部署命令使用包含您的自定义角色的
roles_data.yaml文件。将您在上一步中创建的odl-composable.yaml环境文件传递给这个部署命令。在本例中,总共有三个 ironic 节点。为自定义 OpenDaylight 角色保留了一个 ironic 节点:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
部署命令中存在的环境文件会覆盖您在 命令中之前包含的环境文件。您必须注意您包括的环境文件顺序以避免意外覆盖参数。
您可以通过创建一个最小的环境文件来覆盖一些参数,该文件只设置您要更改的参数并将其与默认环境文件合并。
更多信息
r选项会在安装时覆盖角色定义。-r <roles_data>.yaml
-r <roles_data>.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 自定义角色在安装过程中需要一个额外的 ironic 节点。
- 要覆盖任何自定义角色的 rhosp13 可组合角色中的节点计数器,请使用本例中的语法: <role-name>Count: <value>,角色名称会更新 role_data.yaml 文件中的准确名称详情。
3.3.4. 验证自定义角色中的 OpenDaylight 安装 复制链接链接已复制到粘贴板!
开始前
- 在自定义角色中安装带有 OpenDaylight 的 Overcloud。有关更多信息,请参阅在 自定义角色 中安装带有 OpenDaylight 的 Overcloud。
流程
列出现有实例:
openstack server list
$ openstack server listCopy to Clipboard Copied! Toggle word wrap Toggle overflow 验证新的 OpenDaylight 角色是否作为实例专用:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.4. 使用 SR-IOV 支持安装 OpenDaylight 复制链接链接已复制到粘贴板!
OpenDaylight 可能会部署为支持 单根输入/ 输出虚拟化(SR-IOV)的 Compute 节点。在本部署中,Compute 节点必须作为专用 SR-IOV 节点运行,且不能和基于 OVS 的 nova 实例混合。可以在单个 OpenDaylight 部署中部署 OVS 和 SR-IOV Compute 节点。
这种情境利用自定义 SR-IOV Compute 角色来完成这种部署。
SR-IOV 部署需要使用 neutron SR-IOV 代理来配置虚拟功能(VF)。然后,在部署时,这些功能直接传递到计算实例,它们充当网络端口。VF 从 Compute 节点上的主机 NIC 中获取,因此在启动部署前需要一些有关主机接口的信息。
3.4.1. 准备 SR-IOV Compute 角色 复制链接链接已复制到粘贴板!
遵循与 Install of OpenDaylight In Custom Role 中显示的相同的方法,您必须为 SR-IOV Compute 节点创建一个自定义角色,以允许创建基于 SR-IOV 的实例,而默认的 Compute 角色提供基于 OVS 的 nova 实例。
开始前
- 了解在 自定义角色中安装 OpenDaylight的章节
流程
将默认角色文件复制到新目录中,并将原始文件保留为备份。
mkdir ~/roles cp /usr/share/openstack-tripleo-heat-templates/roles/* ~/roles
$ mkdir ~/roles $ cp /usr/share/openstack-tripleo-heat-templates/roles/* ~/rolesCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在
~/roles目录中创建一个新的ComputeSriov.yaml文件,并添加以下角色描述:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 保存该文件。
从默认的 Compute 角色中删除
NeutronSriovAgent和NeutronSriovHostConfig服务,并将信息保存到 roles_data.yaml 中。- OS::TripleO::Services::NeutronSriovHostConfig - OS::TripleO::Services::NeutronSriovAgent- OS::TripleO::Services::NeutronSriovHostConfig - OS::TripleO::Services::NeutronSriovAgentCopy to Clipboard Copied! Toggle word wrap Toggle overflow 生成新角色文件,以使用 OpenDaylight Compute SR-IOV 支持部署 OpenStack overcloud。
openstack overcloud roles generate --roles-path ~/roles -o ~/roles_data.yaml Controller Compute ComputeSriov
$ openstack overcloud roles generate --roles-path ~/roles -o ~/roles_data.yaml Controller Compute ComputeSriovCopy to Clipboard Copied! Toggle word wrap Toggle overflow 创建本地 registry:
openstack overcloud container image prepare --namespace=192.168.24.1:8787/rhosp13 --prefix=openstack- --tag=2018-05-07.2 -e /home/stack/templates/environments/services-docker/neutron-opendaylight.yaml -e /home/stack/templates/environments/services-docker/neutron-opendaylight-sriov.yaml --output-env-file=/home/stack/templates/overcloud_images.yaml --roles-file /home/stack/templates/roles_data.yaml
openstack overcloud container image prepare --namespace=192.168.24.1:8787/rhosp13 --prefix=openstack- --tag=2018-05-07.2 -e /home/stack/templates/environments/services-docker/neutron-opendaylight.yaml -e /home/stack/templates/environments/services-docker/neutron-opendaylight-sriov.yaml --output-env-file=/home/stack/templates/overcloud_images.yaml --roles-file /home/stack/templates/roles_data.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
3.4.2. 配置 SR-IOV 代理服务 复制链接链接已复制到粘贴板!
要使用 SR-IOV 支持部署 OpenDaylight,您必须覆盖 neutron-opendaylight.yaml 文件中的默认参数。您可以使用位于 /usr/share/openstack-tripleo-heat-templates 和 neutron-opendaylight.yaml 环境文件的标准 SR-IOV 环境文件。但是,最好不要编辑原始文件。相反,复制原始环境文件并修改重复文件中的参数。
或者,您可以创建一个新的环境文件,其中只提供您要更改的参数,并使用这两个文件进行部署。若要部署自定义的 OpenDaylight,请将这两个文件传递给部署命令。因为较新的环境文件会覆盖任何之前设置,所以必须在部署命令中以正确的顺序包括它们。正确的顺序是 neutron-opendaylight.yaml,然后是 neutron-opendaylight-sriov.yaml。
如果要使用默认设置部署 OpenDaylight 和 SR-IOV,您可以使用红帽提供的 neutron-opendaylight-sriov.yaml。如果您需要更改或添加参数,请制作默认 SR-IOV 环境文件的副本并编辑新创建的文件。
以下是自定义的 neutron-opendaylight-sriov.yaml 文件示例:
更多信息
您可以在 neutron-opendaylight-sriov.yaml 文件中配置以下选项。表描述了单独的选项,并提到启用 SR-IOV 功能所需的设置:
|
|
允许将 PCI Passthrough 用于 SR-IOV。这必须在环境文件中取消注释,并包含 |
|
|
为 Nova Default 过滤器启用 PCI Passthrough 过滤器。必须设置并包含 |
|
| 将逻辑网络映射到主机网络接口。必须指定此设置,以便 neutron 能够将虚拟网络绑定到物理端口。 |
|
|
为主机网络接口创建的 VF 数量。语法:& |
|
| 以列表格式配置 nova 中允许的 PCI 设备白名单,例如: NovaPCIPassthrough:
- vendor_id: "8086"
product_id: "154c"
address: "0000:05:00.0"
physical_network: "datacentre"
它还可以使用逻辑设备名称而不是特定硬件属性: NovaPCIPassthrough:
- devname: "ens20f2"
physical_network: "datacentre"
|
3.4.3. 使用 SR-IOV 安装 OpenDaylight 复制链接链接已复制到粘贴板!
开始前
- 安装 undercloud。如需更多信息 ,请参阅安装 undercloud。
- 创建环境文件,并链接到 overcloud 容器镜像。如需更多信息,请参阅使用 OpenDaylight 准备 overcloud 安装。
- 准备角色文件,以在具有 SR-IOV 支持的自定义角色中配置 OpenDaylight。如需更多信息,请参阅准备 SR-IOV 计算角色。
流程
使用
-r参数运行部署命令,使其包含您的自定义角色文件和必要的环境文件,以启用带有 OpenDaylight 的 SR-IOV 功能。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
部署命令中存在的环境文件会覆盖您在 命令中之前包含的环境文件。您必须注意您包括的环境文件顺序以避免意外覆盖参数。
您可以通过创建一个最小的环境文件来覆盖一些参数,该文件只设置您要更改的参数并将其与默认环境文件合并。
更多信息
r选项会在安装时覆盖角色定义。-r <roles_data>.yaml
-r <roles_data>.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 自定义角色在安装过程中需要一个额外的 ironic 节点。
3.5. 使用 OVS-DPDK 支持安装 OpenDaylight 复制链接链接已复制到粘贴板!
OpenDaylight 可能会通过 director 进行 Open vSwitch 数据平面开发套件 (DPDK)加速部署。当数据包在用户空间而不是内核中处理时,这种部署提供更高的数据平面性能。使用 OVS-DPDK 部署时,需要了解每个 Compute 节点的硬件物理布局,以利用潜在的性能提升。
您应该特别考虑:
- 主机上的网络接口支持 DPDK
- Compute 节点的 NUMA 节点拓扑(每个插槽、CPU 内核和内存的数量)
- 每个 NUMA 节点的 DPDK NIC PCI 总线代理
- Compute 节点上可用 RAM 量
- 咨询 网络功能虚拟化规划和配置指南.
3.5.1. 准备 OVS-DPDK 部署文件 复制链接链接已复制到粘贴板!
若要部署 OVS-DPDK,请使用不同的环境文件。该文件将覆盖 /usr/share/openstack-tripleo-heat-templates/environments/services-docker 目录中由 neutron-opendaylight.yaml 环境文件设置的一些参数。不要修改原始环境文件。反之,创建一个包含必要参数的新环境文件,如 neutron-opendaylight-dpdk.yaml。
如果要使用默认设置的 OVS-DPDK 部署 OpenDaylight,请使用 /usr/share/openstack-tripleo-heat-templates/environments/services-docker 目录里的默认 neutron-opendaylight-dpdk.yaml 环境文件。
默认文件包含以下值:
3.5.2. 配置 OVS-DPDK 部署 复制链接链接已复制到粘贴板!
您可以通过更改 neutron-opendaylight-dpdk.yaml 中的值来配置 OVS-DPDK 服务。
|
|
启用 IRQ 的固定,以便将它们与 OVS-DPDK 搭配使用的 CPU 核心进行隔离。默认配置集: |
|
|
指定 CPU 内核列表,以防止内核调度程序使用这些内核,而是可以分配并专用于 OVS-DPDK。格式采用以逗号分隔的独立列表或一系列内核,例如 |
|
|
列出在引导时要传递给内核的参数。对于 OVS-DPDK,需要启用
---- 请注意,指定的 RAM 量对于大页是 60 GB。在设置此值时,务必要考虑 Compute 节点上的可用 RAM 量。 |
|
| 指定要分配给每个 NUMA 节点的巨页内存量(以 MB 为单位)。要获得最佳性能,请将内存分配给最接近 DPDK NIC 的套接字。列出每个套接字的内存格式: ---- "<socket 0 mem MB>,<socket 1 mem MB>" ---- 例如:"1024,0" |
|
|
指定要用于 PMD 线程的 UIO 驱动程序类型。DPDK NIC 必须支持指定的驱动程序。Red Hat OpenStack Platform 部署支持驱动程序类型 |
|
|
列出要固定到的 PMD 线程的单个内核数或范围。此处指定的内核应位于使用 |
|
| 指定每个套接字的内存频道数。 |
|
| 使用 libvirtd 将 nova 实例固定到。为了获得最佳性能,在已固定 OVS PMD 核心相同的插槽上的内核。 |
3.5.3. 使用 OVS-DPDK 安装 OpenDaylight 复制链接链接已复制到粘贴板!
开始前
- 安装 undercloud。如需更多信息 ,请参阅安装 undercloud。
- 创建环境文件,并链接到 overcloud 容器镜像。如需更多信息,请参阅使用 OpenDaylight 准备 overcloud 安装。
- 准备角色文件,以在具有 SR-IOV 支持的自定义角色中配置 OpenDaylight。如需更多信息,请参阅准备 OVS-DPDK 部署文件。
流程
- 使用必要的环境文件运行部署命令,以启用 OpenDaylight 的 DPDK 功能。
部署命令中存在的环境文件会覆盖您在 命令中之前包含的环境文件。您必须注意您包括的环境文件顺序以避免意外覆盖参数。
您可以通过创建一个最小的环境文件来覆盖一些参数,该文件只设置您要更改的参数并将其与默认环境文件合并。
3.5.4. 示例:使用 ODL 和 VXLAN 隧道处理配置 OVS-DPDK 复制链接链接已复制到粘贴板!
本节介绍带有 ODL 和 VXLAN 隧道的 OVS-DPDK 配置示例。
您必须确定 network-environment.yaml 文件中设置的 OVS-DPDK 参数的最佳值,以优化 OVS-DPDK 的 OpenStack 网络。详情请参阅使用 工作流 Deriving DPDK 参数。
3.5.4.1. 生成 ComputeOvsDpdk 可组合角色 复制链接链接已复制到粘贴板!
为 ComputeOvsDpdk 角色生成 roles_data.yaml。
openstack overcloud roles generate --roles-path templates/openstack-tripleo-heat-templates/roles -o roles_data.yaml Controller ComputeOvsDpdk
# openstack overcloud roles generate --roles-path templates/openstack-tripleo-heat-templates/roles -o roles_data.yaml Controller ComputeOvsDpdk
3.5.4.2. 配置 OVS-DPDK 参数 复制链接链接已复制到粘贴板!
您必须确定 network-environment.yaml 文件中设置的 OVS-DPDK 参数的最佳值,以优化 OVS-DPDK 的 OpenStack 网络。详情请查看 https://access.redhat.com/documentation/zh-cn/red_hat_openstack_platform/13/html/network_functions_virtualization_planning_and_configuration_guide/part-dpdk-configure#proc_derive-dpdk。
将 OVS-DPDK 的自定义资源添加到
resource_registry下:resource_registry: # Specify the relative/absolute path to the config files you want to use for override the default. OS::TripleO::ComputeOvsDpdk::Net::SoftwareConfig: nic-configs/computeovsdpdk.yaml OS::TripleO::Controller::Net::SoftwareConfig: nic-configs/controller.yamlresource_registry: # Specify the relative/absolute path to the config files you want to use for override the default. OS::TripleO::ComputeOvsDpdk::Net::SoftwareConfig: nic-configs/computeovsdpdk.yaml OS::TripleO::Controller::Net::SoftwareConfig: nic-configs/controller.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在
parameter_defaults下,将隧道类型和租户类型设置为vxlan:NeutronTunnelTypes: 'vxlan' NeutronNetworkType: 'vxlan'
NeutronTunnelTypes: 'vxlan' NeutronNetworkType: 'vxlan'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在
parameters_defaults下,设置网桥映射:# The OVS logical->physical bridge mappings to use. NeutronBridgeMappings: 'tenant:br-link0' OpenDaylightProviderMappings: 'tenant:br-link0'
# The OVS logical->physical bridge mappings to use. NeutronBridgeMappings: 'tenant:br-link0' OpenDaylightProviderMappings: 'tenant:br-link0'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在
parameter_defaults下,为ComputeOvsDpdk角色设置特定于角色的参数:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意您必须在具有或没有 DPDK PMD 的 DPDK NIC 的每个 NUMA 节点上分配至少一个 CPU (具有同级线程),以避免创建客户机实例中失败。
注意这些大页面由虚拟机消耗,以及使用
OvsDpdkSocketMemory参数的 OVS-DPDK,如此流程所示。虚拟机的巨页数量是引导参数减去OvsDpdkSocketMemory。您还必须将
hw:mem_page_size=1GB添加到与 DPDK 实例关联的类别中。注意OvsDPDKCoreList和OvsDpdkMemoryChannels是此流程所需的设置。在没有适当值的情况下尝试部署 DPDK 会导致部署失败,或导致部署不稳定。
3.5.4.3. 配置 Controller 节点 复制链接链接已复制到粘贴板!
为隔离的网络创建 control plane Linux 绑定。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将 VLAN 分配给此 Linux 绑定。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建 OVS 网桥,以访问浮动 IP 到云网络中。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.5.4.4. 为 DPDK 接口配置 Compute 节点 复制链接链接已复制到粘贴板!
从默认的 compute.yaml 文件创建 compute-ovs-dpdk.yaml 文件,并进行以下更改:
为隔离的网络创建 control plane Linux 绑定。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将 VLAN 分配给此 Linux 绑定。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用 DPDK 端口设置网桥以链接到控制器。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意要包含多个 DPDK 设备,请为您要添加的每个 DPDK 设备重复
类型代码部分。注意在使用 OVS-DPDK 时,同一计算节点上的 所有 网桥都应是
ovs_user_bridge类型。director 可以接受配置,但 Red Hat OpenStack Platform 不支持同一节点上的ovs_bridge和ovs_user_bridge。
3.5.4.5. 部署 overcloud 复制链接链接已复制到粘贴板!
运行 overcloud_deploy.sh 脚本来部署 overcloud。
3.6. 使用 L2GW 支持安装 OpenDaylight 复制链接链接已复制到粘贴板!
该功能在此发行版本中作为技术预览提供,因此不享有红帽的全面支持。它只应用于测试,不应部署在生产环境中。有关技术预览功能的更多信息,请参阅覆盖范围详细信息。
第 2 层网关服务允许租户的虚拟网络桥接到物理网络。此集成允许用户通过第 2 层网络连接访问物理服务器上的资源,而不是通过路由层 3 连接来访问物理服务器上的资源。这意味着扩展第 2 层广播域,而不要通过 L3 或浮动 IP。
3.6.1. 准备 L2GW 部署文件 复制链接链接已复制到粘贴板!
要使用 L2GW 支持部署 OpenDaylight,请使用 /usr/share/openstack-tripleo-heat-templates/environments 目录中的 neutron-l2gw-opendaylight.yaml 文件。如果需要更改该文件中的设置,请不要修改现有文件。相反,请创建包含必要参数的环境文件的新副本。
如果要使用默认设置部署 OpenDaylight 和 L2GW,您可以在 /usr/share/openstack-tripleo-heat-templates/environments/services-docker 目录中使用 neutron-l2gw-opendaylight.yaml。
默认文件包含这些值:
3.6.2. 配置 OpenDaylight L2GW 部署 复制链接链接已复制到粘贴板!
您可以通过更改 neutron-l2gw-opendaylight.yaml 文件中的值来配置该服务:
|
|
从 |
|
|
定义用于提供此服务的供应商。默认为 |
|
| 设置默认接口的名称。 |
|
| 设置默认设备的名称。 |
|
|
指定 L2 网关的服务配额。默认值为 |
|
| 指定 L2GW 服务的监控间隔。 |
3.6.3. 使用 L2GW 安装 OpenDaylight 复制链接链接已复制到粘贴板!
开始前
- 安装 undercloud。如需更多信息 ,请参阅安装 undercloud。
- 创建环境文件,并链接到 overcloud 容器镜像。如需更多信息,请参阅使用 OpenDaylight 准备 overcloud 安装。
- 准备角色文件,以在具有 SR-IOV 支持的自定义角色中配置 OpenDaylight。如需更多信息,请参阅准备 L2GW 部署文件。
流程
- 使用必要的环境文件运行部署命令,以使用 OpenDaylight 启用 L2GW 功能。
部署命令中存在的环境文件会覆盖您在 命令中之前包含的环境文件。您必须注意您包括的环境文件顺序以避免意外覆盖参数。
您可以通过创建一个最小的环境文件来覆盖一些参数,该文件只设置您要更改的参数并将其与默认环境文件合并。
第 4 章 测试部署 复制链接链接已复制到粘贴板!
4.1. 执行基本测试 复制链接链接已复制到粘贴板!
基本测试会验证实例可以相互 ping。测试还会检查 浮动 IP SSH 访问。本例描述了如何从 undercloud 执行此测试。
这个过程要求您遵循大量独立步骤。为方便起见,这个过程被分成较小的部分。但是,您必须按照以下顺序执行所有步骤。
In this setup, a flat network is used to create the _External_ network, and _VXLAN_ is used for the _Tenant_ networks. _VLAN External_ networks and _VLAN Tenant_ networks are also supported, depending on the desired deployment.
In this setup, a flat network is used to create the _External_ network, and _VXLAN_ is used for the _Tenant_ networks. _VLAN External_ networks and _VLAN Tenant_ networks are also supported, depending on the desired deployment.
4.1.1. 为测试创建新网络 复制链接链接已复制到粘贴板!
提供用于访问 overcloud 的凭据:
source /home/stack/overcloudrc
$ source /home/stack/overcloudrcCopy to Clipboard Copied! Toggle word wrap Toggle overflow 创建一个外部 neutron 网络,以便从 overcloud 外部访问实例:
openstack network create --external --project service --external --provider-network-type flat --provider-physical-network datacentre external
$ openstack network create --external --project service --external --provider-network-type flat --provider-physical-network datacentre externalCopy to Clipboard Copied! Toggle word wrap Toggle overflow 为您在上一步中创建的新外部网络创建对应的 neutron 子网:
openstack subnet create --project service --no-dhcp --network external --gateway 192.168.37.1 --allocation-pool start=192.168.37.200,end=192.168.37.220 --subnet-range 192.168.37.0/24 external-subnet
$ openstack subnet create --project service --no-dhcp --network external --gateway 192.168.37.1 --allocation-pool start=192.168.37.200,end=192.168.37.220 --subnet-range 192.168.37.0/24 external-subnetCopy to Clipboard Copied! Toggle word wrap Toggle overflow 下载要用于创建 overcloud 实例的 cirros 镜像:
wget http://download.cirros-cloud.net/0.3.4/cirros-0.3.4-x86_64-disk.img
$ wget http://download.cirros-cloud.net/0.3.4/cirros-0.3.4-x86_64-disk.imgCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将 overcloud 上的 cirros 镜像上传到 glance:
openstack image create cirros --public --file ./cirros-0.3.4-x86_64-disk.img --disk-format qcow2 --container-format bare
$ openstack image create cirros --public --file ./cirros-0.3.4-x86_64-disk.img --disk-format qcow2 --container-format bareCopy to Clipboard Copied! Toggle word wrap Toggle overflow 创建要用于 overcloud 实例的
tiny类别:openstack flavor create m1.tiny --ram 512 --disk 1 --public
$ openstack flavor create m1.tiny --ram 512 --disk 1 --publicCopy to Clipboard Copied! Toggle word wrap Toggle overflow 创建 VXLAN 租户网络来托管实例:
openstack network create net_test --provider-network-type=vxlan --provider-segment 100
$ openstack network create net_test --provider-network-type=vxlan --provider-segment 100Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为您在上一步中创建的租户网络创建一个子网:
openstack subnet create --network net_test --subnet-range 123.123.123.0/24 test
$ openstack subnet create --network net_test --subnet-range 123.123.123.0/24 testCopy to Clipboard Copied! Toggle word wrap Toggle overflow 查找和存储租户网络的 ID:
net_mgmt_id=$(openstack network list | grep net_test | awk '{print $2}')$ net_mgmt_id=$(openstack network list | grep net_test | awk '{print $2}')Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建一个实例
cirros1,并将它附加到net_test网络和SSH安全组:openstack server create --flavor m1.tiny --image cirros --nic net-id=$vlan1 --security-group SSH --key-name RDO_KEY --availability-zone nova:overcloud-novacompute-0.localdomain cirros1
$ openstack server create --flavor m1.tiny --image cirros --nic net-id=$vlan1 --security-group SSH --key-name RDO_KEY --availability-zone nova:overcloud-novacompute-0.localdomain cirros1Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建名为
cirros2的第二个实例,也连接到net_test网络和SSH安全组:openstack server create --flavor m1.tiny --image cirros --nic net-id=$vlan1 --security-group SSH --key-name RDO_KEY --availability-zone nova:overcloud-novacompute-0.localdomain cirros2
$ openstack server create --flavor m1.tiny --image cirros --nic net-id=$vlan1 --security-group SSH --key-name RDO_KEY --availability-zone nova:overcloud-novacompute-0.localdomain cirros2Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.1.2. 在测试环境中设置网络 复制链接链接已复制到粘贴板!
查找和存储 admin 项目的 ID:
admin_project_id=$(openstack project list | grep admin | awk '{print $2}')$ admin_project_id=$(openstack project list | grep admin | awk '{print $2}')Copy to Clipboard Copied! Toggle word wrap Toggle overflow 查找和存储 admin 项目的默认安全组:
admin_sec_group_id=$(openstack security group list | grep $admin_project_id | awk '{print $2}')$ admin_sec_group_id=$(openstack security group list | grep $admin_project_id | awk '{print $2}')Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为 admin default 安全组添加一条规则,以允许 ICMP 流量入站流量:
openstack security group rule create $admin_sec_group_id --protocol icmp --ingress
$ openstack security group rule create $admin_sec_group_id --protocol icmp --ingressCopy to Clipboard Copied! Toggle word wrap Toggle overflow 为 admin default 安全组添加一条规则,以允许 ICMP 流量出站:
openstack security group rule create $admin_sec_group_id --protocol icmp --egress
$ openstack security group rule create $admin_sec_group_id --protocol icmp --egressCopy to Clipboard Copied! Toggle word wrap Toggle overflow 为 admin default 安全组添加一条规则,以允许 SSH 流量入口:
openstack security group rule create $admin_sec_group_id --protocol tcp --dst-port 22 --ingress
$ openstack security group rule create $admin_sec_group_id --protocol tcp --dst-port 22 --ingressCopy to Clipboard Copied! Toggle word wrap Toggle overflow 为 admin default 安全组添加一条规则,以允许 SSH 流量出站:
openstack security group rule create $admin_sec_group_id --protocol tcp --dst-port 22 --egress
$ openstack security group rule create $admin_sec_group_id --protocol tcp --dst-port 22 --egressCopy to Clipboard Copied! Toggle word wrap Toggle overflow
4.1.3. 测试连接 复制链接链接已复制到粘贴板!
-
从 horizon,您应该能够访问实例的 novnc 控制台。使用 overcloudrc 中的密码以 admin 用户身份登录 horizon。cirros 镜像的默认凭证是用户名
cirros和 passwordcubswin:)。 从 novnc 控制台,验证实例是否收到 DHCP 地址:
ip addr show
$ ip addr showCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注意您也可以从 undercloud 运行
nova console-log <instance id> 命令,以验证实例是否收到 DHCP 地址。- 对所有其他实例重复 1 和 2 步。
- 从一个实例,尝试对其他实例发出 ping 命令。这将验证 overcloud 中基本的 租户网络 连接。
- 使用浮动 IP 地址,验证您可以访问 其他实例。
4.1.4. 创建设备 复制链接链接已复制到粘贴板!
在外部网络上创建一个浮动 IP,它将与
cirros1实例关联:openstack floating ip create external
$ openstack floating ip create externalCopy to Clipboard Copied! Toggle word wrap Toggle overflow 创建一个路由器,在浮动 IP 和
cirros1租户 IP 之间处理 NAT:openstack router create test
$ openstack router create testCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将路由器的网关设置为外部网络:
openstack router set test --external-gateway external
$ openstack router set test --external-gateway externalCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在附加到租户网络的路由器中添加接口:
openstack router add subnet test test
$ openstack router add subnet test testCopy to Clipboard Copied! Toggle word wrap Toggle overflow 查找并存储您在第 1 步中创建的浮动 IP:
floating_ip=$(openstack floating ip list | head -n -1 | grep -Eo '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+')
$ floating_ip=$(openstack floating ip list | head -n -1 | grep -Eo '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+')Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将浮动 IP 与
cirros1实例关联:openstack server add floating ip cirros1 $floating_ip
$ openstack server add floating ip cirros1 $floating_ipCopy to Clipboard Copied! Toggle word wrap Toggle overflow 从具有外部网络访问权限的节点,尝试登录实例:
ssh cirros@$floating_ip
$ ssh cirros@$floating_ipCopy to Clipboard Copied! Toggle word wrap Toggle overflow
4.2. 执行高级测试 复制链接链接已复制到粘贴板!
您可以在部署 OpenDaylight 后测试 OpenDaylight 配置和部署的多个组件。要测试安装的特定部分,您必须按照以下步骤执行操作。每个步骤都单独描述。
您必须在 overcloud 节点上执行相关的流程。
4.2.1. 连接到 overcloud 节点 复制链接链接已复制到粘贴板!
要连接到 overcloud 节点并确保它们可以正常工作,请完成以下步骤:
流程
- 登录 undercloud。
输入以下命令启动进程:
source /home/stack/stackrc
$ source /home/stack/stackrcCopy to Clipboard Copied! Toggle word wrap Toggle overflow 列出所有实例:
openstack server list
$ openstack server listCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 选择所需的实例,再记下列表中的实例 IP 地址。
使用您在上一步中获得的列表中的 IP 地址连接到机器:
ssh heat-admin@<IP from step 4>
$ ssh heat-admin@<IP from step 4>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 切换到超级用户:
sudo -i
$ sudo -iCopy to Clipboard Copied! Toggle word wrap Toggle overflow
4.2.2. 测试 OpenDaylight 复制链接链接已复制到粘贴板!
要测试 OpenDaylight 是否正确运行,您必须验证服务是否正常运行,并且是否正确加载了指定的功能。
流程
- 以超级用户或自定义角色中运行的 OpenDaylight 节点,登录运行 OpenDaylight 的 overcloud 节点。
验证 OpenDaylight Controller 是否在所有 Controller 节点上运行:
docker ps | grep opendaylight 2363a99d514a 192.168.24.1:8787/rhosp13/openstack-opendaylight:latest "kolla_start" 4 hours ago Up 4 hours (healthy) opendaylight_api
# docker ps | grep opendaylight 2363a99d514a 192.168.24.1:8787/rhosp13/openstack-opendaylight:latest "kolla_start" 4 hours ago Up 4 hours (healthy) opendaylight_apiCopy to Clipboard Copied! Toggle word wrap Toggle overflow 验证 HAProxy 是否已正确配置为侦听端口 8081:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用 HAproxy IP 连接 karaf 帐户。karaf 密码为
karaf:ssh -p 8101 karaf@localhost
# ssh -p 8101 karaf@localhostCopy to Clipboard Copied! Toggle word wrap Toggle overflow 列出安装的功能。
feature:list -i | grep odl-netvirt-openstack
# feature:list -i | grep odl-netvirt-openstackCopy to Clipboard Copied! Toggle word wrap Toggle overflow 如果列表的第三列中有
x,如流程生成的,则功能会被正确安装。验证 API 正常运行。
web:list | grep neutron
# web:list | grep neutronCopy to Clipboard Copied! Toggle word wrap Toggle overflow 此 API 端点在
/etc/neutron/plugins/ml2/ml2_conf.ini中设置,供 neutron 用于与 OpenDaylight 通信。验证节点之间的 VXLAN 隧道是否已启动。
vxlan:show
# vxlan:showCopy to Clipboard Copied! Toggle word wrap Toggle overflow 要测试 REST API 是否已正确响应,请列出正在使用它的模块。
curl -u "admin:admin" http://localhost:8081/restconf/modules
# curl -u "admin:admin" http://localhost:8081/restconf/modulesCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出结果将类似(示例已缩短)。
{"modules":{"module":[{"name":"netty-event-executor","revision":"2013-11-12","namespace":"urn:opendaylight:params:xml:ns:yang:controller:netty:eventexecutor"},{"name" ...{"modules":{"module":[{"name":"netty-event-executor","revision":"2013-11-12","namespace":"urn:opendaylight:params:xml:ns:yang:controller:netty:eventexecutor"},{"name" ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow 列出使用主机 internal_API IP 的 REST 流。
curl -u "admin:admin" http://localhost:8081/restconf/streams
# curl -u "admin:admin" http://localhost:8081/restconf/streamsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 您获得类似的输出:
{"streams":{}}{"streams":{}}Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用主机 internal_API IP 运行以下命令,以验证 NetVirt 是否正常工作:
curl -u "admin:admin" http://localhost:8081/restconf/operational/network-topology:network-topology/topology/netvirt:1
# curl -u "admin:admin" http://localhost:8081/restconf/operational/network-topology:network-topology/topology/netvirt:1Copy to Clipboard Copied! Toggle word wrap Toggle overflow 请注意,以下输出确认 NetVirt 正常运行。
{"topology":[{"topology-id":"netvirt:1"}]}{"topology":[{"topology-id":"netvirt:1"}]}Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.2.3. 测试 Open vSwitch 复制链接链接已复制到粘贴板!
若要验证 Open vSwitch,可连接到其中一个计算节点,并验证它已正确配置并连接到 OpenDaylight。
流程
- 以超级用户身份连接到 overcloud 中的其中一个 Compute 节点。
列出 Open vSwitch 设置。
ovs-vsctl show
# ovs-vsctl showCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注意输出中的多个管理器。在这个示例中,行 2 和 3 显示多个管理器。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
验证
tcp管理器是否指向运行 OpenDaylight 的节点 IP。 -
验证 Managers 显示
is_connected: true,以确保建立了 OVS 到 OpenDaylight 的连接并使用 OVSDB 协议。 - 验证每个网桥(不是 br-int)是否存在,并对应于用于部署的 Compute 角色的 NIC 模板。
- 验证 tcp 连接是否与运行 OpenDaylight 服务的 IP 对应。
-
验证网桥 br-int 显示
is_connected: true,并且已建立与 OpenDaylight 的 OpenFlow 协议连接。
更多信息
- OpenDaylight 自动创建 br-int 网桥。
4.2.4. 验证 Compute 节点上的 Open vSwitch 配置。 复制链接链接已复制到粘贴板!
- 以超级用户身份连接到 Compute 节点。
列出 Open vSwitch 配置设置。
ovs-vsctl list open_vswitch
# ovs-vsctl list open_vswitchCopy to Clipboard Copied! Toggle word wrap Toggle overflow 读取输出。它与此示例类似。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
验证
other_config选项的值是否为本地接口设置了正确的local_ip,该接口通过 VXLAN 隧道连接到租户网络。 -
验证
other_config选项下的provider_mappings值是否与 OpenDaylightProviderMappings heat 模板参数中的值匹配。此配置将 neutron 逻辑网络映射到对应的物理接口。
4.2.5. 验证 neutron 配置 复制链接链接已复制到粘贴板!
流程
- 在其中一个 Controller 角色节点上连接到超级用户帐户。
-
确保
/etc/neutron/neutron.conf文件包含service_plugins=odl-router_v2,trunk。 确保
/etc/neutron/plugin.ini文件包含以下 ml2 配置:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在其中一个 overcloud 控制器上,验证 neutron 代理是否在正确运行。
openstack network agent list
# openstack network agent listCopy to Clipboard Copied! Toggle word wrap Toggle overflow 验证元数据和 DHCP 代理的
admin_state_up值是否为True:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
更多信息
-
plugin.ini中的 IP (在第 3 步中提到)应该是 InternalAPI Virtual IP Address (VIP)。 - 第 5 步列出了第 5 步中列出的 Open vSwitch 代理或 L3 代理,它们是所需状态,因为它们现在都由 OpenDaylight 进行管理。
第 5 章 调试 复制链接链接已复制到粘贴板!
5.1. 查找日志 复制链接链接已复制到粘贴板!
5.1.1. 访问 OpenDaylight 日志 复制链接链接已复制到粘贴板!
OpenDaylight 将日志存储在 /var/log/containers/opendaylight 目录中。最近的日志名为 karaf.log。OpenDaylight 将增量编号附加到以前的日志,如 karaf.log.1、 karaf.log.2。
5.1.2. 访问 OpenStack 网络日志 复制链接链接已复制到粘贴板!
当 OpenStack 网络命令失败时,首先检查 neutron 日志。您可以在每个 neutron 节点上的 server.log 文件中找到 neutron 日志,它位于 /var/log/containers/neutron 目录中。
server.log 文件还包括与 OpenDaylight 通信相关的错误。如果 neutron 错误源自与 OpenDaylight 交互,还必须检查 OpenDaylight 日志以查找故障原因。
5.2. 调试网络错误 复制链接链接已复制到粘贴板!
如果您遇到网络错误,如实例连接丢失,但没有在发出 OpenStack 命令或在 neutron 日志中报告任何错误,那么检查网络流量和 OpenFlow 流的 OVS 节点可能会很有用:
-
以超级用户身份登录
到发生网络错误的节点。 显示有关 br-int 交换机的信息。
ovs-ofctl -O openflow13 show br-int
# ovs-ofctl -O openflow13 show br-intCopy to Clipboard Copied! Toggle word wrap Toggle overflow 检查输出。它必须类似以下示例:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 列出 br-int 交换机的统计信息。
ovs-ofctl -O openflow13 dump-ports br-int
# ovs-ofctl -O openflow13 dump-ports br-intCopy to Clipboard Copied! Toggle word wrap Toggle overflow 检查输出。它必须类似以下示例:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
更多信息
- 在第 3 步,请注意此 OVS 节点上有三个端口。第一个端口是进入网桥 br-ex 的跳接端口,在这种情况下是外部网络连接端口。第二个端口是 tap 端口,它连接到 DHCP 代理实例。我们知道这一点,因为主机是控制器,否则它是实例的 Compute 角色。第三个端口是为租户流量创建的 VXLAN 隧道端口。
- 当您了解每个端口的功能时,您可以检查端口统计信息,以验证是否接收/发送流量(请参阅 第 4 步)。
- 在第 5 步 的输出中,请注意每个端口都会收到(rx pkts)和发送数据包(tx pkts)。
5.2.1. 使用 OpenFlow 流进行高级调试 复制链接链接已复制到粘贴板!
对于熟悉 OpenFlow 的高级用户,您可以检查交换机上的流,以检测流量丢弃的位置。
要列出流,并查看是否已点击它们,请输入以下命令:
ovs-ofctl -O openflow13 dump-flows br-int
# ovs-ofctl -O openflow13 dump-flows br-intCopy to Clipboard Copied! Toggle word wrap Toggle overflow 检查命令输出以获取所需信息:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
此输出已编辑为长度。
5.2.2. 数据包在 OpenFlow 中 复制链接链接已复制到粘贴板!
需要了解的一点是,在数据包上执行的网络功能被分为不同的 OpenFlow 表,并且数据包按顺序遍历这些表,从零开始。传入数据包登录表 0,然后通过 OpenFlow 管道 进行,直至从端口发出、发送到 OpenDaylight Controller 或丢弃。数据包可以跳过一个或多个表,具体取决于可能需要使用的网络功能。表的完整图表及其与网络功能的对应方式如下所示:
图 5.1. OpenDaylight NetVirt OpenFlow Pipeline
第 6 章 部署示例 复制链接链接已复制到粘贴板!
6.1. 使用租户网络进行模型安装场景 复制链接链接已复制到粘贴板!
在本节中,您将探索在生产环境中使用 OpenStack 的 OpenDaylight 安装示例。这种场景使用隧道(VXLAN)进行租户流量分离。
6.1.1. 物理拓扑 复制链接链接已复制到粘贴板!
此场景的拓扑由六个节点组成:
- 1 个 x director undercloud 节点
- 3 个 x OpenStack overcloud 控制器,除了其他 OpenStack 服务外,还安装有 OpenDaylight SDN 控制器
- 2 个 x OpenStack overcloud Compute 节点
6.1.2. 规划物理网络环境 复制链接链接已复制到粘贴板!
overcloud Controller 节点使用三个网络接口卡(NIC):
| 名称 | 用途 |
|---|---|
| nic1 | 管理网络(例如通过 SSH 访问节点) |
| nic2 | 租户(VXLAN)载体、配置(PXE、DHCP)和 内部 API 网络 |
| nic3 | 公共 API 网络访问 |
overcloud Compute 节点配备三个 NIC:
| 名称 | 用途 |
|---|---|
| nic1 | 管理网络 |
| nic2 | 租户载波、配置 和内部 API 网络 |
| nic3 | 外部 (浮动 IP)网络 |
undercloud 节点配备两个 NIC:
| 名称 | 用途 |
|---|---|
| nic1 | 用于管理网络 |
| nic2 | 用于 Provisioning 网络 |
6.1.3. 规划 NIC 连接 复制链接链接已复制到粘贴板!
在这种情况下,环境文件使用抽象的编号接口(nic1、 nic2),而不是主机操作系统上显示的实际设备名称(如 eth0 或 eno2)。属于同一角色的主机不需要相同的网络接口设备名称。如果一个主机使用 em1 和 em2 接口,则没有问题,另一个主机使用 eno1 和 eno2。每个 NIC 都称为 nic1 和 nic2。
抽象的 NIC 方案仅依赖于实时和连接的接口。如果主机有不同数量的接口,就足以使用连接主机所需的最少接口数量。例如,如果一台主机上有 4 个物理接口和第 6 个物理接口,则您应该仅在两个主机上使用 nic1、 nic2、nic3 和 nic4 插件。
6.1.4. 规划网络、VLAN 和 IP 复制链接链接已复制到粘贴板!
此场景使用网络隔离来分隔管理、配置、内部 API、租户、公共 API 和浮动 IP 网络流量。本图形是网络配置示例。它显示自定义角色部署。如果需要,您还可以在 Red Hat OpenStack Platform conroller 中包含 OpenDaylight。这是默认的设置。在此方案中,不显示 IPMI 网络,不显示 NIC 和路由。根据 OpenStack 配置,您可能需要额外网络。
图 6.1. 在这种情况下使用的详细网络拓扑
下表显示了与每个网络关联的 VLAN ID 和 IP 子网:
| Network | VLAN ID | IP 子网 |
|---|---|---|
| 置备 | 原生 | 192.0.5.0/24 |
| 内部 API | 600 | 172.17.0.0/24 |
| 租户 | 603 | 172.16.0.0/24 |
| 公共 API | 411 | 10.35.184.144/28 |
| 浮动 IP | 412 | 10.35.186.146/28 |
OpenStack Platform director 创建 br-isolated OVS 网桥,并为网络配置文件中定义的每个网络添加 VLAN 接口。director 还会创建 br-ex 网桥并附加有相关网络接口。
确保您的物理网络交换机(提供主机间的连接)正确配置来承载这些 VLAN ID。您必须将主机面临的所有交换机端口配置为 VLAN 的" 中继 "。此处使用术语"中继"来描述允许多个 VLAN ID 穿过同一端口的端口。
物理交换机的配置指南不在本文档范围内。
您可以使用 network-environment.yaml 文件中的 TenantNetworkVlanID 属性在使用 VXLAN 隧道时为租户网络定义 VLAN 标签。例如,VXLAN 租户流量通过标有 underlay 网络的 VLAN 传输。如果需要租户网络通过原生 VLAN 运行,则此值也可以为空。另请注意,在使用 VLAN 租户网络时,可以使用除为 TenantNetworkVlanID 提供的值以外的 VLAN 标签。
6.1.5. 这种情境中使用的 OpenDaylight 配置文件 复制链接链接已复制到粘贴板!
要部署 OpenStack 和 OpenDaylight 的这种场景,在 undercloud 节点上输入以下部署命令:
此外,本指南将会显示此场景中使用的配置文件、其内容,同时还会提供有关使用的设置的说明。
6.1.5.1. extra_env.yaml 文件。 复制链接链接已复制到粘贴板!
该文件只有一个参数。
parameter_defaults:
OpenDaylightProviderMappings: 'datacentre:br-ex,tenant:br-isolated'
parameter_defaults:
OpenDaylightProviderMappings: 'datacentre:br-ex,tenant:br-isolated'
这些是每个节点的映射,由 OpenDaylight 控制,供 OpenDaylight 使用。物理网络 数据中心 将映射到 br-ex OVS 网桥,并且租户网络流量将映射到 br-isolated OVS 网桥。
6.1.5.2. undercloud.conf 文件 复制链接链接已复制到粘贴板!
此文件位于 /home/stack/baremetal-vlan/ 目录中。
文件路径指向配置文件的自定义版本。
在本例中,使用 Provisioning 网络的 192.0.5.0/24 子网。请注意,在 undercloud 节点上使用物理接口 eno2 来置备。
6.1.5.3. network-environment.yaml 文件 复制链接链接已复制到粘贴板!
这是配置网络的主要文件。它位于 /home/stack/baremetal-vlan/ 目录中。在以下文件中,为不同的网络和提供程序映射指定 VLAN ID 和 IP 子网。nic-configs 目录 controller.yaml 和 compute.yaml 中的两个文件用于为 Controller 和 Compute 节点指定网络配置。
示例中指定 Controller 节点(3)和 Compute 节点(2)。
6.1.5.4. controller.yaml 文件 复制链接链接已复制到粘贴板!
该文件位于 /home/stack/baremetal-vlan/nic-configs/ 目录中。在本例中,您要定义两个交换机: br-isolated 和 br-ex。nic2 将在 br-ex 下的 br-isolated 和 nic3 下:
6.1.5.5. compute.yaml 文件 复制链接链接已复制到粘贴板!
该文件位于 /home/stack/baremetal-vlan/nic-configs/ 目录中。计算配置中的大多数选项都与 Controller 配置中相同。在本例中,nic3 低于 br-ex 以用于外部连接(浮动 IP 网络 )
6.1.6. 此情境中使用的 Red Hat OpenStack Platform director 配置文件 复制链接链接已复制到粘贴板!
6.1.6.1. neutron.conf 文件 复制链接链接已复制到粘贴板!
此文件位于 /etc/neutron/ 目录中,它应包含以下信息:
[DEFAULT] service_plugins=odl-router_v2,trunk
[DEFAULT]
service_plugins=odl-router_v2,trunk
6.1.6.2. ml2_conf.ini 文件 复制链接链接已复制到粘贴板!
此文件位于 /etc/neutron/plugins/ml2/ 目录中,它应包含以下信息:
- 在 [ml2] 部分下,注意 VXLAN 用作网络类型,因此是 opendaylight_v2 机制驱动程序。
- 在 [ml2_type_vlan] 下,应当设置与 network-environment.yaml 文件中配置相同的映射。
- 在 [ml2_odl] 下,您应看到访问 OpenDaylightController 的配置。
您可以使用这些详情确认对 OpenDaylight Controller 的访问:
curl -H "Content-Type:application/json" -u admin:admin http://172.17.1.18:8081/controller/nb/v2/neutron/networks
$ curl -H "Content-Type:application/json" -u admin:admin http://172.17.1.18:8081/controller/nb/v2/neutron/networks
6.2. 使用供应商网络进行模型安装场景 复制链接链接已复制到粘贴板!
此安装场景演示了 OpenStack 和 OpenDaylight 示例,它们使用提供商网络而不是租户网络。外部 Neutron 提供商网络将虚拟机实例桥接到提供第 3 层(L3)和其他网络服务的物理网络基础架构中。在大多数情况下,提供商网络使用 VLAN ID 实施第 2 层(L2)分段。提供商网络映射到支持在提供商网络中启动虚拟机实例的每个 Compute 节点上的提供程序网桥。
6.2.1. 物理拓扑 复制链接链接已复制到粘贴板!
此场景的拓扑由六个节点组成:
- 1 个 x director undercloud 节点
- 3 个 x OpenStack overcloud 控制器,除了其他 OpenStack 服务外,还安装有 OpenDaylight SDN 控制器
- 2 个 x OpenStack overcloud Compute 节点
6.2.2. 规划物理网络环境 复制链接链接已复制到粘贴板!
overcloud Controller 节点使用四个网络接口卡(NIC):
| 名称 | 用途 |
|---|---|
| nic1 | 管理网络(例如通过 SSH 访问节点) |
| nic2 | 调配(PXE、DHCP) 和内部 API 网络 |
| nic3 | 租户网络 |
| nic4 | 公共 API 网络,浮动 IP 网络 |
overcloud Compute 节点配备四个 NIC:
| 名称 | 用途 |
|---|---|
| nic1 | 管理网络 |
| nic2 | 置备和内部 API 网络 |
| nic3 | 租户网络 |
| nic4 | 浮动 IP 网络 |
undercloud 节点配备两个 NIC:
| 名称 | 用途 |
|---|---|
| nic1 | 用于管理网络 |
| nic2 | 用于 Provisioning 网络 |
6.2.3. 规划 NIC 连接 复制链接链接已复制到粘贴板!
在这种情况下,环境文件使用抽象的编号接口(nic1、 nic2),而不是主机操作系统上提供的实际设备名称,如 eth0 或 eno2。属于同一角色的主机不需要相同的网络接口设备名称。如果一个主机使用 em1 和 em2 接口,则没有问题,另一个主机使用 eno1 和 eno2。每个 NIC 都将被称为 nic1 和 nic2。
抽象的 NIC 方案仅依赖于实时和连接的接口。如果主机有不同数量的接口,就足以使用连接主机所需的最少接口数量。例如,如果一台主机上有 4 个物理接口和第 6 个物理接口,则您应该仅在两个主机上使用 nic1、 nic2、nic3 和 nic4 插件。
6.2.4. 规划网络、VLAN 和 IP 复制链接链接已复制到粘贴板!
此场景使用网络隔离来分隔管理、配置、内部 API、租户、公共 API 和浮动 IP 网络流量。
图 6.2. 在这种情况下使用的详细网络拓扑
下表显示了与每个网络关联的 VLAN ID 和 IP 子网:
| Network | VLAN ID | IP 子网 |
|---|---|---|
| 置备 | 原生 | 192.0.5.0/24 |
| 内部 API | 600 | 172.17.0.0/24 |
| 租户 | 554,555-601 | 172.16.0.0/24 |
| 公共 API | 552 | 192.168.210.0/24 |
| 浮动 IP | 553 | 10.35.186.146/28 |
OpenStack Platform director 创建 br-isolated OVS 网桥,并为网络配置文件中定义的每个网络添加 VLAN 接口。director 还自动创建 br-ex 网桥并附加了相关网络接口。
确保提供主机之间连接的物理网络交换机已正确配置,以承载这些 VLAN ID。您必须将主机面临的所有交换机端口配置为 VLAN 的 中继 。此处使用术语"中继"来描述允许多个 VLAN ID 穿过同一端口的端口。
物理交换机的配置指南不在本文档范围内。
network-environment.yaml 中的 TenantNetworkVlanID 可在使用 VXLAN 隧道时为租户网络定义 VLAN 标签(即 VXLAN 租户流量通过标记在lay 网络的 VLAN 传输)。如果需要租户网络通过原生 VLAN 运行,则此值也可能为空。另请注意,在使用 VLAN 租户网络时,可以使用除为 TenantNetworkVlanID 提供的值之外的 VLAN 标签。
6.2.5. 这种情境中使用的 OpenDaylight 配置文件 复制链接链接已复制到粘贴板!
要部署 OpenStack 和 OpenDaylight 的这种场景,在 undercloud 节点上输入以下部署命令:
本指南还显示此场景的配置文件、配置文件内容以及有关配置的信息。
6.2.5.1. extra_env.yaml 文件。 复制链接链接已复制到粘贴板!
该文件只有一个参数。
parameter_defaults:
OpenDaylightProviderMappings: 'datacentre:br-ex,tenant:br-vlan'
parameter_defaults:
OpenDaylightProviderMappings: 'datacentre:br-ex,tenant:br-vlan'
这些是每个节点的映射,由 OpenDaylight 控制,供 OpenDaylight 使用。物理网络 数据中心 映射到 br-ex OVS 网桥,租户网络流量映射到 br-vlan OVS 网桥。
6.2.5.2. undercloud.conf 文件 复制链接链接已复制到粘贴板!
此文件位于 /home/stack/ 目录中。
文件路径指向配置文件的自定义版本。
本例将 192.0.5.0/24 子网用于 Provisioning 网络。请注意,在 undercloud 节点上使用物理接口 eno2 来置备。
6.2.5.3. network-environment.yaml file 复制链接链接已复制到粘贴板!
这是配置网络的主要文件。它位于 /home/stack/baremetal-vlan/ 目录中。以下文件指定不同网络的 VLAN ID 和 IP 子网,并显示提供程序映射。nic-configs 目录中的 controller.yaml 和 compute.yaml 文件用于指定 Controller 和 Compute 节点的网络配置。
示例中指定 Controller 节点(3)和 Compute 节点(2)。
6.2.5.4. controller.yaml file 复制链接链接已复制到粘贴板!
此文件位于 /home/stack/baremetal-vlan/nic-configs/ 目录中。本例定义了以下交换机: br-isolated、br-vlan 和 br-ex。nic2 在 br-isolated 下,nic3 位于 br-ex 下:
6.2.5.5. compute.yaml 文件 复制链接链接已复制到粘贴板!
此文件位于 /home/stack/baremetal-vlan/nic-configs/ 目录中。计算配置中的大多数选项都与 Controller 配置中相同。在本例中,nic4 低于 br-ex 以用于外部连接(浮动 IP 网络 )
6.2.6. 此情境中使用的 Red Hat OpenStack Platform director 配置文件 复制链接链接已复制到粘贴板!
6.2.6.1. neutron.conf 文件 复制链接链接已复制到粘贴板!
此文件位于 /etc/neutron/ 目录中,并包含以下信息:
[DEFAULT] service_plugins=odl-router_v2,trunk
[DEFAULT]
service_plugins=odl-router_v2,trunk
6.2.6.2. ml2_conf.ini file 复制链接链接已复制到粘贴板!
此文件位于 /etc/neutron/plugins/ml2/ 目录中,并包含以下信息:
-
在 [ml2] 部分下,注意 VXLAN 用作网络类型,因此是
opendaylight_v2机制驱动程序。 -
在 [ml2_type_vlan] 下,设置与
network-environment.yaml文件中的相同映射。 - 在 [ml2_odl] 下,您应看到访问 OpenDaylightController 的配置。
您可以使用这些详情确认对 OpenDaylight Controller 的访问:
curl -H "Content-Type:application/json" -u admin:admin http://172.17.1.18:8081/controller/nb/v2/neutron/networks
$ curl -H "Content-Type:application/json" -u admin:admin http://172.17.1.18:8081/controller/nb/v2/neutron/networks
第 7 章 使用 OpenDaylight 的高可用性和集群 复制链接链接已复制到粘贴板!
Red Hat OpenStack Platform 13 支持 neutron 和 OpenDaylight Controller 的高可用性集群。下表显示了推荐运行高可用性集群的架构:
| 节点类型 | 节点数 | 节点模式 |
|---|---|---|
| Neutron | 3 | active/active/active |
| OpenDaylight | 3 | active/active/active |
| Compute 节点(nova 或 OVS) | any |
OpenDaylight 角色是可组合的,因此可以将它部署到与 neutron 节点或单独节点上的同一节点上。设置是一个全主动设置。所有节点可以处理请求。如果接收节点无法处理请求,节点会将请求转发到另一个适当的节点。所有节点保持相互同步。在 Open vSwitch 数据库模式(OVSDB)南向中,可用 Controller 节点共享 Open vSwitches,以便集群中的特定节点处理每个交换机。
7.1. 为高可用性和集群配置 OpenDaylight 复制链接链接已复制到粘贴板!
由于 Red Hat OpenStack Platform director 部署 OpenDaylight Controller 节点,它具有为 OpenDaylight 配置集群所需的所有信息。每个 OpenDaylight 节点都需要 akka.conf 配置文件来标识 节点角色 (集群中其名称),并列出了集群中至少一个其他节点,即 seed 节点。节点还需要一个 module-shards.conf 文件来定义如何在群集中复制数据。Red Hat OpenStack Platform director 根据所选的部署配置进行正确的设置。akka.conf 文件依赖于节点,而 module-shards.conf 文件则取决于节点和已安装的数据存储(以及我们控制大型扩展的功能)。
akka.conf 文件示例:
这些示例节点为 seed 节点。它们不需要将当前的集群设置反映为整个集群。只要当前集群中的其中一个实际节点可以使用 seed 节点列表访问,启动节点就可以加入集群。在配置文件中,您可以使用名称而不是 IP 地址。
7.2. 集群行为 复制链接链接已复制到粘贴板!
集群没有被动态定义,这意味着它不会自动调整。不能启动新的节点,并通过只配置新节点连接到现有集群。必须通过集群管理 RPC 来获知节点的添加和移除集群。
集群是一个领导/跟进器模型。一个活跃节点被选为领导节点,剩余的活跃节点会变为后续节点。集群根据基于 Raft consensus 的模型处理持久性。按照这个原则,只有在集群中的大多数节点都同意时才提交事务。
在 OpenDaylight 中,如果节点与集群断开连接,则其本地事务将不再进行转发。最终,它们将超时(默认为 10 分钟),并且前端会停止。所有这些都应用每个分片,因此不同的分片可以具有不同的领导者。这样做的结果会导致以下几项之一:
- 缺少与十分钟的沟通结果,会导致少量节点与大多数领导设备重新连接。所有事务都会回滚,大多数事务都会重新显示。
- 缺少 10 分钟以上的通信会导致次要节点停止工作并将信息记录到日志消息中。只读请求应该仍然完成,但没有更改,节点无法自动重新加入集群。
这意味着用户必须监控节点。用户必须检查可用性和集群同步,并在同步后重启它们。要监控节点,用户可以使用 Jolokia REST 服务。如需更多信息,请参阅使用 Jolokia 进行监控。
7.3. 集群要求 复制链接链接已复制到粘贴板!
不支持集群的特定网络要求,如绑定或 MTU。集群通信不支持高延迟,但对数据级别的顺序的延迟是可以接受的。
7.4. Open vSwitch 配置 复制链接链接已复制到粘贴板!
Red Hat OpenStack Platform director 会自动使用所有控制器配置每个交换机。OVSDB 支持在集群节点之间共享交换机,以允许出现一定程度的负载平衡。但是,每个交换机都联系集群中的所有节点,并首先选择一个答案,并使它默认成为主交换机。当最快的答案节点处理大部分交换机时,这种行为会导致控制器分配 集群。
7.5. 集群监控 复制链接链接已复制到粘贴板!
7.5.1. 使用 Jolokia 监控 复制链接链接已复制到粘贴板!
要监控集群的状态,您必须在 OpenDaylight 中启用 Jolokia 支持。
从 Jolokia 地址获取配置数据存储集群报告:
curl -u <odl_username><odl_password>http://<odl_ip>:8081/jolokia/read/org.opendaylight.controller:type=DistributedConfigDatastore,Category=ShardManager,name=shard-manager-config
# curl -u <odl_username><odl_password>http://<odl_ip>:8081/jolokia/read/org.opendaylight.controller:type=DistributedConfigDatastore,Category=ShardManager,name=shard-manager-config
从 Jolokia 地址获取操作数据存储集群报告:
curl -u <odl_username><odl_password>http://<odl_ip>:8081/jolokia/read/org.opendaylight.controller:type=DistributedOperationalDatastore,Category=ShardManager,name=shard-manager-operational
# curl -u <odl_username><odl_password>http://<odl_ip>:8081/jolokia/read/org.opendaylight.controller:type=DistributedOperationalDatastore,Category=ShardManager,name=shard-manager-operational
报告是 JSON 文档。
您必须更改 IP 地址和 member-1 值以匹配您的环境。如果没有首选节点响应,IP 地址可以指向 VIP。但是,寻址特定的控制器提供更多相关的结果。
此描述必须在每个节点上表示相同的领导人。
您还可以使用由上游 OpenDaylight 团队开发的 Cluster Monitor 工具监控集群。您可以在 OpenDaylight Github 存储库中找到它。
该工具不是 Red Hat OpenStack Platform 13 的一部分,它不受红帽的支持或提供。
7.6. 了解 OpenDaylight 端口 复制链接链接已复制到粘贴板!
所有 OpenDaylight 端口的官方列表可在 OpenDaylight wiki 页面上使用。与此情境相关的端口有:
| 端口号 | 用于 |
|---|---|
| 2550 | 集群 |
| 6653 | OpenFlow |
| 6640, 6641 | OVSDB |
| 8087 | neutron |
| 8081 | RESTCONF, Jolokia |
在控制器中阻塞到这些端口的流量有以下影响:
- 集群
- 集群节点无法通信。在集群模式下运行时,每个节点必须至少有一个 peer。如果所有流量都被阻断,控制器将停止。
- OpenFlow
- 交换机将无法访问控制器。
- OVSDB
- Open vSwitch 将无法到达控制器。控制器将能够启动活跃的 OVS 连接,但从切换到控制器的任何 ping 将失败,交换机最终将切换到另一个控制器。
- neutron
- Neutron 无法访问控制器。
- 其它确认
- 使用 REST 端点的外部工具将无法访问控制器。在这种情况下,它只应该影响监控工具。
在 OpenDaylight 端,日志只显示集群的阻塞流量,因为其他端口用于与 ODL 控制器通信。
在目标设备中阻止到这些端口的流量有以下影响:
- 集群
- 集群节点无法通信。在集群模式下运行时,每个节点必须至少有一个 peer。如果所有流量都被阻断,控制器将停止。
- OpenFlow
- 控制器将无法推送流。
- OVSDB
- 控制器将无法到达交换机(控制器将能够响应被动 OVS 连接)。
在后面的情况下,OpenDaylight 会维护其配置及其在不同树中的运行状态,配置仍然指向不可访问的设备,控制器继续尝试连接它们。
7.7. 了解 OpenDaylight 流 复制链接链接已复制到粘贴板!
| 流 | 解释 |
|---|---|
| Neutron → ODL | Neutron 向 ODL HA 代理.Pacemaker 管理 VIP (有三个后备 PIP)。驱动程序会尝试保持 TCP 会话处于打开状态,可能会影响(https://review.openstack.org/#/c/440866/)。 |
| ODL → Neutron | 没有 ODL 发起的通信。 |
| ODL → ODL | ODL 节点在端口 2550 (可配置)上互相通信。 |
| ODL → OVS | ODL 使用 OVSDB (端口 6640 和 6641)和 OpenFlow (端口 6633)与交换机通信。ODL 没有涉及 VIP,ODL 知道每个交换机的 IP 地址,每个 ODL 节点都知道每个交换机。 |
| OVS → ODL | ODL 使用 OVSDB (端口 6640 和 6641)和 OpenFlow (端口 6633)与交换机通信。ODL 没有涉及 VIP 的 VIP 配置每个交换机,以便它了解所有控制器。从交换机到控制器的通知将发送到所有节点。 |
7.8. Neutron DHCP 代理 HA 复制链接链接已复制到粘贴板!
默认设置在所有 neutron 节点上运行 DHCP 代理,以及 OVS 代理。角色是可组合的,因此代理可以与控制器分开。只有在端口上线阶段和租期续订期间,DHCP 代理才对 HA 非常重要。在创建端口时,neutron 会分配 IP 和 MAC 地址,并在端口启动前相应地配置所有 DHCP 代理。在这个阶段,所有 DHCP 代理都回答生成的 DHCP 请求。
为了在 DHCP 代理故障时实现数据平面可用性最大化,租期配置有长租期时间,节点将配置短暂的续订延迟。因此,DHCP 代理很少需要,但当请求节点是时,请求节点很快将无法使用 DHCP 代理并发出广播请求,自动获取所有剩余的 DHCP 代理。
代理具有自己的进程监控器。Systemd 启动代理,它们创建命名空间并在其中启动进程。如果代理停止,命名空间会保持启动,systemd 会在不终止或重启任何其他进程(不拥有它们)的情况下重启代理。然后代理重新连接到命名空间,并将其与所有正在运行的进程一起重新使用。
7.9. Neutron 元数据代理 HA 复制链接链接已复制到粘贴板!
在参考实施中,元数据服务在控制器上运行,它们与对应 DHCP 代理相同的命名空间中。元数据代理侦听端口 80,静态路由使用众所周知的元数据地址将虚拟机的流量重定向到代理。代理使用 Unix 套接字与元数据服务(位于同一节点上的)通信,后者与 nova 对话。在 Unix 套接字中,我们不需要在代理和服务之间路由 IP,因此即使节点没有路由,也会提供元数据服务。HA 使用 keepalive 和 VRRP 选举机制进行处理。故障转移时间为 2-5。代理的处理方式与 DHCP 代理(使用 systemd 和命名空间)相同。
Red Hat OpenStack Platform 11 中的元数据服务是一个自定义 Python 脚本,而在 Red Hat OpenStack Platform 13 中,它降低了内存用量 30。这尤其重要,因为许多用户在每个路由器运行一个代理,而且每个控制器没有数千个路由器。
| 组件 | 参考 |
|---|---|
| OpenDaylight | 有关本文档未涵盖的更多信息,请参阅 OpenDaylight Carbon 文档。 |
| Red Hat OpenDaylight 产品指南 | 有关 Red Hat OpenDaylight 及其与 Red Hat OpenStack Platform 的关系的更多信息,请参阅 Red Hat OpenDaylight 产品指南。 |
| Red Hat Enterprise Linux | Red Hat OpenStack Platform 需要运行在 Red Hat Enterprise Linux 7.4 上。有关安装 Red Hat Enterprise Linux 的详情,请参考 Red Hat Enterprise Linux 安装指南。 |
| Red Hat OpenStack Platform | 要安装 OpenStack 组件及其依赖项,请使用 Red Hat OpenStack Platform director。director 使用基本的 OpenStack undercloud,然后用于在最终 overcloud 中置备和管理 OpenStack 节点。请注意,除了部署的 overcloud 所需的环境之外,还需要一台额外的主机来安装 undercloud。具体步骤请查看 Director 安装和使用。 有关使用 Red Hat OpenStack Platform director (如网络隔离、存储配置、SSL 通信和常规配置方法)为 Red Hat OpenStack Platform 环境配置高级功能的详情,请参考 高级 Overcloud 自定义。 |
| NFV 文档 | 有关使用 NFV 规划 Red Hat OpenStack Platform 部署的更多详情,请参阅 网络功能虚拟化规划和配置指南。 |