UPS Virtual Report

SC22で実現するWSFC環境の自動停止と自動起動

Microsoft

こんにちは。オムロン ソーシアルソリューションズのSE高田と申します。

この記事は、Windows Server Failover Cluster(以下WSFCと記載)環境において、オムロンUPSに装着できるネットワークカード「SC22」を使用し、停電発生時のWSFC環境の自動停止および、電源復旧時の自動起動を実現するための設定方法について記載しています。

※2025年4月現在の情報です。

どんな人向け?

  • WSFC環境の停止、起動の自動化を担当されている。
  • 停電時にUPSと連携してWSFC環境を自動で停止したい。
  • 復電時にUPSと連携してWSFC環境を自動で起動したい。

構成図

・Hyper-Vホスト 台数:2台、OS:Windows Server 2022 Standard ※1
・AD兼DNSホスト 台数:1台、OS:Windows Server 2022 Standard ※1
・外部ストレージ 台数:1台
・UPS 型式:※2、台数:1台
・NWカード 型式:SC22、ファームウェア:1.21、1.31

※1. OSはWindows Server 2025 StandardおよびDatacenterも検証済み ※2. UPSの型式は記載しておりません。NWカード(SC22)を挿すことができるUPS及び、UPSに接続する機器の消費電力を確認してUPSをご選定ください。

停止・起動の流れ

この記事で記載している設定値をSC22に設定すると、下図のような動作になります。

《停止》
入力電源異常を検知すると、以下の順序でSC22からWSFC環境を停止します。

※①、②、③の時間をSC22の設定で調整することができます。

《起動》
復電後は、以下の順序でSC22からWSFC環境を起動します。

※1. 起動時間は復電後にSC22が起動するまでのおおよその目安になります。 ※2. ①の時間をSC22の設定で調整することができます。

設定方法

それでは、実際に前述した図の流れで自動停止、自動起動ができるようにSC22の設定をしてみましょう。

※1. SC22のIPアドレスなど初期設定については以下URLのセットアップガイドを参照してください。
・SC22 取扱説明書(セットアップガイド)
https://socialsolution.omron.com/jp/ja/products_service/ups/support/download/ups/sc22/sc22.html

※2. 前提条件としてSC22はSSHで対象のサーバーに接続し、スクリプトを実行します。そのためHyper-Vホストおよび、AD兼DNSホストにOpenSSHサーバーのインストールが必要です。

※3. 外部ストレージについては、以下のURLに記載の機器に対応しています。
・仮想プラットフォーム対応状況
https://socialsolution.omron.com/jp/ja/products_service/ups/virtualization/verified.html

シャットダウン設定

UPS管理>UPS設定>『シャットダウン設定』から①、②、③を設定します。

《設定項目説明》
①入力電源異常が発生したときの UPS の動作を設定します。
②UPS が停止するまでの時間(秒)を設定します。本構成全体がシャットダウンを完了するまでに必要な時間を考慮して設定してください。設定可能な範囲は『0』~『1800』です。
③UPS が停電により停止した後、復電時に自動で起動『する』か『しない』かを選択します。

《設定値》

シャットダウン動作 待機時間(秒)
クライアントシャットダウン/UPS停止 60
UPS出力停止時間
出力コンセントA(秒) 900
出力コンセントB(秒) 900
出力コンセントC(秒) 900
入力電源復電時のUPS再起動
する
スクリプトシャットダウン

UPS管理>スクリプト&スケジュール>『スクリプトシャットダウン』から①、②、③を設定します。

《設定項目説明》
①スクリプトを実行する対象機器の接続情報(IP アドレス、ログインユーザ ID、パスワード)を設定します。
②接続に使用するプロトコルを選択します。選択可能なプロトコルは『Telnet』と『SSH』です。
③スクリプトの実行条件を選択します。停電時にスクリプトを実行させたい場合は『シャットダウン』を、
復電時にスクリプトを実行させたい場合は『入力電源復電』を選択します。
UPS管理>スクリプト&スケジュール>『スクリプトシャットダウン』画面を右スクロールし、
④、⑤を設定します。

《設定項目説明》
④スクリプトが実行されるまでの待機時間を設定します。ただし、前項の『シャットダウン設定』で設定した『UPS 出力停止時間』を超える値は設定できません。
⑤スクリプト実行対象機器で実行するスクリプトを設定します。プリセットのスクリプトを使用するか、
新規にスクリプトを作成してください。
※スクリプトはNo.順に実行されるわけではありません。実行のタイミングは、④で設定した
『スクリプト待機時間(秒)』に依存します。

《設定値》

No. IPアドレス/ホスト名 プロトコル 条件 スクリプト
待機時間
スクリプト
No.
スクリプト内容
1 Hyper-Vホスト#1 ※1 SSH シャットダウン 0 スクリプト20 All_VM_Stop on Hyper-V
2 Hyper-Vホスト#2 ※1 SSH シャットダウン 0 スクリプト20 All_VM_Stop on Hyper-V
3 Hyper-Vホスト#1 SSH シャットダウン 120 スクリプト22 Hyper-V Cluster stop
4 Hyper-Vホスト#1 SSH シャットダウン 360 スクリプト1 Windows
5 Hyper-Vホスト#2 SSH シャットダウン 360 スクリプト1 Windows
6 AD兼DNSホスト SSH シャットダウン 480 スクリプト1 Windows
7 外部ストレージ SSH シャットダウン 600 ※2 ※3
8 AD兼DNSホスト(IPMI) SSH 入力電源復電 600 ※4 ※5
9 Hyper-Vホスト#1(IPMI) SSH 入力電源復電 720 ※4 ※5
10 Hyper-Vホスト#2(IPMI) SSH 入力電源復電 720 ※4 ※5
11 Hyper-Vホスト#1 ※1 SSH 入力電源復電 900 スクリプト21 All_VM_Start on Hyper-V
12 Hyper-Vホスト#2 ※1 SSH 入力電源復電 900 スクリプト21 All_VM_Start on Hyper-V

※1. No.1、No.2、No.11、No.12については、仮想マシンがどちらのホストに存在するか不明なため、
2台のホストそれぞれに同じスクリプトを登録します。

※2. ストレージメーカーやストレージ機器によって使用するスクリプトが異なります。
後述の『外部ストレージ停止』のスクリプトを参照し、ご利用のストレージに対応したプリセットのスクリプトNo.を選択してください。

※3. Dell Unity XT 380を使用する場合は、プリセットが用意されていないため、※2はスクリプトNo.23以降を選択し、任意のスクリプト名を記載してください。
『表示』をクリックして空白欄にDell Unity XT 380のスクリプトをコピー&ペーストしてください。

※4. IPMI経由のサーバー起動スクリプトについてもプリセットは用意されていないため、スクリプトNo.23以降を選択し、新規にスクリプトを作成してください。
※5. サーバーメーカーによって使用するスクリプトが異なります。
任意のスクリプト名を記載し、『表示』をクリックして空白欄に後述の『IPMI経由のサーバー起動』のスクリプトをコピー&ペーストしてください。

参考情報

外部ストレージ停止
メーカー型式 バージョン プリセット有無 スクリプト内容
NetApp
FAS2650A
ONTAP 9.x プリセット有
スクリプト No.5
rcv=login as:
snd=$u1
rcv=Password:
snd=$p1
rcv=>
snd=system node halt–node * -inhibit-takeover true –skip-lifmigration-before-shutdown true
rcv={y|n}:
snd=y
rcv={y|n}:
snd=y
Dell
PowerVault
ME5012
ME5.1.1.0.5 プリセット有
スクリプト No.6
rcv=login:
snd=$u1
rcv=Password:
snd=$p1
rcv=#
snd=shutdown both
rcv=(y/n)
snd=y
HPE MSA
1060
2060
2062
IN110P001
IN110P002
プリセット有
スクリプト No.7
rcv=login:
snd=$u1
rcv=Password:
snd=$p1
rcv=#
snd=shutdown both
rcv=(y/n)
snd=y
Dell
Unity XT 380
5.3.0.0.5.120 プリセット無し rcv=login:
snd=$u1
rcv=Password:
snd=$p1
rcv=#
snd=svc_shutdown --system-halt
rcv=action:
snd=yes
IPMI経由のサーバー起動
メーカー
管理モジュール名称
バージョン プリセット有無 スクリプト内容
HPE
iLO
2.55 プリセット無し rcv=login:
snd=$u1
rcv=Password
snd=$p1
rcv=>
snd=power on
Dell
iDrac
6.00.30.15 プリセット無し rcv=login:
snd=$u1
rcv=Password:
snd=$p1
rcv=>
snd=racadm serveraction powerup
Lenovo
XCC
8.82 プリセット無し rcv=login:
snd=$u1
rcv=Password
snd=$p1
rcv=>
snd=power on
Cisco
CIMC
4.2(3b) プリセット無し rcv=login:
snd=$u1
rcv=Password:
snd=$p1
rcv=#
snd=scope chassis
rcv=#
snd=power on
rcv=[y|N]
snd=y
富士通
iRMC
1.19S プリセット無し rcv=login:
snd=$u1
rcv=Password:
snd=$p1
rcv=quit:
snd=2
rcv=quit:
snd=4
rcv=(yes/no)?
snd=yes
rcv='no':
snd=yes
rcv=continue
snd=q
仮想マシンを指定して順番に停止

下の図のような構成で、WEBサーバー⇒APサーバー⇒DBサーバーの順で仮想マシンを停止させたい
場合は、以下の停止スクリプトを参照し、停止対象の仮想マシン名を”仮想マシン名”に記載して、
新規にスクリプトを作成してください。

・停止
rcv=login:
snd=$u1
rcv=password:
snd=$p1
rcv=C:
snd=powershell
rcv=>
snd=Get-VM | Where-Object {$_.Name -like "仮想マシン名"} | Stop-VM -Force -Asjob

※1. WEB01、WEB02、WEB03を同時に停止させたい場合は、”仮想マシン名”に”WEB*”と入力することで
名前がWEBという文字列で始まる仮想マシンを前方一致で停止することができます。
また、仮想マシン名の一部にWEBという文字列が含まれている場合は”*WEB*”と入力することで、
WEBという文字列を含む仮想マシンを部分一致で停止することができます。

実際にWEBサーバー⇒APサーバー⇒DBサーバーと順番にシャットダウンスクリプトが実行されるように設定してみます。

下図のようにスクリプトNo.23にWEB、No.24にAP、No.25にDBサーバー停止のスクリプトを登録し、各『スクリプト内容』には任意のスクリプト名を記載します。
『スクリプト待機時間(秒)』はWEBサーバーの停止スクリプト実行から30秒後にAPサーバー、
60秒後にDBサーバーが停止するように設定します。

表示をクリックし、下図の赤枠に上記記載の停止スクリプトをコピー&ペーストします。最後の行に記載されているスクリプトの仮想マシン名をWEB、AP、DBに変更します。

スクリプトの最後の行が以下のようになります。
WEB stop
snd=Get-VM | Where-Object {$_.Name -like "WEB*"} | Stop-VM -Force -Asjob

AP stop
snd=Get-VM | Where-Object {$_.Name -like "AP*"} | Stop-VM -Force -Asjob

DB stop
snd=Get-VM | Where-Object {$_.Name -like "DB*"} | Stop-VM -Force -Asjob

仮想マシンを指定して順番に起動

仮想マシンの起動については『仮想マシンを指定して順番に停止』でご紹介した内容と同様です。
以下のスクリプトをコピーし、No.23以降にペーストして設定してください。

・起動
rcv=login:
snd=$u1
rcv=password:
snd=$p1
rcv=C:
snd=powershell
rcv=>
snd=Get-VM | Where-Object {$_.Name -like "仮想マシン名"} | Start-VM

スクリプトの最後の行が以下のようになります。
WEB start
snd=Get-VM | Where-Object {$_.Name -like "WEB*"} | Start-VM

AP start
snd=Get-VM | Where-Object {$_.Name -like "AP*"} | Start-VM

DB start
snd=Get-VM | Where-Object {$_.Name -like "DB*"} | Start-VM

以上、SC22を使用してWSFC環境の自動停止と自動起動の設定方法についてご紹介しました。 WSFC環境の自動停止および自動起動はうまくできましたでしょうか。

本記事を参考にしても動作がうまくいかない場合は、以下ページからお問い合せください。
https://socialsolution.omron.com/jp/ja/products_service/ups/virtualization/support_contact.html