6.13. 修复无法在边缘站点上注册的 OVN 控制器
- 问题
Red Hat OpenStack Platform (RHOSP)边缘站点上的 OVN 控制器无法注册。
注意这个错误可能会在从早期 RHOSP 版本-RHOSP 16.1.7 及更早版本或 RHOSP 16.2.0 更新的 RHOSP 16.2 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。 - 解决方案
按照以下步骤解决这个问题:
如果您还没有,请为此流程稍后使用的必要 OVN 数据库命令创建别名。
如需更多信息,请参阅为 OVN 故障排除命令创建别名。
以具有访问 OVN 容器所需的权限的用户身份登录到 Controller 主机。
示例
$ ssh heat-admin@controller-0.ctlplane
-
从
/var/log/containers/openvswitch/ovn-controller.log
获取 IP 地址 确认 IP 地址正确:
ovn-sbctl list encap |grep -a3 <IP address from ovn-controller.log>
删除包含 IP 地址的机箱:
ovn-sbctl chassis-del <chassis-id>
检查
Chassis_Private
表以确认已删除 chassis:ovn-sbctl find Chassis_private chassis="[]"
如果报告任何条目,使用以下命令删除它们:
$ ovn-sbctl destroy Chassis_Private <listed_id>
重启以下容器:
-
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 | +------------------------------+-------+----------------------------+