Skip to main content

Inventory Service无法启动

某日,vCenter Server突然无法搜索虚拟机了。在vSphere Client中搜索时会提示 Unable to connect to web services to execute query. Verify that the 'VMware VirtualCenter Management Webservices' service is running on https://vCenter_Server_FQDN:10443。没过几个小时用户就开始抱怨vSphere Web Client也出问题了,总是提示错误 Client is not authenticated to VMware Inventory Service - https://Inventory_Service_FQDN:10443



[do_widget "Language Switcher" wrap=aside title=false]

比较妖异的是这问题如果不管它,几天后自己就好了。这个问题确实困扰了我一阵子,直到某日做了一些深入的研究...最开始我尝试了重置Inventory Service数据库,还是有作用的,但是没过几天我们升级到了vCenter Server 5.5U2,重置数据库后连Inventory Service服务都无法启动了,服务一直处于 启动中 状态。和VMware技术支持探讨后我们觉得这个问题一开始应该是因为Inventory Service所在磁盘空间不够导致的。

当第一次磁盘空间不足时,vCenter Inventory Service服务没有完全启动起来,这导致vCenter Server数据库中的VPX_PROPERTY_BULLETIN表数据损坏,这才表现为Inventory Service启动有问题。

最终我们找到一个知识库文章描述了类似的问题,但不知道怎么回事儿,这篇文章的英文版是VMware的内部知识库,而中文和日文是公开的知识库。幸好我能看到中文!这里我附上另外一个公开的知识库文章,主要描述这个数据库表是干嘛的。 Searching for virtual machines in the vSphere Client and vSphere Web Client return the error: Search returned no results

在我的案例修复中,基本流程就是停止Inventory Service服务、重置Inventory Service数据库、截断(truncate)那个表、重启vCenter Server的相关服务。如果你不知道如何重置Inventory Service数据库可以参考这个知识库文章

注意:


  • 我这篇文章只适用于 vCenter Server 5.5。

  • 重置完Inventory Service数据库后先别急着重启Inventory Service,需要先做那个数据库表的截断动作。

Popular posts from this blog

Connect-NsxtServer shows "Unable to connect to the remote server"

When you run Connect-NsxtServer in the PowerCLI, it may show "Unable to connect to the remote server".  Because the error message is a little bit confusing with other login issues. It's not easy to troubleshoot. The actual reason is the NSX-T uses a self-signed certificate, and the PowerCLI cannot accept the certificate automatically. The fix is super easy. You need to set the PowerCLI to ignore the invalid certificate with the following command: Set-PowerCLIConfiguration -Scope User -InvalidCertificateAction:Ignore -Confirm:$false

Setup Terraform and Ansible for Windows provisionon CentOS

Provisioning Windows machines with Terraform is easy. Configuring Windows machines with Ansible is also not complex. However, it's a little bit challenging to combine them. The following steps are some ideas about handling a Windows machine from provisioning to post configuration without modifying the winrm configuration on the guest operating system. Install required repos for yum. yum -y install https://repo.ius.io/ius-release-el7.rpm yum -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm yum -y install https://packages.endpointdev.com/rhel/7/os/x86_64/endpoint-repo.x86_64.rpm yum -y install epel-release yum -y install yum-utils yum-config-manager --add-repo https://rpm.releases.hashicorp.com/RHEL/hashicorp.repo Install  Terraform . sudo yum -y install terraform Install  Ansible . sudo yum -y install ansible Install  Kerberos . yum -y install gcc python-devel krb5-devel krb5-libs krb5-workstation

How to List All Users in Terraform Cloud

Terraform has a rich API. However, the API documentation does not mention how to list all users. We can leverage the organization membership API and the PowerShell command  Invoke-RestMethod  to get a user list. 1. Create an organization token in Terraform Cloud. 2. Create the token variable ( $Token ) in PowerShell. $Token = "abcde" 3. Create the API parameters variable in PowerShell. $params = @{ Uri = "https://app.terraform.io/api/v2/organizations/ZHENGWU/organization-memberships?page%5Bsize%5D=100" Authentication = "Bearer" Token = $Token ContentType = "application/vnd.api+json" } Note: You need to replace ZHENGWU with your own organization name. And I used 100 at the end of the URI to retrieve the first 100 users. It can be any number.  4. Retrieve the API return and list the user's email address. $Test = Invoke-RestMethod @params $Test.data.attributes.email