第 17 章 使用路由器类别创建自定义虚拟路由器

重要

本节的内容在此发行版本中 作为技术预览提供,因此不受红帽完全支持。它只应用于测试,不应部署在生产环境中。如需更多信息,请参阅 技术预览

您可以使用路由器类别在 Red Hat OpenStack Platform (RHOSP) ML2/OVN 环境中部署自定义虚拟路由器。启用路由器类别功能后,您可以创建路由器类别,并使用它们创建自定义路由器。

在 RHOSP 部署中,您可以将基于路由器类别的虚拟自定义路由器与默认 OVN 类型的路由器合并。

此可选功能不会影响默认 OVN 虚拟路由器的操作。如果您启用了路由器类别功能,则默认 OVN 路由器将被视为 default 类别,不会影响其配置或操作。

17.1. 启用路由器类型并为自定义路由器创建服务提供商

在使用可选路由器类别功能前,RHOSP 管理员必须通过将 ovn-routers 服务替换为 ovn-router-flavors 服务来启用该功能,并为每个自定义路由器创建一个服务提供商。

您必须在 Networking 服务(neutron)目录中的模块中部署您的服务供应商代码。红帽建议 neutron.services.ovn_l3.service_providers.user_defined 模块。

您可以在 neutron.services.ovn_l3.service_providers.user_defined 模块中找到名为 UserDefined 的示例服务提供商。

注意

以下流程涉及直接编辑 Controller 节点上的 .conf 文件。红帽正在开发 heat 模板方法和 OpenStack 命令,以取代此直接编辑方法。

先决条件

  • 您已为部署创建了路由器类别服务供应商。
  • 您可以访问 RHOSP Controller 节点并更新配置文件的权限。

流程

  1. 在每个 Controller 节点上,对 /var/lib/config-data/puppet-generated/neutron/etc/neutron/neutron.conf 进行以下更改,然后重新启动网络服务(Neutron)。

    1. service_plugins 列表中,将 ovn-routers 更改为 ovn-router-flavors
    2. 创建 service_providers 部分,并为计划使用的每个路由器类别添加一个服务供应商变量。

      示例

      本例添加了两个服务提供程序: user_defined_1user_defined_2

      [DEFAULT]
      service_plugins = qos,ovn-router-flavors,trunk,segments,port_forwarding,log
      
      ...
      
      [service_providers]
      service_provider = L3_ROUTER_NAT:user_defined_1:neutron.services.ovn_l3.service_providers.user_defined.UserDefined_1
      service_provider = L3_ROUTER_NAT:user_defined_2:neutron.services.ovn_l3.service_providers.user_defined.UserDefined_2

      路由器类别服务提供商定义具有以下元素:

      服务供应商常数
      L3_ROUTER_NAT
      Name
      服务提供商的名称,它是两个冒号字符之间的描述性字符串。例如,:user_defined_1::user_defined_2:。名称在环境中必须是唯一的。
      路径
      红帽建议使用此路径: neutron.services.ovn_l3.service_providers.user_defined
      服务提供商的 python 类名称。每个提供程序都有自己的类。例如,UserDefined_1UserDefined_2

验证

  • 验证您的用户定义的服务供应商是否已加载:

       $ openstack network service provider list

    如果流程成功,新服务会出现在列表中。

       +-------------------------+-------+---------+
       | Service Type  | Name            | Default |
       +---------------+-----------------+---------+
       | L3_ROUTER_NAT | user_defined_1  | False   |
       | L3_ROUTER_NAT | user_defined_1  | False   |
       | L3_ROUTER_NAT | ovn             | True    |
       +---------------+-----------------+---------+