- PR -

javaで電源管理は可能でしょうか

1
投稿者投稿内容
未記入
会議室デビュー日: 2008/03/08
投稿数: 3
投稿日時: 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サーバーに対して、シャットダウンを指示します。

以上です。よろしくお願いします。
ひら
ぬし
会議室デビュー日: 2005/03/04
投稿数: 260
投稿日時: 2008-03-08 10:53
可能です。
クライアントアプリから、一定時間に一度(5分程度)、Aサーバに通知します。これを
ハートビートといいます。
しかし、経験上、「クライアントアプリケーションが全て閉じられると」という条件で
シャットダウンを行うことはないですね。サーバは、通常は電源をいれっぱなしで、
メモリリーク防止のために夜間に自動リブートを行うだけです。
わたなべ
大ベテラン
会議室デビュー日: 2007/12/09
投稿数: 123
お住まい・勤務地: 札幌
投稿日時: 2008-03-08 11:09
面倒な上にテストも難しく、トラブルが発生しやすくないですかね?

運用時間(例: 8:30〜21:00)を決めて制御する方が普通じゃないですか?
やるとしても、運用時間をリモートで調整できる機能かと思いますけど。

まあ、それ以前にサーバーの常時稼動に問題があるんでしょうか?
未記入
会議室デビュー日: 2008/03/08
投稿数: 3
投稿日時: 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 ]
ひら
ぬし
会議室デビュー日: 2005/03/04
投稿数: 260
投稿日時: 2008-03-09 23:57
質問の意味を、私が勘違いしていなければ、ですが。

電源管理の機能/関数のようなものがJavaに用意されている訳ではなく、
すべて作りこみになります。運用時間については、Timerクラスで一定時間
ごとにイベントを発生させ、Dateなどで時間を確認して、設定されている時刻に
なったらシャットダウン動作を開始されます。その際、ハートビートが一定時間
以上なければサーバに対して通知します。

電源についても、特に関数は存在せず、Runtimeクラスでshellを呼び出します。
linuxやwindowsでは、ずばり「shutdown」というコマンドが用意されています。

みなと
大ベテラン
会議室デビュー日: 2002/06/14
投稿数: 202
お住まい・勤務地: Q州地方の日本海側
投稿日時: 2008-03-10 09:05
おはようございます。
引用:

未記入さんの書き込み (2008-03-08 12:54) より:
ひらさん、わたなべさん、ありがとうございました。

夜間、サーバーを使用しないので、電気代が勿体無いと思いました。
また、素人発想だと思いますが、サーバーとは言え、常時稼動させておくよりも、電源を落とす事が出来れば、サーバーの疲労(のようなもの)や誤作動も少なくて済むのではないかと思っています。(デスクトップPCをファイルサーバーに使っているので余計に)


正確なところはわかりませんが、経験則から言うと
ずっっと動かしていたものが移設のために電源をおとすと
二度と再び起動しなくなることがままあります。(笑)
でも、電気代を考えると夜間使わないのならシャットダウンしても
いいと思います。
#使用者の合意が得られていれば。

引用:

APCの電源管理が出来るソフトで、PowerChute Business Edition
http://www.apc.co.jp/products/software/pcbe.html
というのを発見したので、このソフトのようなスケジュールシャットダウン・リブートが出来ればと思いました。
またjavaでスケジュールシャットダウン・リブートがコントロール出来るという事は、クライアントの状況に合わせてjavaでコントロールするのも可能だろうと思いました。


なんでjavaなのかがわかりませんが
apcのそれはUPSそのものと連携して実現している部分も
あるので、一概に全部できるとは言いかねます。
そもそも、そこを作り込む時間と労力を考えた場合
既製品を買う方が安上がりです。

引用:

ちなみに、運用時間をリモートで調整できる機能というのは実現可能なのでしょうか。
可能であれば、教えて頂けませんでしょうか。
クライアントに合わせてというのは、少し欲張りましたので、時間管理が出来るだけでも非常に有難いです。


いろいろやり方として可能ですが、そもそもどのように電源管理を行うかで
方向性を調整する必要があると思います。

ただ、時間が来たらシャットダウンするだけなら
shutdownコマンドで可能ですし、AC-link機能が可能な
PCであれば、UPSでなくともなにか時間が来たら
通電するようなコンセントを間に挟むだけでも
実現できるでしょう。
#電線の太さ(容量)とかも考えないといけないけど。

ってことをいろいろ考えることになると思います。

以上、ご参考までに。
未記入
会議室デビュー日: 2008/03/08
投稿数: 3
投稿日時: 2008-03-10 09:06
ひらさん、ありがとうございました。

javaにはやはりそういった機能はないのですね。ありがとうございます。

教えて頂いた内容から考えると、
起動時は常時稼働サーバーからWake On LANを使用し、
終了時はクライアント管理プログラムや時間管理プログラムから、Runtimeクラスで「shutdown」shellを呼び出すというイメージですね。

どちらもプログラミング経験が無いので、勉強してから取り組みたいと思います。
皆さん、ありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)