サーバーがUPSバッテリーで実行されていることを検出する


24

1か月ほど前に雇用主から購入したホームサーバー(HP Proliant ML310 G4)があります。サーバーはDebian Linuxを実行しており、私はそれをほぼすべてに使用しています。私のニーズはそれほど厳しいものではないので、これを行うことで逃げることができます。そのため、サーバーが常に高負荷になることはほとんどありません。このサーバーには、Sambaを介してネットワーク経由でファイルを共有するために使用するmdadmによって管理される2 TB RAID1アレイ(1つのホットスペア付き)があります。OSをアレイの一部ではない小さなハードドライブで実行しています。

小さな255ワットのUPSを介してサーバーに電力を供給しています。これは、サーバーがダウンすることなくわずかな電力変動に耐える必要があるためです。これは非常に重要です。突然のクリーンなシャットダウン(電源の低下または停電による)がRAIDアレイを台無しにする可能性があるためです。

停電が発生した場合、UPSには10〜15分の電力しかないと推定しています。もっとあるかもしれませんが、私は自動的に存在すると仮定したくありません。これは、数分以内の停電を乗り切るのに十分です。ただし、電源が数時間ダウンした場合、UPSの電源が落ちる前にサーバーが自動的に適切にシャットダウンする必要があります。これにより、こうした状況でRAIDの整合性が損なわれないようにすることが期待されます。

この種のことは、バッテリ電源で実行されているかどうかを判断するセンサーを内蔵したラップトップb / cでは簡単ですが、このサーバーはそうではありません(私の知る限り)。DSLモデムがルーターとは別の、異常なネットワーク設定があります。ルーターもUPS上にあります。これにより、ラップトップからSSHで接続し、電源障害が発生した場合にサーバーをシャットダウンできます。残念ながら、これは、私がそれをやろうとしているときにだけ機能します。介入するかどうかにかかわらず、常に機能するソリューションが必要です。

私のDSLモデムはUPSにないため、電源に障害が発生すると、他のすべてのモデムがダウンします。この問題を解決する方法についてアイデアがあるので、意図的にそのように設定しました。google.comまたは他の高トラフィック/高可用性サイトにpingを実行するスクリプトを書くことを考えていました。pingが正常に完了すると、サーバーは稼働し続けます。pingが失敗すると(モデムがオフになっているため)、スクリプトは電源がオフであると判断し、サーバーにシャットダウンするよう指示します。スクリプトをCronに追加し、5分ごとに実行します。これにより、UPSの電源が切れる前にサーバーがシャットダウンするのに十分な時間が与えられます。

スクリプトを作成する手間をかける前に、必要なことを行うより良い方法があるかどうかを知りたいと思います。助けてくれてありがとう。


15
外部サイトにpingするのではなく、DSLモデムのIPにpingする必要があります。
ローレンス

1
@ultrasawblade ...答えのような音、答えのような匂い...答えです!
Pureferret 14

1
@ultrasawbladeが言及しているように、内部セットアップのために外部ソースに依存しないでください。たとえば、インターネットが突然故障すると、接続が失われ、サーバーがダウンします。Google.comが何らかの理由で名前を変更することにした場合、サーバーはダウンします。IPを使用してpingを実行し、その特定のサーバーファームがダウンすると、サーバーもダウンします。これは外部ソースの場合です。他のサーバーが利用可能である場合にのみサーバーがオンでなければならないことを100%確信していない限り、何らかの理由でその他のサーバーに依存することは望ましくありません。
Nzall 14

これらの答えはどれもあなたのために機能しませんか?
デイブ

回答:


34

古いが実証済みの方法があります:古いアナログモデムを使用します。こちらが

  • モデムをシリアルポート(ttyS0など)経由でサーバーに接続します
  • モデムの電源をUPSではなく、主電源に直接差し込みます
  • モデムの電話回線には何も接続しないでください

ここで、数秒ごとにモデムをポーリングして送信ATZ[Enter]しますOK[Enter]-モデムが応答しない場合は、電源が入っていない、UPSがバッテリーに接続されていると見なすことができます。

編集

主なポイントは、あなたのインターネット接続が何らかの理由で低下した場合に、サーバがすること、あるいないそれがあるべきよう、シャットダウン。

編集2

コメントから:

  • もちろん、あるチェックから次のチェックまでいくつかの状態を維持し、N個のチェックが失敗した後にのみシャットダウンする必要があります。モデムだけでなく、考えられるすべてのチェックに当てはまるため、これについては言及しませんでした
  • モデムを使用する場合とネットワークに関係するものを使用する場合の違いは、ネットワーク接続の一時的な損失が発生することです。スイッチを再起動する場合、「ログイン無効、USV上のサーバー」に煩わされたくないまたは、VLANを再構成します。私の経験では、シリアル回線はそれと同じくらい堅牢です。

1
良い答えですが、実際にシャットダウンする前に数回チェックする安全性を追加することをお勧めします。(したがって、5分間のブラウンアウト中にシャットダウンする必要はありません)そして、スイッチにpingするだけでも十分だと思います(ネットワークの外には何もありません)。
HTDutchy 14

@HTDutchy編集をご覧ください!
オイゲンリーク14

私は知っていますが、彼はシリアル接続がないか、家のハードウェアでpingをぶら下げている古いモデムが次善の策でしょう。そして、スイッチが機能しなくなると、サーバーはとにかく表示されます。
HTDutchy 14

22

UPSには通常、USBまたはCOM1コネクタが付属しています。これをサーバーに接続すると、UPSの監視を開始できます。

Windows環境では、ソフトウェアをインストールせずに、メッセージは既に登録されており、サーバーをシャットダウンします。Linuxでこれがどのように機能するかはわかりませんが、UPSとのインターフェイスに使用できるソフトウェアパッケージがいくつかあるに違いありません。


UPSを確認したところ、残念ながらそのようなものはありません。8つの電源プラグ(バッテリーに4つ、なしに4つ)と電話コード用のライン入力およびライン出力ジャックがあります。
ウィルクラフト14

27
次に、コンピューターと通信できるUPSを入手します。
ラムハウンド14

@Ramhoundこれはオプションではないかもしれませんが、UPSはかなり高価になる可能性があり、より安価な方法があります。
バリティ14

私はあなたがさえで検出できないUPSのバッテリーで実行されている検出する他の方法がある反対することはレベルです
Ramhound

1

Debianを使用している場合は、NUT(ネットワークUPSツール)の使用を検討してください。NUTを使用して、Synology NAS(busyboxを実行)およびUbuntu 12.04 LTSを実行しているホームWebサーバーで説明したとおりに実行します。あなたと同じ理由で、すべてのファイルが失われる可能性があるため、USB経由でNASをUPSに接続しています。

ナットデーモンは、ステータスを判断するために毎秒UPSに問い合わせます。UPSがバッテリーモードの場合、正常にシャットダウンするか、最初にX分間待機するように設定できます。サーバーで実行するナットデーモンに接続するように複数のクライアントをセットアップすることもできます。したがって、サーバーはネットワーク上の複数のPCにも正常にシャットダウンするように指示できます。シャットダウンの実行については、特定の方法でサービスをシャットダウンするための独自のスクリプトを提供できます。または、正しく思い出せば、shutdown -hを呼び出すだけの組み込みスクリプトを使用できます。

NUTウェブサイト

情報を見つけるのに適したサイトはありましたが、今は覚えていません。構成は面倒な場合がありますが、RAIDが失われる可能性がある場合は、チェックしてください!ニーズによっては、NUTスイート全体を必要としない場合があり、UPSMON部分だけで対応できる場合があります。Ubuntuパッケージ「nut-client」でこれを取得できると思います。

Windows用のNUTクライアントもありますが、Windowsでは、PowerChuteなどのようなものを使用したほうがよい場合があります。


前に述べたように、OPのUPSにはコンピューターと通信する方法がなく、USBもネットワークもありません。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.