- - PR -
javaで電源管理は可能でしょうか
1
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2008-03-08 08:18
はじめまして
クライアントサーバーシステムを運用しております。 サーバーは、クライアント稼動時のみ起動させておくのですが、パソコンがわかっている人間が少なく、またサーバーPCに触るのを怖がるため、私が先に退社する場合や、直行する場合は、夜中もすべてのサーバーが動きっぱなしの状態です。 実現したい状態は、以下の状態です。 構成: A.24時間常時稼動サーバー(電源管理用) B.データベースサーバー C.ファイルサーバー Aのサーバーに電源管理用のjavaプログラムを常駐させます。 BとCのサーバーは、Aからの指示を受けて、リブートやシャットダウンを実行します。 運用イメージ: クライアント用のjavaアプリケーションを起動したら、AのサーバーにSocketかRMIを使用して通知します。 通知を受けたAのサーバーは、BとCの起動状況を確認して、起動していなければ、リブートを行います。 クライアントアプリケーションが全て閉じられると、AサーバーからB,Cサーバーに対して、シャットダウンを指示します。 以上です。よろしくお願いします。 | ||||||||||||
|
投稿日時: 2008-03-08 10:53
可能です。
クライアントアプリから、一定時間に一度(5分程度)、Aサーバに通知します。これを ハートビートといいます。 しかし、経験上、「クライアントアプリケーションが全て閉じられると」という条件で シャットダウンを行うことはないですね。サーバは、通常は電源をいれっぱなしで、 メモリリーク防止のために夜間に自動リブートを行うだけです。 | ||||||||||||
|
投稿日時: 2008-03-08 11:09
面倒な上にテストも難しく、トラブルが発生しやすくないですかね?
運用時間(例: 8:30〜21:00)を決めて制御する方が普通じゃないですか? やるとしても、運用時間をリモートで調整できる機能かと思いますけど。 まあ、それ以前にサーバーの常時稼動に問題があるんでしょうか? | ||||||||||||
|
投稿日時: 2008-03-08 12:54
ひらさん、わたなべさん、ありがとうございました。
夜間、サーバーを使用しないので、電気代が勿体無いと思いました。 また、素人発想だと思いますが、サーバーとは言え、常時稼動させておくよりも、電源を落とす事が出来れば、サーバーの疲労(のようなもの)や誤作動も少なくて済むのではないかと思っています。(デスクトップPCをファイルサーバーに使っているので余計に) APCの電源管理が出来るソフトで、PowerChute Business Edition http://www.apc.co.jp/products/software/pcbe.html というのを発見したので、このソフトのようなスケジュールシャットダウン・リブートが出来ればと思いました。 またjavaでスケジュールシャットダウン・リブートがコントロール出来るという事は、クライアントの状況に合わせてjavaでコントロールするのも可能だろうと思いました。 何か方法がありましたら教えて下さい。 よろしくお願いします。 ちなみに、運用時間をリモートで調整できる機能というのは実現可能なのでしょうか。 可能であれば、教えて頂けませんでしょうか。 クライアントに合わせてというのは、少し欲張りましたので、時間管理が出来るだけでも非常に有難いです。 よろしくお願いします。 [ メッセージ編集済み 編集者: 未記入 編集日時 2008-03-08 13:31 ] | ||||||||||||
|
投稿日時: 2008-03-09 23:57
質問の意味を、私が勘違いしていなければ、ですが。
電源管理の機能/関数のようなものがJavaに用意されている訳ではなく、 すべて作りこみになります。運用時間については、Timerクラスで一定時間 ごとにイベントを発生させ、Dateなどで時間を確認して、設定されている時刻に なったらシャットダウン動作を開始されます。その際、ハートビートが一定時間 以上なければサーバに対して通知します。 電源についても、特に関数は存在せず、Runtimeクラスでshellを呼び出します。 linuxやwindowsでは、ずばり「shutdown」というコマンドが用意されています。 | ||||||||||||
|
投稿日時: 2008-03-10 09:05
おはようございます。
正確なところはわかりませんが、経験則から言うと ずっっと動かしていたものが移設のために電源をおとすと 二度と再び起動しなくなることがままあります。(笑) でも、電気代を考えると夜間使わないのならシャットダウンしても いいと思います。 #使用者の合意が得られていれば。
なんでjavaなのかがわかりませんが apcのそれはUPSそのものと連携して実現している部分も あるので、一概に全部できるとは言いかねます。 そもそも、そこを作り込む時間と労力を考えた場合 既製品を買う方が安上がりです。
いろいろやり方として可能ですが、そもそもどのように電源管理を行うかで 方向性を調整する必要があると思います。 ただ、時間が来たらシャットダウンするだけなら shutdownコマンドで可能ですし、AC-link機能が可能な PCであれば、UPSでなくともなにか時間が来たら 通電するようなコンセントを間に挟むだけでも 実現できるでしょう。 #電線の太さ(容量)とかも考えないといけないけど。 ってことをいろいろ考えることになると思います。 以上、ご参考までに。 | ||||||||||||
|
投稿日時: 2008-03-10 09:06
ひらさん、ありがとうございました。
javaにはやはりそういった機能はないのですね。ありがとうございます。 教えて頂いた内容から考えると、 起動時は常時稼働サーバーからWake On LANを使用し、 終了時はクライアント管理プログラムや時間管理プログラムから、Runtimeクラスで「shutdown」shellを呼び出すというイメージですね。 どちらもプログラミング経験が無いので、勉強してから取り組みたいと思います。 皆さん、ありがとうございました。 |
1