スマートプラグを二重ポーリングした移設事故と停止手順

ホームラボ運用を描いたアイキャッチ画像

「移設済み」の印が付いた電力収集は、新しい環境で動いていました。しかし棚卸しをすると、旧環境の常駐も止まっておらず、同じスマートプラグを新旧の両側から60秒ごとに問い合わせていました。

エラーは出ていません。新旧どちらも単体では正常でした。監視も、この重複を障害としては扱いません。見つかった契機は通知ではなく、「旧環境の動作はすべて移ったか」を確認するための棚卸しです。

定期ジョブ26本、タイマー6本、常駐8本を1本ずつ移すなら、「新側で起動した」と「旧側で停止した」は別の確認項目です。前回の移設元が静かに壊れたケースでは欠損が後から現れました。今回は逆に、動き続けたことが外部への二重効果として現れます。どちらも当日には監視が鳴らないことがあります。

目次

何が二重だったのか

消費電力を1日分記録する常駐は、スマートプラグを60秒ごとにポーリングする処理です。移設先で稼働していることを確認した時点で、この処理は移設済みとして扱われていました。ただし、旧環境側にも同じ常駐が残っていました。

確認対象新環境旧環境
スマートプラグへのポーリング60秒ごと60秒ごと
単体での動作状態正常正常
障害通知なしなし

この状態に「失敗」の表示はありません。だからこそ、新側の起動確認だけで移設完了と判断すると、旧側の停止漏れは残ります。

移設対象の棚卸し今回の確認点
定期ジョブ26本新側の起動と旧側の停止を分けて確認
タイマー6本同上
常駐8本外部へ作用する処理は二重期間を事前に定義
一括切替ではなく、各処理を1本ずつ移設した。移設完了の条件は起動確認だけでは足りない。

二重実行には、事故と許容がある

同じ引越しの中には、二重になった処理が三種類ありました。違いは「二重だったか」ではありません。二重期間に何が起きるかを、事前に説明できていたかです。

状態対象二重期間の扱い
気づかず二重電力収集同じスマートプラグを新旧が60秒ごとにポーリング。棚卸しまで検知できなかった。
設計して二重GPU温度のハートビート受け側は最後のpushで状態を更新するだけと確認し、移設確認後に旧側を人が削除する手順だった。
予告して二重一回限りの通知指定日に同趣旨の通知が2通届くことを記録し、旧側が送信後に自分を消すため以後は片側だけになるとした。

GPU温度を外部の監視へpushする処理は、並走を前提に移しました。受け側が最後のpushで状態を更新するだけなら、同じ内容が続いても状態を壊しにくいからです。それでも旧側を消す作業は残ります。手順には「移設を確認できたら旧側の行を消す。消すのは人の作業」と明記しました。

一回限りの通知も、二重になること自体を隠してはいません。指定日に同趣旨の通知が2通届くと予告し、旧側は送信後に自分を消すため、以後は片側だけになることを記録しました。通知の重複を許容する判断はできます。ただし、受信者が驚かないよう、先に説明しておく必要があります。

止められないことは、境界が働いた結果でもある

止められないことは、境界が働いた結果でもあるを説明する機器構成のAI生成イメージ
構成イメージ(AI生成。実際の製品写真ではありません)

電力収集の重複が分かっても、移設先から旧側の常駐をその場で停止することはできませんでした。旧環境の停止操作は移設先エージェントの権限外で、安全装置によって遮断されていました。

これは移設作業としては手間ですが、境界としては機能しています。新しい環境が、旧環境の処理を無差別に止められる状態ではないからです。停止は対象と操作を特定し、人が実施する作業へ回しました。

ここで必要なのは、権限を広げることではありません。外部へ効果を出す処理を移す前に、旧側を「誰が、いつ、どう止めるか」を書いておくことです。新側の起動は確認しやすく、旧側の停止は忘れても両方が正常に見えるためです。

並走を判断するための短い問い

  • 新旧が同時に動くと、外部には何が二重に起きるか。
  • 受け側は重複した実行を、状態更新として受け止められるか。
  • 二重通知、二重記録、二重操作のどれが起きるか。
  • 旧側を止める担当者、時刻、操作を決めているか。
  • 棚卸しでは、新側の起動と旧側の停止を別々に確認するか。

二重でも壊れないと説明できるなら、確認のために並走して構いません。説明できないなら、起動より先に停止の段取りを用意します。これは慎重さの演出ではなく、外部に作用する処理を安全に移すための前提です。

次は、移した5本が実行環境の設定1行に弾かれ、エラーも出さず1日以上止まっていた件を扱います。いま移設中なら、まず台帳に「旧側を止める人・時刻・操作」を1行ずつ追加してください。

この検証を回している環境

この検証は、自宅の常設ラボ(使い捨てVM/LXCを回す母艦+GPU+VLAN分離ネットワーク)で動かしています。使っている機材と選定理由、全体構成は1本にまとめています。

ラボ構成のまとめを見る →
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

目次