メインサーバーに連動してサブサーバーを起動したい

平日の日中はネットを使う機器がないのでサーバーも落としているのですが、帰宅後間隔を開けて順番に起動しなくちゃいけないのが面倒、なんとか自動化できないか。

結論先に書きますが、
メイン仮想マシンから物理サブサーバーにマジックパケット投げて、WakeOnLanしてあげます。

 

いま各種サーバー機能を物理サーバーには直接実装せず、その仮想サーバー上で動かしてます。
なので物理サーバーのロック画面が出たのを確認しただけでは、まだ仮想サーバーが立ち上がっていない=重要なサービスが動いていない可能性があります。

今の起動手順をちょっと詳しく書くと、

1,物理メインサーバー電源入れる(手動)
2,仮想メインサーバーが起動する(自動)
3,仮想メインサーバーが起動完了した頃合いを見て、物理サブサーバーの電源入れる(手動
4,仮想サブサーバー起動(自動)

「3」の工程が厄介です。仮想メインサーバーっていつ立ち上がるの?別のPCからRDP試してみるか物理メインサーバーにログオンして仮想マシンの状態確認するしかない・・・?

多分、細かいとこ気にしないで両方とも同時に立ち上げちゃっても問題ないと思いますが、ちょっと心の健康状態に悪いので何とかしたいと考えてたときに上の結論にたどり着きました。
あとは仕込むだけです。

物理サブサーバーがWakeOnLanできるようにする

機種によって設定方法マチマチなので割愛!

マジックパケット投げるスクリプトを用意する

フリーソフトとか使っても良いのですが、Win7以降のPowershellで対応できるみたいなのでこれを使用。

多分Powershellのスクリプトファイルでも良いと思うのですが、ググったらバッチファイルで実装(中でPowershell呼び出してますけど)する方法があったので、拝借しました。

https://poga.jp/?p=182
※記事4個しかない。。。いつまで残ってるかな?

ちょっとだけカスタマイズして、マジックパケット投げる前に1分待つ処理加えました。仮想メイン鯖のドメインサービス類が起動するのを一応待つためです。それらのサービス類が起動したかのチェックまではしてないです(笑)

仮想メイン鯖からマジックパケットに反応するか確認

物理サブサーバーの電源落として、用意したマジックパケット投げるバッチを仮想メイン鯖で実行してみます。(このときは普通にログインした状態で)

走らなかったらなんか間違えてるか、マジックパケット受ける側が非対応の環境。

仮想メイン鯖起動時に、バッチを実行するように仕込む

面倒事避けるために、スクリプトはシステムドライブ直下に(本当はダメかも)。

タスクスケジューラに、「コンピュータの起動時」をトリガーにして、実行プログラムには先に作ったバッチファイルを指定します。

「基本タスクの作成」で作った場合はこれだけでは設定が不足するので作ったタスクの編集画面を一度開き、「タスクの実行時に使うユーザーアカウント」を「SYSTEM」にしてやります。
あと念の為最上位の特権にもチェックを。


セキュリティちゃんと考慮するなら、専用の限られたユーザーアカウントを用意して、ログインしているかどうかに関わらず実行するの選択肢を選べば良いはず(ログインして無くても実行する、を選ぶことがポイント)

 

ここまでできれば、以後は仮想メイン鯖が立ち上がったあとに、物理サブサーバーがマジックパケットを受けて自動で立ち上がるようになります。コンソールログオンもリモートログオンも不要です。

 

 

シャットダウン?そんなの電源ボタンぽちーーーー ですよ。
※長押しじゃないよ。

物理サーバー(メイン・サブ共)のシャットダウン操作時は、仮想サーバーも自動でシャットダウン操作(休止や状態保存ではない)を行うようにHyper-Vで設定しているので、問題ないです。

コメント