今冬も厳しいそうです。
毎度綱渡り状態の「会社間の連系系統または周波数変換設備のどれかひとつでもコケるとUFR発動の可能性がある」状態です。
個人的にはこんな状況を「電気が足りている」とは到底呼べず、停電がいつ起こってもおかしくはないと考え、自宅のサーバたちを守るべくUPSをさらに増設しました。
●UPSを買い増しした
既存でAPCのSmart-UPS 750VAが動作していますが、サーバが4台あると、バッテリ稼働時のランタイム(動作時間)が心もとないため、750VAを買い増し。
上記のリンクは「SMT750J」ですが、実際は特定のECサイト限定の「SMT750JE」を購入しました(ntt-x storeで購入)
なお中身は同一です。(SMT750JEは1年保証のみラインナップ)
管理カードも当然調達。下記は新品ですが、管理カードは企業のリースアップに伴う中古流れが大量に出回っているのため、そちらをゲット。
管理カードをUPSにインストール、コンソール経由で初期設定を行ってネットワークに接続します。
HTTPもしくはHTTPSで管理GUIへログインできたらOKです。
中古の場合ファームウェアがかなり古いことがあるので、必要に応じてアップグレードします。ファームはSmart-UPS用を選択します。
Symmetra用を適用しないように注意。
なお、私の手元のAP9630では、ファームアップ後に設定が飛ぶ現象が出ました(HTTP/HTTPSログインの設定すら飛んだ)ので、ファームアップ後に設定を一通りチェックしておくとよいでしょう。
●本体の外観とか
注文すると超特大でめちゃくちゃ重たいダンボールが届きます。重量は13kg。
(大半が鉛バッテリの重さだとは思いますが)
フロントには液晶パネルを備えており、各種ステータスの表示や、本体に関する設定変更を行うことが可能です。
またマネジメントカードのIPアドレス表示や、商用電源の電圧や周波数なども表示できます。
液晶がついているフロントパネルは手前に引くと外れ、バッテリにアクセスできます。
交換用バッテリはここからホットスワップが可能です。
背面はUSB、コンソール、NEMA 5-15形状のアウトレット6ポート(写真では購入直後のためシールが貼られていますが)、マネジメントカード用のスマートスロットがあります。
お次はAP9630。AP9631と基盤は共通のようで、センシング用のコネクタと思われる空きパターンがあります。
スマートスロットにAP9630を装着し、バッテリコネクタを接続、電源ケーブルをコンセントに接続します(この時点でバッテリへの充電が開始されます)
●今回の構成
UPSが2台、OSもWindows系とUNIX系との2系統あるので、それぞれでUPSと連携ソフトを別々にしました。
・XigmaNASがNUTを備えているためUNIX系はNUT(Network UPS Tools)
・Windows系はNUTがうまく動かなかったのでapcupsd
・一番ランタイムを確保したい機器が録画鯖のWindows機なので、ネットワーク機器はすべてUNIX側UPSに接続
・配線と監視の関係で、USB経由ではなく管理カードのSNMP監視にて構築
実際の配線は以下のような感じになります。青がLAN系、赤、オレンジが電源系です。
エンコ鯖だけポート構成の都合上、サーバを集約しているスイッチに配線されていません。
また2台のUPSはサービス系のスイッチに接続されているため、2台のスイッチを
今回はUNIX系で利用する、NUTの設定のまとめです。
●UPSの設定
Management Cardスロットにて以下の設定を有効にしておきます。
・SNMPの設定(v1またはv3、必要に応じてcommunity設定も行う)
・PowerChute Clientの設定(apcupsdを利用する方のみ)
参考:
●NAS(XigmaNAS,NUT-Server)の設定
XigmaNASはOSの機能としてNUTがインストールされているので、それを利用します。
設定は以下の通り。
Mode:Master
Identifier:SMT750JE
Additional Parameters:
community = public
snmp_version = v1
pollfreq = 15
desc = "SNT750JE"Shutdown Mode:UPS goes on battery
Shutdown Timer:300
Remote Monitoring:Enable
Monitoring User:upsmon
Monitoring Password:upsmon
我が家のNASはメール通知が可能な状態にしているので、メール通知も合わせて設定しておきます。
・Email Report
To Email Address:通知先メールアドレス
Subject:UPS notification from %h on %d
(画像はテストのためshutdown timerが30秒となっていますが、実際の運用は300秒(5分)で動作させています)
設定を保存し、トップ画面に戻るとUPSの状態が表示されていれば成功です。
また、Diagnostics→Information→UPSにて、NUT経由で得られるUPSの詳細情報が表示できます。
上記の設定を行い、テストとしてUPSの電源を抜いたところ、shutdwon timerの指定時間後にNASが自動シャットダウンされました。
なお当初の設定ではタイムアウトになっているのか、うまくSNMP get出来ない事象が出てcommunication errorが多発した(メールが飛ぶ)ので、pollintervalの値を調整しています。
参考:
●Linux VM(NUT-Client,ESXi shutdown)
次はNUT-ClientとなるLinux VMです。今回はUbuntu Serverを利用しています。
(Satisfactoryを動作させているLinux VMにやらせています)
まずはNUTのインストール。
apt-get install nut
設定ファイルは/etc/nut/ 配下にあり、複数のファイルに分かれています。
必要箇所を修正します。
・nut.conf
MODE=netclient
・upsmon.conf
MONITOR SMT750JE@192.168.xxx.xxx:3493 1 upsmon upsmon slave
#SHUTDOWNCMD "/sbin/shutdown -h +0"
SHUTDOWNCMD "/usr/bin/ssh root@192.168.10.100 poweroff"
NOTIFYFLAG ONLINE SYSLOG+WALL+EXEC
NOTIFYFLAG ONBATT SYSLOG+WALL+EXEC
NOTIFYFLAG LOWBATT SYSLOG+WALL+EXEC
NOTIFYFLAG FSD SYSLOG+WALL+EXEC
NOTIFYFLAG COMMOK SYSLOG+WALL+EXEC
NOTIFYFLAG COMMBAD SYSLOG+WALL+EXEC
NOTIFYFLAG SHUTDOWN SYSLOG+WALL+EXEC
NOTIFYFLAG REPLBATT SYSLOG+WALL+EXEC
NOTIFYFLAG NOCOMM SYSLOG+WALL+EXEC
NOTIFYFLAG NOPARENT SYSLOG+WALL+EXEC
POLLFREQ 15
DEADTIME 30
なお、シャットダウン処理に実行されるコマンドはデフォルトではなく、「ESXiに対しSSHを行い、poweroffコマンドを実行」というような処理に変更します。
後述のESXiの設定と併せ、ハイパーバイザごとシャットダウンするような仕組みです。
設定完了後、サービスを再起動します。
root@satisfactory-server:/etc/nut# /etc/init.d/nut-client restart
上記の設定後、UPSの状態がMaster側を通じて確認可能かどうかをテストします。
root@satisfactory-server:/etc/nut# upsc SMT750JE@192.168.xxx.xxx
Init SSL without certificate database
battery.charge: 100
battery.date: 08/15/2022
battery.runtime: 16200
battery.runtime.low: 300
battery.voltage: 27
device.contact: Unknown
device.description: APC Web/SNMP Management Card (MB:v4.1.0 PF:v6.9.6 PN:apc_hw05_aos_696.bin AF1:v6.9.6 AN1:apc_hw05_sumx_696.bin MN:AP9630J HR:08
device.location: Unknown
device.mfr: APC
device.model: Smart-UPS 750
device.serial: xxxxxxxxxxx
device.type: ups
driver.name: snmp-ups
driver.parameter.pollfreq: 15
driver.parameter.pollinterval: 2
driver.parameter.port: 192.168.xxx.xxx
driver.parameter.snmp_version: v1
driver.parameter.synchronous: auto
driver.version: 2.8.0.1
driver.version.data: apcc MIB 1.6
driver.version.internal: 1.21
input.frequency: 50
input.sensitivity: high
input.transfer.high: 108
input.transfer.low: 92
input.transfer.reason: rateOfVoltageChange
input.voltage: 102.90
input.voltage.maximum: 102.80
input.voltage.minimum: 102.10
output.current: 0
output.frequency: 50
output.voltage: 102.90
output.voltage.nominal: 100
ups.firmware: UPS 09.8 (ID18)
ups.id: SMT750JE
ups.load: 0
ups.mfr: APC
ups.mfr.date: 12/29/2021
ups.model: Smart-UPS 750
ups.power: 0
ups.realpower: 0
ups.serial: xxxxxxxxxxx
ups.status: OL
ups.temperature: 33.30
ups.test.date: 10/11/2022
ups.test.result: Ok
サービスのステータスを確認しておきます。
root@satisfactory-server:/etc/nut# service nut-client status
● nut-monitor.service - Network UPS Tools - power device monitor and shutdown controller
Loaded: loaded (/lib/systemd/system/nut-monitor.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2022-10-18 07:43:43 UTC; 8s ago
Process: 2375 ExecStart=/sbin/upsmon (code=exited, status=0/SUCCESS)
Main PID: 2377 (upsmon)
Tasks: 2 (limit: 19068)
Memory: 848.0K
CPU: 5ms
CGroup: /system.slice/nut-monitor.service
tq2376 /lib/nut/upsmon
mq2377 /lib/nut/upsmonOct 18 07:43:43 satisfactory-server systemd[1]: Starting Network UPS Tools - power device monitor and shutdown controller...
Oct 18 07:43:43 satisfactory-server upsmon[2375]: fopen /run/nut/upsmon.pid: No such file or directory
Oct 18 07:43:43 satisfactory-server upsmon[2375]: UPS: SMT750JE@192.168.xxx.xxx:3493 (slave) (power value 1)
Oct 18 07:43:43 satisfactory-server upsmon[2375]: Using power down flag file /etc/killpower
Oct 18 07:43:43 satisfactory-server upsmon[2376]: Startup successful
Oct 18 07:43:43 satisfactory-server systemd[1]: nut-monitor.service: Can't open PID file /run/nut/upsmon.pid (yet?) after start: Operation not permitted
Oct 18 07:43:43 satisfactory-server systemd[1]: nut-monitor.service: Supervising process 2377 which is not our child. We'll most likely not notice when it exit>
Oct 18 07:43:43 satisfactory-server systemd[1]: Started Network UPS Tools - power device monitor and shutdown controller.
参考:
●ESXiの設定
自動シャットダウンに対応させるため、公開鍵方式でSSHログインできるよう設定を行います。
また、ハイパーバイザのシャットダウン時にVMを自動的にサスペンドする設定も合わせて行います。
・ESXiのSSHの有効化
ESXiの管理GUIよりSSHを有効化します。またSSHサービスがESXi起動時に有効になるよう「ホストと連動して起動及び停止します」に設定を変更しておきます。
サービス起動後、ESXiに対してSSHができるかどうか確認しておくと良いでしょう。
・ゲストVM側(SSHをする側、NUT-Client側)での設定
まずはSSHをする側(NUT-Client側)でSSHのキーペアを作成します。
なお、NUTはSHUTDOWNCMDに記載されているコマンドをを実行する際、rootユーザで実行しますので、下記の設定はrootユーザに権限昇格してから行ってください。
root@satisfactory-server:/etc/nut# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):(何も入力せずEnterを押下)
Enter same passphrase again:(何も入力せずEnterを押下)
Your identification has been saved in /root/.ssh/id_rsa
Your public key has been saved in /root/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:xxxxxxxxxxxxxxxx root@satisfactory-server
The key's randomart image is:
+---[RSA 3072]----+
xxxxxxx
+----[SHA256]-----+
上記で秘密鍵がid_rsaに、公開鍵がid_rsa.pubに作成されます。
またrootユーザで作業しているため、これらは/root/.ssh/配下に作成されます。
作成した公開鍵をESXiにSCPを使い転送します。
(ESXiのルートディレクトリに転送しています)
root@satisfactory-server:~/.ssh# scp /root/.ssh/id_rsa.pub root@192.168.xxx.xxx:/
The authenticity of host '192.168.xxx.xxx (192.168.xxx.xxx)' can't be established.
RSA key fingerprint is SHA256:/xxxxxxxxx.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.168.xxx.xxx' (RSA) to the list of known hosts.
(root@192.168.xxx.xxx) Password:(ESXSiの管理パスワードを入力)
id_rsa.pub 100% 578 1.3MB/s 00:00
scpにて正常に公開鍵が転送できたら、ゲストVMからSSHでESXiに接続し、転送した公開鍵をキーストアに追記します。
root@satisfactory-server:~/.ssh# ssh root@192.168.xxx.xxx
(root@192.168.xxx.xxx) Password:(ESXSiの管理パスワードを入力)
The time and date of this login have been sent to the system logs.WARNING:
All commands run on the ESXi shell are logged and may be included in
support bundles. Do not provide passwords directly on the command line.
Most tools can prompt for secrets or accept them from standard input.VMware offers supported, powerful system administration tools. Please
see www.vmware.com/go/sysadmintools for details.The ESXi Shell can be disabled by an administrative user. See the
vSphere Security documentation for more information.
[root@M75q-1:~]
[root@M75q-1:~] cd /
[root@M75q-1:~] cat id_rsa.pub >> /etc/ssh/keys-root/authorized_keys
[root@M75q-1:~]
いったんESXiからログオフし、再度ゲストVMからSSHを行い、パスワードを聞かれずにログインできることを確認します。
root@satisfactory-server:~# ssh root@192.168.xxx.xxx
The time and date of this login have been sent to the system logs.WARNING:
All commands run on the ESXi shell are logged and may be included in
support bundles. Do not provide passwords directly on the command line.
Most tools can prompt for secrets or accept them from standard input.VMware offers supported, powerful system administration tools. Please
see www.vmware.com/go/sysadmintools for details.The ESXi Shell can be disabled by an administrative user. See the
vSphere Security documentation for more information.
[root@M75q-1:~](パスワードを聞かれずにESXiのシェルが出てくることを確認)
・ESXiのVM自動起動設定
起動?そう、起動であっています。
ESXiはハイパーバイザ側がシャットダウン処理を開始する際、動作中のVMに対してシャットダウン/サスペンド処理を行うことができます。
ここをサスペンドまたはシャットダウンにしておきます。
シャットダウンについてはVMに対してvmware toollsのインストールが必要なはず。
なお、VMごとに設定を変えることも可能です。
参考:
●テスト
ここまでの設定を行い、UPSをコンセントから抜きます。
Interval Time経過後、NAS側が「UPS on Battery」状態になりその後SlaveのVM側もOnBattery表示になったらステータス検知成功です。
この後指定時間後(設定では5分)にシャットダウン処理が走ればOKです。
VM側は指定時間後、さらに数十秒の遅延があってから、ESXiのVMのサスペンド移行が始まり、全VMのサスペンド終了後にESXi自身がシャットダウンすれば動作としては意図どおりの動作になります。
Slave側のシャットダウン処理遅延時間を詰めることは可能だとは思いますが、現時点これくらいの遅延であれば特段不都合は起きないので、これで運用しています。
これで自宅に居ないときに急に停電が起きたとしても、サーバたちは自動的に落ちてくれるようになったのでひと安心です。
冬に間に合ってよかった。