现象:openstack dashboard novnc不能查看,报Failed to connect to server (code: 1006)错误
查看日志: 3个controller节点的consoleauth日志信息如下: token过期或者false
根据下面的vncproxy运行流程,应该是第10步nova-consoleauth cache的token和第14步的check token出错了。
VNC Proxy的功能:
VNC Proxy的部署
VNC Proxy的运行过程:
1.一个用户试图从浏览器里面打开连接到虚拟机的VNC Client 2.浏览器向nova-api发送请求,要求返回访问vnc的url 3.nova-api调用nova-compute的get vnc console方法,要求返回连接VNC的信息 4.nova-compute调用libvirt的get vnc console函数 5.libvirt会通过解析虚拟机运行的/etc/libvirt/qemu/instance-0000000c.xml文件来获得VNC Server的信息 6.libvirt将host, port等信息以json格式返回给nova-compute 7.nova-compute会随机生成一个UUID作为Token 8.nova-compute将libvirt返回的信息以及配置文件中的信息综合成connect_info返回给nova-api 9.nova-api会调用nova-consoleauth的authorize_console函数 10.nova-consoleauth会将instance –> token, token –> connect_info的信息cache起来 11.nova-api将connect_info中的access url信息返回给浏览器:http://172.24.1.1:6080/vnc_auto.html?token=7efaee3f-eada-4731-a87c-e173cbd25e98&title=helloworld%289169fdb2-5b74-46b1-9803-60d2926bd97c%29 12.浏览器会试图打开这个链接 13.这个链接会将请求发送给nova-novncproxy 14.nova-novncproxy调用nova-consoleauth的check_token函数 15.nova-consoleauth验证了这个token,将这个instance对应的connect_info返回给nova-novncproxy 16.nova-novncproxy通过connect_info中的host, port等信息,连接compute节点上的VNC Server,从而开始了proxy的工作
可能是控制节点高可用部署可能是memcache没配或者配错了
调查发现果然是配置项错了一个字母
/etc/nova/nova.conf中的配置项 memcached_servers
改成 memcache_servers
后novnc就可以访问了
感觉O版还是memcached_
,到了P版就改成了memcache_