大家都知道,CloudStack组件中有2个系统虚拟机,分别叫做:
Secondary Storage VM: 二级存储虚拟机,简称SSVM,命名标准:s-n-VM ,用于管理二级存储的相关操作,如模板跟镜像文件的上传与下载,快照,volumes的存放,第一次创建虚拟机时从二级存储拷贝模板到一级存储并且自动创建快照,每一个资源域可以有多个SSVM,当SSVM被删除或停止,它会自动被重建并启动。

Console Proxy VM:控制台代理虚拟机,简称CPVM,命名标准:v-n-VM, 用于在 web 界面上展示控制台。


本文主要讨论CloudStack在平时测试或者生产环境中出现的控制台打不开的问题。


1. 提示如下信息

CloudStack 打开实例Console报错分析_第1张图片

图 提示通讯错误

CloudStack 打开实例Console报错分析_第2张图片

图 提示回话访问被拒绝

解决方法:

(1) 点击CPVM的Console是否正常,如果也打不开,IP地址也不能Ping通,删除CPVM,让CloudStack进行重建即可

(2) 如果CPVM的Console正常,重新打开之前报错的虚拟机Console

这个问题一般不大,基本就是 CPVM由于某些原因出现了异常,不能正常提供服务


2. 报DNS错误或者无法连接服务器

CloudStack 打开实例Console报错分析_第3张图片

图 Firefox提示无法连接服务器

CloudStack 打开实例Console报错分析_第4张图片

图 google浏览器提示无法解析服务器的DNS地址


这样的情况,大家就需要注意一下了,各位在创建CloudStack基础架构的时候,在定义 Zone的时候,填写的DNS是什么?本人曾经以为这个 DNS是无关紧要的,随便填写一个即可,大不了创建的虚拟机实例不能够上外网罢了,所以一直在非生产环境中填写的都是8.8.8.8 ,或者是生产环境中客户提供的内部DNS(该 DNS服务器也是内部办公使用而已,无法解析外网域名等)。

有人问?你是如何发现这个问题的?那么之前为什么没有发现?

OK,情景重现就是了,在平时测测试中,我自己笔记本跟管理的所有物理机,虚拟机均可以连接外网,也就是均可以ping通8.8.8.8这个谷歌DNS地址,而在现在的客户环境中,内部网络是无法连通8.8.8.8的,不过我暂时也想不通,为什么我连上外网,就能够正常打开Console了。奇怪啊奇怪,不过问题还是要解决的,暂时诡异的环节可以不考虑。

遇到这样的问题,真的还得借助于这两个信息呢,或许一条都不能少,第一个Firefox的报错提示找不到服务器:10-100-125-22.realhostip.com ,然后第二条,谷歌浏览器提示无法解析DNS地址。

先查看10-100-125-22 这个标签是什么?上面解释过CPVM的作用,就是提供控制台功能的,那么这个IP地址应该就是 CPVM的IP地址,验证过确实如此,由于环境原因,此处不能够截图,各位只要自行查看就是了。

问题的原因找到了,现在就是解决问题的时候了,这个问题既然是由于无法解析10-100-125-22.realhostip.com,而连上外网,就可以成功ping 通这个域名,并且返回其IP地址为10.100.125.22,那么在没有外网的环境下面既然不能解析,那么我们就可以自行搭建一个 DNS服务器,自行配置解析记录,用于解析这个域名,亦或者在本地的hosts文件中添加相应的解析记录:

Linux : /etc/hosts中添加

10.100.125.22 10-100-125-22.realhostip.com

10.100.125.21 10-100-125-21.realhostip.com

//这个IP是SSVM的IP地址,请自行查看,在下载模板的时候需要解析的

Windows:C:\Windows\System32\Drivers\etc\hosts

10.100.125.22 10-100-125-22.realhostip.com

10.100.125.21 10-100-125-21.realhostip.com


当然,搭建一个DNS服务器是最好的,这样,不管是哪个管理员去登陆的时候,只需要在本地的网络配置上DNS服务器就是了,这个 DNS中只需要配置正向(A)记录就行了,不需要配置反向(PTR)解析记录。



在后期的实施过程中,又发现了如下报错

CloudStack 打开实例Console报错分析_第5张图片


 本人出现这个问题的原因是由于CloudStack管理节点上的配置了两个不同网段的IP地址,添加KVM主机的时候,可以发现Agent配置文件对应的管理节点IP地址有问题,再通过查看CloudStack的全局变量中关于管理节点的CIDR信息是否也跟实际使用的不一样,这个问题在配置的时候注意即可。