openstack问题远程解决小结

  半年前帮一朋友搭建一台OPENSTACK一直用得好好的。今天早上接到他的电话,说因为端午节停过电,虚拟机因为不是自动启动的,现登录不了,想登录DASHBOARD去管理虚拟机,输入管理员帐号却又登录不进去。问题可能比较麻烦,而我还在上班,如果远程搞不定的话,看来就得跑一趟了。
  凭直觉,我知道可能有是虚拟机网络出了问题。
  朋友的网络拓朴结构如下:
  一台路由器PPPOE拔号上网连接INTERNET,路由器的LAN侧网段是10。1。1。1/24,这个lan网段是办公网。
  另一台防火墙在办公网和虚拟机网之间,WAN口IP是10。1。1。254,LAN口IP是192。168。1。1/24
  虚拟机分配192。168。1。X/24的网段IP。现在创建有7台虚拟机,IP分别是:192.168.1.207,209,210,214,215,216,213。
  其中,192.168.1.18就是运行虚拟机QEMU软件的DELL服务器,CENTOS 7操作系统,8核CPU,32G内存,下面简称18服务器。
  
  我首先在办公室用CENTOS 的SHELL创建一条与18服务器的SSH 通道作为SOCKS 5代理以便远程重现出问题:
  ssh -TfnNq -D 9050 myname@myserver -p 2222
  然后打开FIREFOX浏览器,设置SOCKS5代理指向本地127。0。0。1 9050端口。
  打入DASHBOARD的地址http://192.168.1.18/dashboard/
  OPENSTACK的页面出来了,但是输入admin/和密码之后,果然重现用户反馈的问题,错误提示:“无法连接keystone端点”错误。
  我远程SSH到18服务器,查看NETSTAT端口信息,发现一个奇怪的现象,有一些SYN-SENT状态,源IP是192。168。1。18,目的IP是10.0.0.11,端口号是3306.
  10.0.0.11这个IP地址是在安装OPENSTACK,参考官方文档设置的管理地址,在MYSQL中指定绑定到这个地址上。其实这个地方是有点问题,因为我的实际网络应该是192.168.1.18,而不是10.0.0.11,当初为了不修改OPENSTACK的配置,我人为地将网卡EM1增加了一个别名IP,指向10.0.0.11,现在机器掉电之后重启,这个别名IP没有自动设置上去!
  好吧,原因查明了,还是先手工将别名加上吧:
  ip addr add 10.0.0.11/24 dev em1
  执行了上述指令后,IP存在了,登录错误提示却改成了“无效证书!”
  原来,登录时要填写“域”,帐号,密码三个要素。域我随便填了ADMIN,结果没有这个域,后来回忆起来,域应该是default,这才登录了进去。
  登录进之后,点开左边的“项目”签,点击“实例”,可以看到所有的实例都是没启动的。
  一一启动实例之后。验证实例是否能用。却发现了另一个问题,有的能用,有的不能用!例如209能PING通,214也能PING通。
  但215不能PING通。
  为什么215网络不正常呢?
  一开始我试图找215和214的差异。
  ip n | grep 215
  ip n | grep 214
  比较ARP的结果,都正常,两个IP地址对应的MAC都能学习到。
  
  再看是不是215没加到桥里?
  brctl show | grep 215的MAC,也在。
  这里说一下,每一个虚拟机网卡,都对应到18服务器上一个虚拟网络接口:TAPXXX,例:taped0f7580-26
  为了与外界相通,通过BRCTL命令将这些TAPED接口和EM1桥接在一起。
  值得说明的是,我在OPENSTACK虚拟机网络中,设置了一个网络策略,只允许3389和22端口访问,不允许PING访问。一开始我意识到有可能是各台虚拟主机所采取的网络策略不一样导致。
  登录OPENSTACK DASHBOARD,进入网络的配置检查,214和215两台主机似乎没什么两样。看来,只好想办法远程到18服务器上,用VNCVIEWER来登录本地虚拟机看看了。
  先用PS查出215这台主机的VNCVIEWER路径:
  ps | grep qemu| grep 215这台主机的MAC地址(前面ARP命令查出来过的)
  看到0.0.0.0:2,这就是VNCVIEWER的连接端口。在启动VNCVIEWER后需要输入‘:2“来访问这个虚拟机。
  不过,碰到的问题是,我是在远程SSH到18服务器上的,XWINDOWS程序VNCVIEWER运行时,报错”can not display”.需要运行一个X WINDOWS SERVER。
  我选择了WINDOWS下的XMING。
  安装好XMING之后,启动。再运行SECURECRT,配置连接18服务器的会话,打开X FORWARD选项。
  重新连接18服务器,运行VNCVIEWER,OK,错误消失,能够在XMING这里显示出VNCVIEWER的界面。输入:2,能够连接215这台虚拟机。
  这里的XMING,是充当TCP 服务器,而SECURECRT,充当了TCP CLIENT,SECURECRT将VNCVIEWER的XWINDOWS绘制界面消息透传到XMING服务器上,XMING接收到绘图指令,在自己的界面上画出XINWOWS的应用窗口。
  进入215虚拟机,检查网络的配置,也是正常的,有收有发。我怀疑215本来就是好的,只不过安全策略不允许PING而已。换远程桌面访问试试。
  果然,在209上远程215是正常的!
总结:
  总共碰到4个问题,实际上只有一个属于真正的问题。
  1、DASHBOARD登录失败,提示 无法连接KEYSTONE端点。
  这个是真正的问题。原因是OPENSTACK 18服务器在异常掉电之后,重启时别名IP10。0。0。11没有能够自动设置上。MYSQL连接失败,访问不了数据库,无法进行认证。DASHBOARD登录不了。
  改进办法是:手工再设置一下。IP ADD 10。0。0。11/24 DEV EM1。
  另外,还可以考虑将mysql的LISTEN ADDRESS由10。0。0。11修改为0。0。0。0。这样就不怕掉电了。
  2、DASHBOARD登录失败,提示“无效证书”。
  这个问题其实是域没有输对。
3、虚拟机没自动启动
这个本来就是没有自动启动。不知有没有地方设置成自动方式。虚拟机连不上,和问题1没有关系。即使没有这个IP别名,虚拟机也能够正常工作。因为虚拟机的网段是192。168。1。X网段,与EM1所在的网段是一致的。又都是桥在同一个网卡上。所以物理上和逻辑上,网络都是OK的。
4、有的虚拟机网络通PING通,有的不通。
这个是OPENSTACK安全策略问题,没有细查,反正用远程桌面能够通就行了。按理说大家都是不允许PING的。 至于为什么有的通,没有查。有可能与IPTABLES防火墙的规则相关。

过程中使用的方法技术总结 :
  1、查看MAC
  ip n
  确认虚拟机的MAC地址是否学到。虚拟机也是网络服务器,通不通,也是需要通过ARP学习的。
2、查看虚拟机
ps aux | grep qemu
看虚拟机的LISTEN VNC端口。
3、本地访问虚拟机
vncviewer 输入:0 :2等端口去访问本地虚拟机。

3、远程X
secrurcrt + xming

你可能感兴趣的:(openstack问题远程解决小结)