6.14. 修复无法在边缘站点上注册的 OVN 控制器

问题

Red Hat OpenStack Platform (RHOSP) 边缘站点上的 OVN 控制器无法注册。

注意

这个错误可能会在从早期 RHOSP 版本-​RHOSP 16.1.7 及更早版本或 RHOSP 16.2.0 更新的 RHOSP 17.1 ML2/OVN 部署中发生。

错误示例

遇到的错误类似如下:

2021-04-12T09:14:48.994Z|04754|ovsdb_idl|WARN|transaction error: {"details":"Transaction causes multiple rows in \"Encap\" table to have identical values (geneve and \"10.14.2.7\") for index on columns \"type\" and \"ip\".  First row, with UUID 3973cad5-eb8a-4f29-85c3-c105d861c0e0, was inserted by this transaction.  Second row, with UUID f06b71a8-4162-475b-8542-d27db3a9097a, existed in the database before this transaction and was not modified by the transaction.","error":"constraint violation"}
原因
如果 ovn-controller 进程替换了主机名,它会注册另一个包含另一个 encap 条目的机箱条目。如需更多信息,请参阅 BZ#1948472
解决方案

按照以下步骤解决这个问题:

  1. 如果您还没有这么做,请为稍后您将在此流程中使用的必要 OVN 数据库命令创建别名。

    如需更多信息,请参阅为 OVN 故障排除命令创建别名

  2. 以具有访问 OVN 容器所需的权限的用户身份,登录 Controller 主机。

    示例

    $ ssh tripleo-admin@controller-0.ctlplane

  3. /var/log/containers/openvswitch/ovn-controller.log 获取 IP 地址
  4. 确认 IP 地址正确:

    ovn-sbctl list encap |grep -a3 <IP address from ovn-controller.log>
  5. 删除包含 IP 地址的机箱:

    ovn-sbctl chassis-del <chassis-id>
  6. 检查 Chassis_Private 表,以确认删除了机箱:

    ovn-sbctl find Chassis_private chassis="[]"
  7. 如果报告任何条目,使用以下命令删除它们:

    $ ovn-sbctl destroy Chassis_Private <listed_id>
  8. 重启以下容器:

    • tripleo_ovn_controller
    • tripleo_ovn_metadata_agent

      $ sudo systemctl restart tripleo_ovn_controller
      $ sudo systemctl restart tripleo_ovn_metadata_agent

验证

  • 确认 OVN 代理正在运行:

    $ openstack network agent list -c "Agent Type" -c State -c Binary

    输出示例

    +------------------------------+-------+----------------------------+
    | Agent Type                   | State | Binary                     |
    +------------------------------+-------+----------------------------+
    | OVN Controller Gateway agent | UP    | ovn-controller             |
    | OVN Controller Gateway agent | UP    | ovn-controller             |
    | OVN Controller agent         | UP    | ovn-controller             |
    | OVN Metadata agent           | UP    | neutron-ovn-metadata-agent |
    | OVN Controller Gateway agent | UP    | ovn-controller             |
    +------------------------------+-------+----------------------------+