第 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 的部署:

# A Heat environment that can be used to deploy OpenDaylight with L3 DVR using Docker containers
resource_registry:
  OS::TripleO::Services::NeutronOvsAgent: OS::Heat::None
  OS::TripleO::Services::ComputeNeutronOvsAgent: OS::Heat::None
  OS::TripleO::Services::ComputeNeutronCorePlugin: OS::Heat::None
  OS::TripleO::Services::OpenDaylightApi: ../../docker/services/opendaylight-api.yaml
  OS::TripleO::Services::OpenDaylightOvs: ../../puppet/services/opendaylight-ovs.yaml
  OS::TripleO::Services::NeutronL3Agent: OS::Heat::None
  OS::TripleO::Docker::NeutronMl2PluginBase: ../../puppet/services/neutron-plugin-ml2-odl.yaml

parameter_defaults:
  NeutronEnableForceMetadata: true
  NeutronPluginExtensions: 'port_security'
  NeutronMechanismDrivers: 'opendaylight_v2'
  NeutronServicePlugins: 'odl-router_v2,trunk'
  OpenDaylightLogMechanism: 'console'
Copy to Clipboard Toggle word wrap

Red Hat OpenStack Platform director 使用 resource_registry 将部署的资源映射到对应的资源定义 yaml 文件。服务是您可以映射的一个资源类型。如果要禁用特定的服务,请设置值 OS::Heat::None。在默认的 文件中,启用 OpenDaylightApiOpenDaylightOvs 服务,而默认的 neutron 代理被明确禁用,因为 OpenDaylight 会继承其功能。

您可以使用 heat 参数通过 director 配置部署的设置。您可以使用环境文件的 parameter_defaults 部分覆盖其默认值。

在本例中,NeutronEnableForceMetadataNeutronMechanismDriversNeutronServicePlugins 参数设置为启用 OpenDaylight。

注意

本指南稍后会提供其他服务及其配置选项列表。

3.1.2. 配置 OpenDaylight API 服务

您可以更改 /usr/share/openstack-tripleo-heat-templates/puppet/services/opendaylight-api.yaml 文件中的默认值以满足您的需要。不要直接覆盖此文件中的设置。复制此文件并保留原始备份解决方案。仅修改重复项并将重复内容传递给部署命令。

注意

后者环境文件中的参数将覆盖之前环境文件中设置的参数。确保您注意环境文件的顺序,以避免意外覆盖参数。

3.1.2.1. 可配置选项

当您配置 OpenDaylight API 服务时,您可以设置几个参数:

Expand

OpenDaylightPort

用于北向通信的端口。默认值为 0。此参数在 OSP 13 中已弃用。

OpenDaylightUsername

OpenDaylight 的登录用户名。默认值为 admin

OpenDaylightPassword

OpenDaylight 的登录密码。默认值为 admin

OpenDaylightEnableDHCP

启用 OpenDaylight 充当 DHCP 服务。默认值为 false

OpenDaylightFeatures

在 OpenDaylight 中引导的以逗号分隔的功能列表。默认值为 [odl-netvirt-openstack, odl-jolokia]

OpenDaylightConnectionProtocol

用于 REST 的 L7 协议。默认值为 http

OpenDaylightManageRepositories

定义是否管理 OpenDaylight 存储库。默认值为 false

OpenDaylightSNATMechanism

OpenDaylight 使用的 SNAT 机制。选择 conntrackcontroller。默认值为 conntrack

OpenDaylightLogMechanism

OpenDaylight 的日志记录机制。选择 文件或 控制台。默认值为 文件

OpenDaylightTLSKeystorePassword

OpenDaylight TLS 密钥存储的密码。默认值为 opendaylight。密码必须至少为 6 个字符。

EnableInternalTLS

启用或禁用内部网络中的 TLS。您可以使用值 truefalse。默认值为 false

InternalTLSCAFile

如果为内部网络中的服务启用 TLS,则必须使用 InternalTLSCAFile 参数指定默认 CA 证书。默认值为 /etc/ipa/ca.crt

有关如何使用 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 时,您可以设置几个参数:

Expand

OpenDaylightPort

用于向 OpenDaylight 进行北向通信的端口。默认值为 0。OVS 服务使用北向查询 OpenDaylight,以确保在连接前完全启动。此参数在 OSP 13 中已弃用。

OpenDaylightConnectionProtocol

用于 REST 访问的第 7 层协议。默认值为 httpHTTP 是 OpenDaylight 中唯一支持的协议。此参数在 OSP 13 中已弃用。

OpenDaylightCheckURL

在 OVS 连接前,验证 OpenDaylight 的 URL 已完全启动。默认值为 restconf/operational/network-topology:network-topology/topology/netvirt:1

OpenDaylightProviderMappings

以逗号分隔的逻辑网络和物理接口之间的映射列表。VLAN 部署需要此设置。默认值为 datacentre:br-ex

OpenDaylightUsername

OpenDaylight OVS 服务的自定义用户名。默认值为 admin

OpenDaylightPassword

OpenDaylight OVS 服务的自定义密码。默认值为 admin

HostAllowedNetworkTypes

定义此 OVS 主机允许的租户网络类型。它们可能因主机或角色而异,以限制 nova 实例和网络调度到的主机。默认值为 ['local', 'vlan', 'vxlan', 'gre', 'flat']

OvsEnableDpdk

在 OVS 中启用或禁用 DPDK。默认值为 false

OvsVhostuserMode

创建 vhostuser 端口的 OVS 模式。在客户端模式中,虚拟机监控程序负责创建 vhostuser 套接字。在服务器模式中,OVS 会创建它们。默认值为 客户端

VhostuserSocketDir

用于 vhostuser 套接字的目录。默认值为 /var/run/openvswitch

OvsHwOffload

启用或禁用 OVS 硬件卸载。您可以使用 truefalse。默认值为 false。这个参数是本发行版本的技术预览。

EnableInternalTLS

启用或禁用内部网络中的 TLS。您可以使用值 truefalse。默认值为 false

InternalTLSCAFile

如果为内部网络中的服务启用 TLS,则必须使用 InternalTLSCAFile 参数指定默认 CA 证书。默认值为 /etc/ipa/ca.crt

ODLUpdateLevel

OpenDaylight 更新级别。您可以使用值 12。默认值为:1

VhostuserSocketGroup

vhost-user 套接字目录组。当 vhostuser 处于默认的 dpdkvhostuserclient 模式时,qemu 会创建 vhost 套接字。VhostuserSocketGroup 的默认值为 qemu

VhostuserSocketUser

vhost-user 套接字目录用户名。当 vhostuser 处于默认的 dpdkvhostuserclient 模式时,qemu 会创建 vhost 套接字。VhostuserSocketUser 的默认值为 qemu

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 网桥可以映射到网络隔离中的任何网络,但通常映射到外部网络,如示例中所示。

type: ovs_bridge
  name: {get_input: bridge_name}
  use_dhcp: false
  members:
    -
      type: interface
      name: nic3
      # force the MAC address of the bridge to this interface
      primary: true
  dns_servers: {get_param: DnsServers}
  addresses:
    -
      ip_netmask: {get_param: ExternalIpSubnet}
  routes:
    -
      default: true
      ip_netmask: 0.0.0.0/0
      next_hop: {get_param: ExternalInterfaceDefaultRoute}
Copy to Clipboard Toggle word wrap

使用 DPDK 时,您必须创建另一个 OVS 网桥,通常称为 br-phy,并为它提供 ovs-dpdk-port。网桥的 IP 地址是为 VXLAN 覆盖网络隧道配置的。

type: ovs_user_bridge
      name: br-phy
      use_dhcp: false
      addresses:
          -
              ip_netmask: {get_param: TenantIpSubnet}
              members:
                  -
                      type: ovs_dpdk_port
                      name: dpdk0
                      driver: uio_pci_generic
                      members:
                          -
                              type: interface
                              name: nic1
                              # force the MAC address of the bridge to this interface
                              primary: true
Copy to Clipboard Toggle word wrap
注意

在使用网络隔离时,您不需要将 IP 地址或默认路由放在 Compute 节点上的这个网桥中。

或者,您可以在不使用 br-ex 网桥的情况下配置外部网络访问。要使用此方法,您必须事先知道 overcloud Compute 节点的接口名称。例如,如果 eth3 是 Compute 节点上的第三个接口的确定性名称,那么您可以使用它为 Compute 节点在 NIC 模板中指定接口。

-
  type: interface
  name: eth3
  use_dhcp: false
Copy to Clipboard Toggle word wrap
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2026 Red Hat