openstack控制台出错Failed to connect to server (code: 1006)

本文针对OpenStack环境中VNC控制台出现连接失败的问题进行深入分析,并提供了详细的故障排查步骤及解决方案,包括检查域名解析、服务状态、日志记录等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#错误描述 :
打开openstack控制台后,控制台出错,显示Failed to connect to server (code: 1006),如下图:
这里写图片描述

#错误分析:
点击只显示控制台可看到地址是controller:6080…… 应该是域名解析出错。域名解析出错也可分为两个地方,1.nova节点的/etc/hosts中controller解析错误或者像下面nova节点的nova.conf中的[default]节中的配置出错;2.打开控制台的那台主机的域名解析出错,把controller解析成了别的ip(windows系统的/etc/hosts文件在C:\Windows\System32\drivers\etc\hosts)
这里写图片描述

[default]
……
novncproxy_base_url = http://controller:6080/vnc_auto.html

#解决方案
修改nova节点的nova.conf文件把上面的controller改成自己控制节点的ip


20181002更新

vnc界面如果出问题,排查思路如下

  • 先查看计算节点nova-compute服务正不正常
systemctl status openstack-nova-compute
  • 查看livirtd服务正不正常
systemctl status libvirtd
  • 用vnc客户端直接连接计算节点虚拟机 看能否连通
    • 查看虚拟机对应的kvm实例名
nova show 4f877e37-6a8e-4b96-9727-66ac0774da9c|grep instance
      + 查看虚拟机vnc端口
virsh vncdisplay $intance_name
      + 通过vnc客户端连接查看下vnc是否可用 或者telnet 查看该端口是否启用 
  • 查看控制节点novncproxy服务正不正常
  • 查看控制节点nova-consoleauth服务正不正常

反之亦可,控制节点通过sockify代理novnc 控制节点得novnc代理计算节点kvm的vnc


20190314更新

查看novncproxy日志/var/log/nova/nova-novncproxy.log

2019-03-13 09:48:52.380 166194 DEBUG nova.console.websocketproxy [-] Closing socket listening at 172.16.0.2:6080 vmsg /usr/lib/python2.7/dist-packages/websockify/websocket.py:878
2019-03-13 09:48:57.428 173428 INFO nova.console.websocketproxy [-] WebSocket server settings:
2019-03-13 09:48:57.428 173428 INFO nova.console.websocketproxy [-]   - Listen on 172.16.0.2:6080
2019-03-13 09:48:57.428 173428 INFO nova.console.websocketproxy [-]   - Flash security policy server
2019-03-13 09:48:57.428 173428 INFO nova.console.websocketproxy [-]   - Web server (no directory listings). Web root: /usr/share/novnc
2019-03-13 09:48:57.429 173428 INFO nova.console.websocketproxy [-]   - No SSL/TLS support (no cert file)
2019-03-13 09:48:57.429 173428 INFO nova.console.websocketproxy [-]   - proxying from 172.16.0.2:6080 to None:None
2019-03-13 09:52:16.630 173428 DEBUG nova.console.websocketproxy [-] 172.16.0.3: new handler Process vmsg /usr/lib/python2.7/dist-packages/websockify/websocket.py:878
2019-03-13 09:52:16.679 173428 DEBUG nova.console.websocketproxy [-] 172.16.0.3: new handler Process vmsg /usr/lib/python2.7/dist-packages/websockify/websocket.py:878
2019-03-13 09:52:16.683 174927 INFO nova.console.websocketproxy [-] 172.16.0.3 - - [13/Mar/2019 09:52:16] 172.16.0.3: Plain non-SSL (ws://) WebSocket connection
2019-03-13 09:52:16.684 174927 INFO nova.console.websocketproxy [-] 172.16.0.3 - - [13/Mar/2019 09:52:16] 172.16.0.3: Version hybi-13, base64: 'False'
2019-03-13 09:52:16.684 174927 INFO nova.console.websocketproxy [-] 172.16.0.3 - - [13/Mar/2019 09:52:16] 172.16.0.3: Path: '/websockify'
2019-03-13 09:52:16.715 174927 INFO nova.console.websocketproxy [req-3b13cf5e-fef1-4312-88bc-09d262030e6f - - - - -] handler exception: The token '5e795d5a-77ce-4fd4-817d-89a81b7545fe' is invalid or has expired
2019-03-13 09:52:16.715 174927 DEBUG nova.console.websocketproxy [req-3b13cf5e-fef1-4312-88bc-09d262030e6f - - - - -] exception vmsg /usr/lib/python2.7/dist-packages/websockify/websocket.py:878
2019-03-13 09:52:16.715 174927 ERROR nova.console.websocketproxy Traceback (most recent call last):
2019-03-13 09:52:16.715 174927 ERROR nova.console.websocketproxy   File "/usr/lib/python2.7/dist-packages/websockify/websocket.py", line 933, in top_new_client
2019-03-13 09:52:16.715 174927 ERROR nova.console.websocketproxy     client = self.do_handshake(startsock, address)
2019-03-13 09:52:16.715 174927 ERROR nova.console.websocketproxy   File "/usr/lib/python2.7/dist-packages/websockify/websocket.py", line 863, in do_handshake
2019-03-13 09:52:16.715 174927 ERROR nova.console.websocketproxy     self.RequestHandlerClass(retsock, address, self)
2019-03-13 09:52:16.715 174927 ERROR nova.console.websocketproxy   File "/usr/lib/python2.7/dist-packages/nova/console/websocketproxy.py", line 176, in __init__
2019-03-13 09:52:16.715 174927 ERROR nova.console.websocketproxy     websockify.ProxyRequestHandler.__init__(self, *args, **kwargs)
2019-03-13 09:52:16.715 174927 ERROR nova.console.websocketproxy   File "/usr/lib/python2.7/dist-packages/websockify/websocket.py", line 114, in __init__
2019-03-13 09:52:16.715 174927 ERROR nova.console.websocketproxy     SimpleHTTPRequestHandler.__init__(self, req, addr, server)
2019-03-13 09:52:16.715 174927 ERROR nova.console.websocketproxy   File "/usr/lib/python2.7/SocketServer.py", line 652, in __init__
2019-03-13 09:52:16.715 174927 ERROR nova.console.websocketproxy     self.handle()
2019-03-13 09:52:16.715 174927 ERROR nova.console.websocketproxy   File "/usr/lib/python2.7/dist-packages/websockify/websocket.py", line 581, in handle
2019-03-13 09:52:16.715 174927 ERROR nova.console.websocketproxy     SimpleHTTPRequestHandler.handle(self)
2019-03-13 09:52:16.715 174927 ERROR nova.console.websocketproxy   File "/usr/lib/python2.7/BaseHTTPServer.py", line 340, in handle
2019-03-13 09:52:16.715 174927 ERROR nova.console.websocketproxy     self.handle_one_request()
2019-03-13 09:52:16.715 174927 ERROR nova.console.websocketproxy   File "/usr/lib/python2.7/BaseHTTPServer.py", line 328, in handle_one_request
2019-03-13 09:52:16.715 174927 ERROR nova.console.websocketproxy     method()
2019-03-13 09:52:16.715 174927 ERROR nova.console.websocketproxy   File "/usr/lib/python2.7/dist-packages/websockify/websocket.py", line 543, in do_GET
2019-03-13 09:52:16.715 174927 ERROR nova.console.websocketproxy     if not self.handle_websocket():
2019-03-13 09:52:16.715 174927 ERROR nova.console.websocketproxy   File "/usr/lib/python2.7/dist-packages/websockify/websocket.py", line 531, in handle_websocket
2019-03-13 09:52:16.715 174927 ERROR nova.console.websocketproxy     self.new_websocket_client()
2019-03-13 09:52:16.715 174927 ERROR nova.console.websocketproxy   File "/usr/lib/python2.7/dist-packages/nova/console/websocketproxy.py", line 108, in new_websocket_client
2019-03-13 09:52:16.715 174927 ERROR nova.console.websocketproxy     raise exception.InvalidToken(token=token)
2019-03-13 09:52:16.715 174927 ERROR nova.console.websocketproxy InvalidToken: The token '5e795d5a-77ce-4fd4-817d-89a81b7545fe' is invalid or has expired
2019-03-13 09:52:16.715 174927 ERROR nova.console.websocketproxy

通过日志可以看出是token问题 过期或者无效,缓存token的是memcache

查看nova-consoleauthr日志/var/log/nova/nova-consoleauth.log

2019-03-13 09:52:24.075 173407 INFO nova.consoleauth.manager [req-a1e9b25d-39ea-420c-970a-1156fee6f5f5 - - - - -] Checking Token: 5e795d5a-77ce-4fd4-817d-89a81b7545fe, False

查看nova-console nova-novncproxy服务是否正常

tstack中token都是用memcache来缓存得 查看nova。conf中 memcache的配置

[cache]
backend = oslo_cache.memcache_pool
enabled = True
memcached_servers = 172.16.0.2:11211,172.16.0.3:11211,172.16.0.4:11211

可以看到是memcached_servers这个选项写错修改成memcache_servers重启nova服务解决问题

### 问题分析 在 OpenStack 环境中,如果 Keystone 服务无法成功重启并伴随有诸如 **"Failed to discover available identity versions"** 和 **HTTP 500 Internal Server Error** 的错误信息,则可能涉及到多个层面的问题,包括但不限于服务单元丢失、配置文件权限不足或网络连接异常等。 --- ### 解决方案 #### 1. 单元未找到 (Unit Not Found) 当尝试重启 Keystone 服务时收到 "unit not found" 错误,这通常意味着系统未能识别到 Keystone 的 systemd 服务单元文件。可以通过以下方式验证和修复: - 检查是否存在 Keystone 的服务单元文件: ```bash ls /lib/systemd/system/openstack-keystone.service ``` - 若不存在,重新安装 Keystone 包以恢复缺失的服务定义: ```bash apt-get install --reinstall openstack-keystone yum reinstall openstack-keystone ``` - 更新 systemd 配置缓存并重试启动命令: ```bash systemctl daemon-reload systemctl start openstack-keystone ``` 上述过程有助于确保正确的服务管理入口可用[^1]。 --- #### 2. 身份验证版本解析失败 关于 **"Failed to discover available identity versions"** 这一现象,主要源于客户端试图访问 Keystone API endpoint (如 `http://controller:5000/v3` 或者 `http://controller:35357/v3`)却得不到预期回应所致。 - 测试端口开放情况与服务监听状态: ```bash netstat -tulpn | grep :5000 ss -tulwn | grep :5000 ``` 假如发现没有进程绑定至相应端口号,则需进一步审查 Keystone 是否按计划激活以及其配置参数是否恰当指向本地地址而非远程不可达位置[^3]。 --- #### 3. HTTP 500 内部服务器错误 针对报错中的 **500 Internal Server Error**, 应优先查阅相关日志文档寻找具体线索。已知部分场景下因缺乏适当读取配置档案的权利而导致类似状况发生过。 - 修改 `/etc/placement/placement.conf` 权限以便程序顺利加载设定项: ```bash chmod 640 /etc/placement/placement.conf chown root:placement /etc/placement/placement.conf ``` 同时也要记得同步处理关联路径下的辅助资料集比如 `/usr/share/placement/placement-dist.conf` ,保证整个框架内的所有组成部分均处于受控状态下运作良好[^2]。 --- #### 4. 综合性排查步骤 最后提供一套较为全面的诊断流程供参考应用: - 停止现有 Keystone 实例以防干扰后续操作; - 清理残留会话数据减少潜在冲突风险; - 手动触发数据库同步动作巩固底层支撑架构稳定性; - 最终再次尝试常规途径唤起目标功能模块直至恢复正常运转为止。 每完成一步都应当密切监视反馈结果从而及时调整方向直到彻底消除现存障碍为止。 --- ### 结论 综上所述,面对 OpenStack Keystone 服务重启失败的情况,可以从服务单元完整性校验起步逐步深入探索影响因素范围涵盖网络交互质量评估乃至细粒度授权机制优化等多个维度展开针对性治理行动最终达成稳定可靠的运行效果。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值