約200日間稼働しているVMware ESXiサーバーがあります。過去数日間、VMware vSphere Clientを使用して接続しようとすると、接続できません。ユーザー名とパスワードを入力すると、小さな回転ホイールが表示され、ステータス行に「Connecting ...」、「Loading Inventory ...」と表示され、エラーメッセージが表示されます。
サーバー 'my.Host.name'は、クライアントの要求を解釈できませんでした。 (リモートサーバーがエラーを返しました:(503)サーバーを使用できません
サーバー「my.Host.name」上のオブジェクト「ServiceInstance」の「ServiceInstance.RetrieveContent」の呼び出しに失敗しました。
VMware ESXiサーバーにSSH接続できます。 すべての仮想マシンは正常に稼働しているようなので、メンテナンスのために停止する必要があるかどうか事前に知りたい!!!回答で提案された方法がVMの実行を妨害する場合は、明確に述べてくださいそのため、ダウンタイムに備えることができます。ありがとう!
VMware ESXiでこのエラー状態を解決するにはどうすればよいですか?
(私はバージョン番号を投稿しますが、vSphereコンソールなしでそれを取得する方法がわかりません!)
編集:この質問をした約1か月後、サーバーが不可解に再起動しました。パニックになったのか、何が起こったのかはわかりませんが、再起動後、この問題は解消しました。そのため、問題が再現しない限り、答えをテスト/確認することはできません(それが再現しないことを願っています!)
VMware管理サービスを再起動する必要があります。幸いにも、これは簡単で(SSHアクセスがあるため)、仮想マシンに影響を与えません。
簡単に言えば、root
としてesxフレームにSSHで接続し、次の2つのコマンドのいずれかを実行します(esx/iかどうかによって異なります)。
ESXの場合:
service mgmt-vmware restart
ESXiの場合:
/sbin/services.sh restart
参照 詳細についてはこの記事
Widecapをアンインストールして問題を解決しました ServiceInstance.RetrieveContent Error
これと同様の問題が発生し、失敗しましたSANファイバーチャネルHBAを介して直接接続されたLUN。明らかに、2つのファイラーの1つにフェイルオーバーイベントがありましたが、正常にフェイルオーバーしませんでしたそのため、ESXiホストはこれらのパスが無効であると宣言できず、HBAビジー、バスビジー、アボートコマンドがvmkernel.logに散らばって、LUNレベルのブロックの問題の流入がありました。
SANファイルヘッドクラスタがアクティブ/アクティブ状態(NetApp)に復元された後、VMwareサポートは問題を説明することができました。 "cat /var/log/vmkernel.log | grepセンス|少ない」16進エラーは、多くのLUNレベルの問題(D:0x2)、バスビジー(H:0x2)、HBAビジー(D:0x8)、タイムアウトからの中止コマンド(H:0x5)を示し、SANファイラーが適切にフェイルオーバーされておらず、利用可能なものとして報告している
SANファイラーがパス/ LUNのファイラーを復元した後、コマンド「/sbin/services.sh restart」を発行し、完了しました。vClientを再びホストに接続し、Webに接続して、それに参加しました。既存のクラスターに戻り、残りの残り物であった「孤立した」「名前のない」VMをクリアします。
VCenter 6.5アプライアンスでは、vpxd
サービスがこのエラーをコアダンプして発生させます。
これまでの回避策/ソリューションのみ:すべてのvCenterサービスが開始されるまで、ESXホストへのアクセスをブロックします。
現在、vCenterのシェルスクリプト/ systemdユニットは、起動時にiptablesファイアウォール/パケットフィルタールールを作成します。 vCenterサービスが開始され、負荷平均が0.5を下回ると、スクリプトはiptablesルールを削除します。 vCenterがESXホストを「認識」できるようになり、しばらくの間満足しています。問題が再発する場合は、vCenterを再起動します。
シェルスクリプト:
#!/bin/bash
# /usr/local/bin/block-esx-access-on-boot.sh
export ESX_HOSTS="ESX1-IP,ESX2-DNS,ESX3-IP"
export LOAD_THRESHOLD="0.5"
sleep 5
LOAD="$(cut -d' ' -f1 /proc/loadavg)"
echo "Waiting for 1min loadavg ${LOAD} > ${LOAD_THRESHOLD} ..."
while [ "$(echo "${LOAD} > ${LOAD_THRESHOLD}" | bc)" == "0" ] ; do
echo "Waiting for 1min loadavg ${LOAD} > ${LOAD_THRESHOLD} ..."
sleep 3
LOAD="$(cut -d' ' -f1 /proc/loadavg)"
done
echo "Blocking outgoing transfers to ${ESX_HOSTS}"
iptables -A OUTPUT -d ${ESX_HOSTS} -j DROP
iptables -L OUTPUT
while [ "$(echo "${LOAD} < ${LOAD_THRESHOLD}" | bc)" == "0" ] ; do
echo "Waiting for 1min loadavg ${LOAD} < ${LOAD_THRESHOLD} ..."
sleep 60
LOAD="$(cut -d' ' -f1 /proc/loadavg)"
done
echo "Allowing outgoing transfers to ${ESX_HOSTS}"
iptables -D OUTPUT -d ${ESX_HOSTS} -j DROP
iptables -L OUTPUT
Systemdユニット:
# /etc/systemd/system/block-esx-access-on-boot.service
[Unit]
Description=Block ESX Access on Boot
After=network.target
[Service]
Type=oneshot
ExecStart=/usr/local/bin/block-esx-access-on-boot.sh
[Install]
WantedBy=multi-user.target
https://Gist.github.com/quatauta/a1ac390633006996fbc547da9bd01ef9
このVMware KB 記事は、説明した症状と一致しているようです。 ESXiサーバーの観点から、DNSが稼働していることを確認します。
オプション2:vCenter Serverが起動しており、サービスが開始されていることを確認できますか?
同じ問題が発生しました。 VMWareサポートは、vCenterがシングルサインオン(SSO)と同期していないと述べています。 vCenterサーバーの電源がオフのときにSSOサーバーを再起動するだけで問題が解決するはずです。
シーケンスは次のとおりです。
vCenterサーバーの電源を切ります。
次にSSOボックスを再起動し、すべてのVMWareサービスがこのボックスに戻るまで待ちます。
vCenterサーバーの電源を入れます
適切な順序でvcenterサーバーサービスを再起動しました(ディレクトリ、kdc、証明書サービス、idm、sts、invサービス、次にvcサービス)
vCenterサーバーを再起動すると、この問題の解決に役立ちました。
503エラーが発生しない限り、vMotionを実行したり、テンプレートを構築したりすることはできませんでした。 vCenterを再起動しても効果がなく、ホストを再起動する必要があった過去にもこれを確認しました。つまり、そのホストのVMもダウンしました。
Vcenter 5.0から5.1へのアップグレードが成功した直後にこのエラーを受け取りました。アクセスが拒否されたことを示すさまざまなアイテム(カスペルスキーvsheildおよびorion syslog svcアカウント)に対して過去に設定したサービスアカウントから、vcenter内のいくつかのアラート(EVENTS(タスクとイベント)の下)に気付きました。これらのアカウントをvcenterのローカル管理者グループに追加すると、問題は解消されました。
ただし、これを発見する前に、回避策を提供するために、VMwareサーバーサービスを再起動するだけで、問題なくログインしてVMコンソールにアクセスできました。 5分ほどすると、コンソールが黒くなり、アクセスできなくなりました。ログアウトしてvcenterに戻ろうとすると、次のエラーが発生します。
サーバー「my.Host.name」上のオブジェクト「ServiceInstance」の「ServiceInstance.RetrieveContent」の呼び出しに失敗しました。
したがって、ルールは、vcenterにアクセスできる場合は、EVENTログをチェックして、アクセス拒否アラートがないかどうかを確認することです。がある場合は、これらのアカウントをvCenterのローカル管理グループに追加します。
VCenterのIPアドレスを変更した後、これを取得しました
#6 https://rlevchenko.com/2016/03/24/vcenter-503-service-unavailable/ を使用してシェルを有効にしました。
vCenterサーバーにSSHで接続します。
コマンド>シェル
vi/etc/hostsはそこでIPを変更しました
service-control --stop --all
service-control --start --all