USBで接続されたAPC UPSによってトリガーされるVMware ESXiのシャットダウン


18

多数のESXi 5.1サーバーをリモートオフィスに出荷し、そこでAPC UPS経由で電力を供給します。

UPSが接続されたサーバーのシャットダウンをトリガーするようにしたい-それから、ESXi構成に依存して、ホストされているVMのシャットダウン/中断を処理します。

APCにはPowerChute Network Shutdownを使用して文書化されたソリューションがあることがわかりますが、これにはオフィスごとに追加のサーバーをセットアップする必要があり、各UPSにネットワークカードが必要です。通常、ネットワークカードなしのUPS(Back-UPS Proなど)を使用しています。USBコネクタが付属しており、オフィスがある場所ですぐに使用できます。

USBを介してUPSをESXiホストに接続し、ESXiに停電を検出させ、それに応じて動作させるにはどうすればよいですか?誰もがこれを行うことができました。


1
ホストのシャットダウンを通じてVMのシャットダウンプロセスのタイミングを計りましたか?その期間、バッテリーは十分に長く保持できますか?
ewwhite

これを指摘してくれてありがとう。まだではありません-この段階では、ドメインコントローラーを実行するためにESXiサーバーを出荷しているだけですが、リソースを配置したら、さらに数台のサーバーを追加し、その時点でタイミングが変わる可能性があります。
dunxd

シャットダウンポリシーはデフォルトでは非常に長いです。しかし、正直なところ、ESXiホストまたはクラスターでUPSシャットダウンを実行しません。直観に反するように思えますが、これまで問題になったことはありません。
ewwhite

なぜ、ESXiホストにUPSを配置する必要があるのですか?停電のため、またはバッテリーが消耗したために電力が供給された場合、同じ結果が得られます。
dunxd

短時間の停電に耐える。しかし、大規模なサイトでは、VMWareクラスター、ストレージ、およびネットワークに2〜4時間のUPS電源を使用できます。
ewwhite

回答:


5

APCによると、これは不可能であり、Powerchute Networkのシャットダウンが必要です。これをUSBで何度も試しましたが、解決策は見つかりませんでした。

VMWareには、APC承認済みソリューションの使用に関する情報があります。

また、SmartUPSがより良い選択であり、ネットワークカードに適合できると思います。当然のことながらお金が増えますが、サーバーが非常に重要な場合は、そのコストに見合う価値があります。また、リモートサイトで役立つ可能性のある監視とアラートを提供します。また、すべてのVMが十分にシャットダウンしてからホストをシャットダウンするための十分なランタイムを確保する必要があります。


1
これは、両方のベンダーによってサポートされている最も賢明な答えのようです。残念ながら、VMwareはこれをネイティブに行うESX / ESXiに何かを組み込むことを考えていませんでした。ネットワークソリューションでは、少なくとも1つのネットワークスイッチにもUPS経由で給電する必要があります。
dunxd

2
UPSを介してネットワークスイッチに電力を供給しないことは、あまり意味がありません。それらは、非常に少ない電流を消費し、ネットワーク操作にとって重要です。
マッシモ

21

はい、可能です。同様のセットアップの詳細を以下に示します。

ハードウェア構成: USB経由でESXi 5.1ホストに接続されたAPC Smart-UPS 1500。このESXiホストで実行されているLinux仮想マシン。UPSは、ESXi USBパススルーオプションを使用してこのVMに接続されます。

ソフトウェア構成: VMで実行されているNUT(ネットワークUPSツール)マスター、およびESXiホストで実行されているネイティブESXi NUTスレーブ。

シャットダウンロジック: VMは、USBを介したUPSとの通信を担当するUPSドライバーusbhid-upsを実行しています。UPSD USBHIDアップドライバとモニターUPSの状態を介してUPSに処理コネクト。upsmonに同じマシンが接続する上で実行されているマスター・プロセスUPSDとを開始シャットダウン。ESXiホストは、内部ネットワークを介して同じVM upsdにも接続するupsmonの2番目のインスタンスを実行しています。

停電時には、次のシーケンスが発生します。

  1. usbhid-ups経由のUPSは、停電についてupsdに報告します。
  2. (オプション、低バッテリーの代わりに数分でシャットダウンしたい場合に便利です)VMのupsmonupsched 5 minutesタイマーを開始します。電源が回復すると、タイマーは中止されます。
  3. タイマーが作動するか、UPSがバッテリー低下を報告すると、upsmonはFSD(強制シャットダウン)フラグをupsdに上げます。
  4. スタンドアロンのNUT構成では、FSDフラグがマシンをシャットダウンします。ただし、ここでは、shutdownコマンドは、「今すぐシャットダウンする必要がありますが、代わりにホストを待機しています」などの単純なログに置き換えられます。そして何もしません。
  5. FSDフラグは、ESXiホストのシャットダウンを開始するESXi upsmonによっても読み取られます。
  6. ESXiホストは、すべての仮想マシンを1つずつシャットダウンします。重要なことは、upsdを実行するVMを最後にシャットダウンする必要があることです(ESXiの起動/シャットダウンシーケンス構成を使用)。
  7. 重要:このVMにはvmwareツールがインストールされている必要があります。ホストからゲストシャットダウンコマンドを受信すると、vmware-toolsシャットダウンスクリプトが開始されます。このスクリプトは、/ etc / killpowerフラグを確認します。フラグがない場合、何もしません(これは、UPSイベントではなく、ユーザーがLinuxシャットダウンをアクティブ化したことを意味します)。ただし、フラグが存在する場合(FSDがアクティブ)、このスクリプトはUPSに遅延パワーダウンコマンドを送信します(3分以内など)。
  8. vmware-toolsスクリプトを実行した後、ゲストVMがシャットダウンします。
  9. ESXiは、最後のVMの電源オフ状態を確認して自動的にダウンします(現在実行中の他のマシンがないため、約1分かかります)。
  10. 残り2分で、UPSは電源を切ります。
  11. 電源が復旧すると、ESXiが起動し、すべてのVMの電源が入ります。UPS監視マシンを最初に起動する必要があります(シャットダウン順序と同じ構成)。

ダウンロード:

Linux用のNUTはパッケージからインストールできます。

ESXiサーバーのネイティブNUTクライアントは、次のページの最後のリンクを使用してダウンロードできます:http : //www.networkupstools.org/download.html

いくつかのスクリプトとconfファイルはここにあります(変更された行のみが表示されます):http : //pastebin.com/KkEeanK1

ノート:

もちろん、詳細がありますが、これを正常に機能させるのに時間がかかりました。しかし、今では非常にうまく機能しています。このシステムは、内部から監視VMをシャットダウンした場合(vmware-toolsスクリプトが実行されていない場合)、またはVMシャットダウンを開始したESXiホストである場合(/ etc / killpowerフラグがないため、UPSがオフロードしない場合)、またはESXiシャットダウンの場合(同じ)。唯一重要なのは、ホストの起動後にこのVMをできるだけ早く実行し、最後にシャットダウンすることです(したがって、ホストのダウン時間は予測可能です-上記のように、私にとっては約1分、念のためにさらに2分予約します)。

私のUPS監視Linux VMは、バックアップストレージ用のSamba / NFS共有サーバー、VM用のNAT / DHCPサーバー、およびその他の軽量サービスでもあります。アイドル状態の場合、約22MHzのESXi CPUシェアと約10MBのアクティブRAMが必要です。NUTを使用しているため、必要に応じて同じUPSからより多くのデバイスに電力を供給でき、すべてのデバイスを正常にシャットダウンできます。PowerChuteや高価なNetwork Monitor Cardは必要ありません。


14

超質問。実際にこれを非常にうまく行うことは可能です-少なくともいくつかのセットアップでは。多くのESXi 5.5ホストで次のレシピを試しました。基本的に、ソリューションは次のようになります。

  1. ESXiホストでSSHアクセスを有効にする
  2. Linux VMを作成する-Ubuntuを使用しています。最小限のセットアップのみが必要です。GUIなどは必要ありません。
  3. USB経由でAPCデバイスをESXiホストに接続し、それをLinux VMに渡します。
    • VMに追加するUSB​​コントローラーが、APCデバイスが接続されている実際の物理USBコントローラーと一致することを確認してください。つまり、物理デバイスがUSB3デバイスである場合にのみXHCIコントローラーを追加します。不一致は、Linux USBデバイスドライバーに奇妙な問題を引き起こすようです。
    • 物事が出て働いていないと、あなたのようなエラーが表示された場合ctrl urb status -62ではdmesg、チャンスは物理的なコントローラーがあなたのVMでのものと一致しませんです。一致する場合-それは問題です。私はこの種の問題を抱えており、それに対する本当の解決策はありません。
  4. インストールapcupsdのLinux VM上- Ubuntuのでは、あなたが行うことができますsudo apt-get install apcupsd最新バージョンをインストールします。NUTプロジェクトも素晴らしいですが、私は伝統主義者です。
  5. 実行してplinkユーティリティをインストールします sudo apt-get install putty-tools
  6. を実行して、ESXIホストに接続しますplink root@<your ESXi host IP>。接続をすぐに閉じることができます。目的は、ホストキーを保存して、スクリプトを介して実行したときにplinkが再度プロンプトを表示しないようにすることです。
  7. 編集/etc/apcupsd/apcupsd.confおよびそれらが一致して以下の項目を変更するには: UPSNAME < the name you'd like your UPS to have > UPSCABLE usb UPSTYPE usb # DEVICE DIRECTIVE should be blank for USB DEVICE もいることを確認し/etc/default/apcupsdていますISCONFIGURED=yes
  8. 編集/etc/apcupsd/apccontrolしてdoshutdownケースにスクロールします。次のようにします。 doshutdown) echo "UPS ${2} initiated Shutdown Sequence" | ${WALL} # Shut down indirectly by triggering the ESXi host to do the # shutdown via VMWare tools /usr/bin/plink root@< your ESXi host IP > -pw < your root pw > "/sbin/shutdown.sh && /sbin/poweroff" ;;
  9. を使用sudo service apcupsd restartしてapcupsdを再起動し、を呼び出して動作していることを確認しapcaccessます。そうでない場合は、ログとdmesgを確認してください
  10. 電源障害が発生した場合に適切にシャットダウンする必要があるすべてのVMにVMWareツールがインストールされていることを確認してください。また、それらがVMの起動/シャットダウンリストの一部であることを確認します(vSphere Web Clientで、次の場所に移動しますvCenter -> <your host> -> Manage -> Settings -> VM Startup/Shutdown)。シャットダウンアクションがゲストOSをシャットダウンすることであることを確認してください。

これらを実行doshutdownすると、電源障害時に手順8 のスクリプトレットが呼び出されます。これにより、ESXiホストでshutdown.shスクリプトが呼び出され、ホスト上の各VMのVMWare Toolsパッケージに、ゲストOS経由でクリーンシャットダウンを実行するように通知されます。私の経験では、APCのPowerChuteソフトウェアよりもうまく機能します。

VMから物事を監視したい場合、マスターUPS制御Linux VMに接続するスレーブapcupsdインスタンスをセットアップできます。スレーブapcupsd.confファイルには、次のようなエントリが必要です。この
UPSTYPE net < your UPS control VM IP >:3551
ような場合UPSCABLE、エントリなどは関係ありません。これはWindowsバージョンapcupsdこちらから入手可能)でも機能します。付属のものapctray.exeを使用して、物事の現在のステータスをチェックアウトできます。

それでほぼカバーできると思います。


+1は魅力的な働きをしました。初めて!
モーテンクリステンセン

クライアントのオフィスでは、doshutdownシーケンスを少し調整する必要がありましたが、この答えは完全に機能しました。少し${APCUPSD} --killpower前に/usr/bin/plinkUPSがシャットダウンし、電源が回復すると自動的に再起動するように、部品の直前に追加しました。また、ステップ6はまたはrootを介して取得したとおりに実行するsu必要sudo suあり sudo -sますが、ではないことに注意してください。
アンドレアラザロット

4

PowerChuteまたはUPSの状態を監視でき、ESXiホストでシャットダウンをトリガーできる他のソフトウェア(apcupsdなど)を実行しているゲストにUSBデバイスパススルー機能を使用することを検討できます。ESXiは公式にパススルー用の非常に限られた数のUSBデバイスのみをサポートしますが、人々はしばらくの間さまざまなクラスのデバイスを接続および通過させてきましたが、APC UPS USBはWindows VMのこのウォークスルーに従って動作するようですまたは、これはCentOS Linux VM用です。


2

ここからvSphere Management Assistant(vMA)をご覧ください。 私たちはオフィスでそれを使ってあなたがしようとしていることをしていますが、Back-UPSではなくUSBで接続されたSmart-UPSを使用しています。


APCまたはvmwareに関する限り、これは文書化されていないセットアップであるため、詳細を追加してください。
dunxd

1

可能ですが(おそらく/一般的に)、バッテリ電源でコンピューターを自動的にシャットダウンすることはお勧めできません。それを行う場合は、ほとんどの実用的な目的と目的のために、おそらくバッテリーでバックアップされたUPSのお金を節約し、停電のためにマシンをシャットダウンする必要があります。(確かに、クリーンなシャットダウンは常に電力損失よりも望ましいですが、電力供給が失われたときにすべてのものを自動的にシャットダウンすると、数分より長いバッテリー時間があるという点を見逃しているようです。 )

私がいつも扱ってきたのは、電源が落ちたときにSAに監視アラートを送信することです。そのため、SAは灰色の問題を使用して、サーバーをシャットダウンするタイミング(または場合でも)を決定できます。短時間の停止の場合、サーバーをまったくシャットダウンしないことをお勧めします。または、一部のサーバーをできるだけ長く稼働させておき、バッテリーが切れる前にのみシャットダウンすることもできます。単純なルールよりも人間に適した意思決定タスクのように思えます。


すぐにシャットダウンをトリガーするようにUPSを設定する必要はありませんが、バッテリーが完全に消耗する前にUPSをシャットダウンする必要があります。そうしないと、特に私が働いて電源が入る場所のいくつかで、さらにバッテリーを購入する必要があります毎日。もちろん、人間の関与を得ることは素晴らしいことですが、リモートオフィスにシステム管理者が常にいるとは限りません。
dunxd

@dunxd良い点-私は、少なくともサーバーのいくつかが立ち上がって地獄や満水にならなければならないHA環境に慣れているので、ゲームの名前は、電力に対する最適な配給方法を選択しています(選択的にシャットダウンする)サービスへの影響を最小限に抑えます。これは、すべての人の焦点やユースケースではありません。
HopelessN00b

1

昔のベアメタルインストールでは、APC PowerChute Plusはインストールプロセスの重要な部分でした。シンプルなシリアル信号ケーブルとRed Hat専用のバイナリを使用すると、ローカルに接続されたサーバーを管理するルールを簡単に設定できました。UPCバッテリーイベント、電源イベント、およびシャットダウンアクションに関する基本的な電子メール通知が利用できました。

POWERCHUTE MAIL MESSAGE
Message from PowerChute@Bonanza:

UPS on battery: Blackout 000.0 V. 

そして

POWERCHUTE MAIL MESSAGE
Message from PowerChute@Bonanza:

Normal power restored: UPS on line.  

または

POWERCHUTE MAIL MESSAGE
Message from PowerChute@Bonanza:

Shutdown started.  

加えて、何が起こっているかを見るための合理的なインターフェース...

ここに画像の説明を入力してください

そのソフトウェアは最終的に商用化されました(またはAPC Webサイトに埋もれました)。同様の機能を提供するオープンソースのアプローチがいくつかありました。ただし、単一のVMWare ESXiホストではこれはすべて複雑になります。

これは、VMWareがベースハイパーバイザーに組み込むべきだったようです。これは基本的なものであり、ユーザーに対して適切なレベルの保護を提供できます。私が今見ている最も一般的な対策は、専用VMへのUSBパススルー、ネットワークデーモンアプローチ、または私がしていることです。自動またはバッテリーシャットダウンを設定しない...

確かに、私は通常、システムの負荷を1時間以上サポートできるUPSを使用しますが、長時間の停止は起こります。たぶん代替案は、いくつかの低コストまたは再生されたネットワークインターフェイスカードを収集し、少なくともSmartUPSデバイスを購入することを計画することです...


0

次のリンクをご覧ください。最もエレガントなソリューションではありませんが、非常に実用的で簡単なソリューションです。セキュリティの観点から考えられる欠点があります(特定のネットワーク設計、ホストにロードされたゲスト、およびそれらのゲストに対するユーザーのアクセスによって異なりますが、その呼び出しを行うことができます)。


0

MrMajestykソリューションを使用し、rsa公開キーを使用したパスワードなしのsshアクセスで、plinkを介したsshアクセスのみを変更しました。apcupsd VMで生成されたrsaキーは、vmwareホストの/ etc / ssh / keys-root / authorized_keysに含まれている必要があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.