最近在测试vsphere的时候发生了一件让人很郁闷的事,由于机房新建,UPS系统未上线,机房停电导致所有服务器直接掉电,电力恢复后,在用vclient连接vcenter时,就出现如下错误:                       

175012866.png

      于是打开vcenter所在服务器,查看服务,发现VMware VirtualCenter Sever以及VMware VirtualCenter Management Webservices两个服务没有启动,手动启动VMware VirtualCenter Sever发现总是报错,无法启动。

      在C:/Users/All Users/VMware/VMware VirtualCenter/Logs中产看vcenter的日志,发现最后有如下错误信息:

181412559.png

      到网上google了一下,发现可能是sso服务没有正常启动,在C:/Program Files/VMware/Infrastructure/SSOServer/logs中查看sso服务的日志,发现有如下错误信息:

183754636.png

     由此可以看出,数据库连接出现了问题,连接被拒绝。在C:/Program Files/VMware/Infrastructure/SSOServer/logs/config.txt中可以看到有如下参数:

{com.rsa.appserver.hostname=172.16.1.100
com.rsa.appserver.port=7444
com.rsa.appserver.protocol=https
com.rsa.db.domain=
com.rsa.db.hostname=172.16.1.100
com.rsa.db.instance=RSA
com.rsa.db.port=49158
com.rsa.db.type=MSSQL
com.rsa.instanceName=172
com.rsa.ssl.ca.alias=root-ca
com.rsa.ssl.ca.store.path=C:/Program Files/VMware/Infrastructure

      其使用的MSSQL的动态端口号为49158,打开SQL Server Configuration manager,展开 SQL Server Network Configuration,点击Protocols for VIM_SQLEXP,在右边双击TCP/IP,切换到IP address选项卡,拉到最后,在IPALL下面看到TCP Dynamic Ports果然不是49158,这样就找到的问题的根源所在。

      将端口改为49158后重启sql server服务,发现动态端口号又不是49158了,极其郁闷,想可能是端口冲突了,在命令行中使用netstat -ano | findstr "49158",果然发现端口已经被使用,在后面找到使用此端口的进程的PID,打开任务管理器,切换到进程选项卡,点击‘查看’->’选择列‘,勾选PID,找到刚占用端口那个进程,转到服务,发现是VMware VCMSDS服务。之后我的做法是将此服务设为手动启动,修改TCP Dynamic Ports为49158,直接重启服务器,启动发现TCP Dynamic Ports的端口号为修改后的49158,之后立刻启动VMware VCMSDS服务,将其设为自动启动,因为其是VMware VirtualCenter Sever服务启动的前提服务,过一会,可以看到VMware VirtualCenter Sever服务正常启动,使用vclient可以正常登陆vcenter,至此,问题得以解决。