APCUPSのクリティカルバッテリーレベルでのVMWareESXiハイパーバイザーの正しいシャットダウン

オープンスペースには、PowerChute Business Editionのセットアップ方法や、PowerShellからVMWareに接続する方法に関する記事がたくさんありますが、どういうわけか、これらすべてが1か所に見つからず、微妙な点が説明されています。そして彼らは。



1.はじめに



私たちがエネルギーと関係があるという事実にもかかわらず、電気の問題が時々発生します。ここでUPSが活躍しますが、残念ながらそのバッテリーは耐久性がありません。何をすべきか?消す!



すべてのサーバーが物理的である限り、PowerChute Business Editionが役に立ち、状況は順調に進んでいました。無料、5台のサーバーで十分でした。エージェント、サーバー、コンソールは1台のマシンにインストールされました。終わりが近づくと、エージェントは単にバッチファイルを実行し、shutdown.exe / s / mが隣接するサーバーに送信され、OSが消滅しました。誰もが生きています。

その後、仮想マシンの時代が到来しました。



2.背景と考察



それで、私たちは何を持っていますか?何もありません-1つの物理サーバーでWindowsServer 2008 R2を実行し、1つのハイパーバイザーで複数の仮想マシン(Windows Server 2019、Windows Server 2003、CentOSなど)を使用します。そして別のUPS-APCSmart-UPS。



NUTについて聞いたのですが、まだ手に入れることができず、手元にあるもの、つまりPowerChute BusinessEditionのみを使用しました。



ハイパーバイザーはそれ自体で仮想マシンをシャットダウンすることができます。残っているのは、時間だと伝えることだけです。このWindowsPowershellの拡張機能であるVMWare.PowerCLIには、ハイパーバイザーに接続して必要なものすべてを伝えることができる便利な機能があります。オープンスペースのPowerCLI設定に関する記事もたくさんあります。



3.プロセス



UPSは、サーバー2008のcomポートに物理的に接続されていました。これは必須ではありませんが、インターフェイスコンバータ(MOXA)を介して任意の仮想Windowsサーバーに接続することができました。さらに、特に明記されていない限り、すべてのアクションはUPSが接続されているマシン(Windows Server 2008)で実行されます。 PowerChute BusinessEditionエージェントがインストールされました。最初の微妙な点は次のとおりです。エージェントサービスはシステムからではなく、ユーザーから開始する必要があります。そうしないと、エージェントはcmdファイルを実行できません。



次に、.Net Framework4.7をインストールしました。フレームワークがインストール後に明示的に再起動を要求しない場合でもここ再起動が必要です。再起動しないと、それ以上進みません。その後もアップデートが届く場合がありますので、インストールする必要があります。



次に、PowerShell5.1をインストールしました。要求されない場合でも、再起動も必要です

次に、PowerCLI11.5をインストールします。これと以前の要件からの非常に新しいバージョン。インターネット経由で可能です。これに関する記事はたくさんありますが、すでにダウンロードしているので、すべてのファイルをModulesフォルダーにコピーしました。



チェック済み:



Get-Module -ListAvailable


わかりました、インストールされています:



Import-Module VMWare.PowerCLI


はい、もちろんPowershellコンソールは管理者から起動されます。



Powershell設定。



  • スクリプトの実行を許可します。


Set-ExecutionPolicy Unrestricted


  • または、スクリプト証明書のみを無視することを許可します。


Set-ExecutionPolicy -ExecutionPolicy RemoteSigned 


  • PowerCLIが無効な(期限切れの)証明書を持つサーバーに接続できるようにします。


Set-PowerCLIConfiguration -InvalidCertificateAction ignore -confirm:$false


  • 交換プログラムへの参加に関するPowerCLIメッセージの出力を抑制します。そうしないと、ログに不要なものが多数含まれます。


Set-PowerCLIConfiguration -Scope User -ParticipateInCEIP $false


  • スクリプトで明示的に公開しないように、VMWareホストにログインするためのユーザー資格情報を保存します。


New-VICredentialStoreItem -Host address -User user -Password 'password'


チェックすると、誰を保存したかが表示されます。



Get-VICredentialStoreItem


接続を確認することもできます:Connect-VIServerアドレス。



スクリプト自体、たとえば、万が一の場合に備えて、接続、消滅、切断、オプションが可能です。




    Connect-VIserver -Server $vmhost 
    Stop-VMHost $vmhost -force -Confirm:$false 
    Disconnect-VIserver $vmhost -Confirm:$false


4. Default.cmd



APCエージェントが起動するのと同じバッチファイル。「C:\ Program Files [(x86)] \ APC \ PowerChute Business Edition \ agent \ cmdfiles」にあり、内部:



「C:\ Windows \ system32 \ WindowsPowerShell \ v1.0 \ powershell.exe」-ファイル「C :\ ... \ shutdown_hosts.ps1 "

cmdを開始しても、すべてがセットアップおよびチェックされたようです。正しく機能し、オフになっています。



APCコンソール([テスト]ボタンがあります)からコマンドファイルチェックを実行します-動作しません。



ここにあるのは、行われたすべての作業が何ももたらさなかったその厄介な瞬間です。



5.カタルシス



タスクマネージャーを見ると、-cmdが点滅し、powershellが点滅していることがわかります。詳細を見てみましょう-cmd * 32、したがって、powershell * 32。APCエージェントサービスは32ビットであると理解しています。つまり、対応するコンソールを起動します。



管理者としてpowershellx86を起動し、手順3からPowerCLIを再度インストールして構成し、powershell



を呼び出す行を変更します。



"C:\Windows\<b>SysWOW64</b>\WindowsPowerShell\v1.0\powershell.exe…


6.ハッピーエンド!




All Articles