Fuel6.1 Mirantis OpenStack 中使用vnc无法连接虚拟机

http://www.xiaopeiqing.com/posts/2121.html

用Mirantis搭建了OpenStack环境,但是在instance启用虚拟机的时候显示连接超时(“Connection timeout“),问题排查了一天,终于找到了原因,下面挨踢小茶来介绍一下具体有哪些因素可能会导致这种情况。

OpenStack-logo

  首先查看controller下/var/log/nova/nova-novncproxy.log文件,看看会有什么报错:

2015-07-15 12:28:49.341 3960 INFO nova.console.websocketproxy [req-a08c6137-5729-47ba-9d4e-2f7db78a12b7 None] 46: connecting to: 10.186.182.7:5900
2015-07-15 12:28:59.358 3960 INFO nova.console.websocketproxy [req-a08c6137-5729-47ba-9d4e-2f7db78a12b7 None] handler exception: [Errno 32] Broken pipe

  看到了虚拟机尝试连接compute节点(10.186.182.7)的VNC端口(5900),但直接出现了报错。

  因此先查看一下10.186.182.4的5901的联通性:

在controller下查看:

[root@node-4 ~]# telnet 10.186.182.7 5900
Trying 10.186.182.7…
Connected to 10.186.182.7.
Escape character is ‘^]’.
RFB 003.008

  发现compute节点的5900端口是打开的,而且可以正常连接该端口。

  因此重新检查controller节点和compute节点关于nova的配置文件,配置文件也没有太大问题。

在controller节点上输入“nova get-vnc-console test2 novnc”,结果如下:

+——-+———————————————————————————–+
| Type | Url |
+——-+———————————————————————————–+
| novnc | http://10.186.182.2:6080/vnc_auto.html?token=1a724d49-dd86-4081-aa05-64cadeac52ef |
+——-+———————————————————————————–+

  通过此URL去访问虚拟机,发现还是同样的报错”connection timeout”

  后来在一个论坛上终于找到了解决的方案,是一个DNS引起的问题。

https://bugs.launchpad.net/mos/+bug/1409661

  原因是Mirantis的Master节点没有连接到公网的地址,而默认在这个节点上会使用8.8.8.8的DNS服务器地址来做地址解析,所以如果该节点访问不了这个地址(就算连接到Internet也可能访问不了这个地址,因为8.8.8.8是Google的服务器,会被和谐掉,你懂的),就会出现DNS解析超时的情况,因此会出现如题所示的错误。解决方法有2个,一个是将8.8.8.8地址改为一个内网或者公网可以访问到DNS服务器,二是将这个地址改为127.0.0.1,此服务器会忽略DNS解析过程。具体操作步骤如下:

  • dockerctl shell cobbler
  • vi /etc/dnsmasq.upstream
  • 更改8.8.8.8到一个内网或者公网的DNS服务器,或者改成127.0.0.1
  •  /etc/init.d/dnsmasq reload

  然后再试试访问虚拟机的VNC Console,发现已经可以正常访问啦!


 

  其实后来挨踢小茶发现,主要原因是因为用Mirantis部署的所有节点,都会默认使用Mirantis Master上的cobbler机器来做DNS解析,其实解决这个问题的最好方法是将所有节点的/etc/resolv.conf文件进行修改,将DNS修改为公网地址或者是内网可以访问的DNS服务器的地址!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值