web-dev-qa-db-ja.com

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

ESXi 5.1サーバーの束をリモートオフィスに発送し、APC UPSを介して電力を供給します。

UPSに接続されたサーバーのシャットダウンをトリガーさせたい-次に、ESXi構成に依存して、ホストされているVMのシャットダウン/一時停止を処理します。

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

UPSをUSB経由でESXiホストに接続し、ESXiに停電を検出させ、それに応じて動作させるにはどうすればよいですか?誰かがこれをどうにかして持っていますか?.

18
dunxd

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

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

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

5
Dave M

はい、可能です。これが私の同様の設定の詳細です。

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

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

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

電源障害時には、次のシーケンスが行われます。

  1. UPSはusbhid-upsを介して電源障害についてupsdに報告します。
  2. (オプション、低バッテリではなく数分でシャットダウンする場合に便利)VMのupsmonは、upssched5分のタイマーを開始します。電力が回復すると、タイマーは中止されます。
  3. タイマーが起動するか、UPSがバッテリ低下を報告すると、upsmonはFSD(強制シャットダウン)フラグをupsdに上げます。
  4. スタンドアロンNUT構成では、FSDフラグはマシンをシャットダウンします。しかし、ここでシャットダウンコマンドは、「今すぐシャットダウンする必要がありますが、代わりにホストを待機しています」のような単純なロギングに置き換えられます。そして、何もしません。
  5. FSDフラグはESXi upsmonによっても読み取られ、ESXiホストのシャットダウンが開始されます。
  6. ESXiホストは、すべての仮想マシンを1つずつシャットダウンします。重要なことは、upsdを実行するVMは最後にシャットダウンする必要があることです(ESXiの起動/シャットダウンシーケンス構成を使用)。
  7. 重要:このVMには、VMwareツールがインストールされている必要があります。ホストからゲストシャットダウンコマンドを受信すると、vmware-toolsシャットダウンスクリプトが開始されます。このスクリプトは、/ etc/killpowerフラグをチェックします。フラグがない場合は、何もしません(これは、UPSイベントではなく、ユーザーがLinuxシャットダウンをアクティブにしたことを意味します)。ただし、フラグが存在する(FSDがアクティブ)場合、このスクリプトは遅延したpowerdownコマンドを(たとえば3分で)UPSに送信します。
  8. Vmware-toolsスクリプトを実行した後、ゲストVMがシャットダウンします。
  9. ESXiは最後のVM poweroff状態を確認し、それ自体がダウンします(現在実行中の他のマシンがないため、約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スクリプトは実行されません)、またはESXiホストが開始した場合VMシャットダウン(/ etc以外)の場合を考慮します。/killpowerフラグ。UPSはオフになりません)、またはESXiシャットダウンの場合(同じ)。唯一重要なのは、ホストの起動後にこのVMをできるだけ早く実行し、最後にシャットダウンすることです(そのため、ホストのダウンタイムは予測可能です-上記のように、私にとっては約1分、予約してから2分です)万一に備えて)。

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

21
Oleg Semyonov

スーパー質問。実際、これをかなりうまく行うことは可能です-少なくともいくつかの設定では。多くのESXi 5.5ホストで次のレシピを試しました。基本的に、解決策は次のようになります。

  1. ESXiホストでSSHアクセスを有効にする
  2. Linuxを作成するVM-私はUbuntuを使用しています。最小限の設定だけが必要です-GUIも何も必要ありません。
  3. APCデバイスをUSB経由でESXiホストに接続し、それをLinux VMに渡します。
    • VMに追加するUSB​​コントローラーが、APCデバイスが接続されている実際の物理USBコントローラーと一致することを確認してください。つまり、物理デバイスがUSB3デバイスの場合にのみXHCIコントローラーを追加します。 Linux USBデバイスドライバーで奇妙な問題を引き起こすようです。
    • 問題が解決せず、dmesgctrl urb status -62のようなエラーが表示される場合は、物理コントローラーがVMのコントローラーと一致していない可能性があります。それらが一致する場合、それは問題です。私にはこの種の問題がある1つのセットアップがあり、それに対する実際の解決策はありません。
  4. Linuxに apcupsd をインストールVM-Ubuntuでは、Sudo apt-get install apcupsdを実行して最新バージョンをインストールできます。NUTプロジェクトも素敵ですが、私は伝統主義者です。
  5. Sudo apt-get install PuTTY-toolsを実行してplinkユーティリティをインストールします
  6. plink root@<your ESXi Host IP>を実行して、ESXIホストに接続します。接続をすぐに閉じることができます。目的は、ホストキーを保存して、スクリプトで実行したときに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/apcupsdISCONFIGURED=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。

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

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

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

14
MrMajestyk

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

4
the-wabbit

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

2
deveneyi

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

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

1
HopelessN00b

ベアメタルインストールの昔、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.  

さらに、何が起こっているのかを確認するための合理的なインターフェース...

enter image description here

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

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

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

1
ewwhite

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

0

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

0
user207685