3.2. 对身份客户端(keystone)连接问题进行故障排除
当 Identity 客户端(keystone)无法联系 Identity 服务时,它会返回错误:
Unable to communicate with identity service: [Errno 113] No route to host. (HTTP 400)
Unable to communicate with identity service: [Errno 113] No route to host. (HTTP 400)
要调试这些常见原因的问题检查:
- Identity 服务已停机
在托管 Identity 服务的系统中,检查服务状态:
openstack-status | grep keystone
# openstack-status | grep keystone openstack-keystone: activeCopy to Clipboard Copied! Toggle word wrap Toggle overflow 如果服务没有运行,则以 root 用户身份登录并启动该服务。
service openstack-keystone start
# service openstack-keystone startCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 没有正确配置防火墙
-
防火墙可能无法配置为允许端口
5000和35357上的 TCP 流量。如果是这样,请参阅 安装参考 中的 将防火墙配置为允许身份服务流量。 - 未正确定义的服务端点
在托管身份服务的系统上,检查端点是否已正确定义。
获取管理令牌:
grep admin_token /etc/keystone/keystone.conf
# grep admin_token /etc/keystone/keystone.conf admin_token = 0292d404a88c4f269383ff28a3839ab4Copy to Clipboard Copied! Toggle word wrap Toggle overflow 确定 Identity 服务的正确管理端点:
http://IP:35357/VERSION
http://IP:35357/VERSIONCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用托管 Identity 服务的系统的 IP 地址或主机名替换 IP。将 VERSION 替换为正在使用的 API 版本 (
v2.0或v3)。取消设置任何预定义的 Identity 服务相关环境变量:
unset OS_USERNAME OS_TENANT_NAME OS_PASSWORD OS_AUTH_URL
# unset OS_USERNAME OS_TENANT_NAME OS_PASSWORD OS_AUTH_URLCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用管理令牌和端点来与 Identity 服务进行身份验证。确认 Identity 服务端点正确:
keystone --os-token=TOKEN \ --os-endpoint=ENDPOINT \ endpoint-list# keystone --os-token=TOKEN \ --os-endpoint=ENDPOINT \ endpoint-listCopy to Clipboard Copied! Toggle word wrap Toggle overflow 验证 Identity 服务列出的
publicurl、internalurl和adminurl是否正确。特别是,请确保每个端点中列出的 IP 地址和端口号正确,并可通过网络访问。如果这些值不正确,请参阅 安装参考中的 创建 Identity Service Endpoint 以了解有关添加正确端点的信息。添加正确的端点后,使用
keystone命令的endpoint-delete操作删除所有不正确的端点:keystone --os-token=TOKEN \ --os-endpoint=ENDPOINT \ endpoint-delete ID# keystone --os-token=TOKEN \ --os-endpoint=ENDPOINT \ endpoint-delete IDCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将 TOKEN 和 ENDPOINT 替换为前面标识的值。将 ID 替换为端点的身份,以移除
endpoint-list操作所列出的。