どどんとふ公式鯖の派手な障害やらかし

どどんとふ公式鯖稼働系の物理サーバーのファイルシステムが溢れたことにより稼働系仮想マシンのファイルシステム破損が発生し待機系に切り替わったものの稼働系と待機系のデータ同期が一部不完全だったことから部屋データと画像データの不一致が発生しておりました。

状況を調査した結果、どどんとふ公式鯖の全部屋データを不整合がない状態の最新バックアップである2018/05/21 23:30時点に全データのロールバックを行いました。 避難所についても同様の状況であることから、救済措置として第壱~第四鯖の部屋削除日数を5→10日に延長しております。 (第五、第六鯖はもとから10日のため)

部屋データの消失およびロールバックが発生した原因というか経緯は以下の通りです

  • 5/21に発生した障害時にramdisk→hddへのコミット処理が多重起動防止のフラグを残したまま異常終了。
  • 多重起動防止フラグが残っているので同期処理が実行されなかった
  • ramdiskのデータが未コミットのため、待機系へのデータ同期、避難所へのコピー、日次バックアップについては、 ramdisk上の部屋データのみ全て5/21時点しかない
  • サーバー再起動時にはフラグファイル有無に関係なくコミット処理を行うため、5/21 23:00のリカバリー時に実行した再起動時の状態が唯一整合性のある状態
  • 5/26 14:50 稼働系の画像データがあるSSD領域のファイルシステムが溢れたことによってどどんとふ公式鯖の稼働系が停止し、待機系に切り替わった
    • ファイルシステム溢れの原因は5/19のメンテナンス後にバックアップを取得した際に実行したsnapshotが残存していたため、公式鯖の画像データの増減によりbtrfsのmetadataが削除されず蓄積され続けたため
  • 待機系は部屋データの同期が5/21時点で止まっていたため、部屋データは5/21なのに画像データは日次バックアップにより5/26が最新という不整合状態になっていた

また、全ての部屋データとキャラクターデータの整合性確認は現在の運用体制では不可能ですので、申し訳ございませんが、 上記以外の不整合や不備がありましても個別のリカバリー等には応じかねます。

で、以下のような再発防止策を実施しています。

  • 日次バックアップ処理の改良
    • ramdisk→hddへのコミット処理を多重起動防止のフラグ有無関係なしに実施
    • 多重起動防止のフラグをリセット(日次バックアップ時は定期コミットをそもそも動かしていないため多重起動しようがない)
  • 5/19の不安定化になった原因はKernel更新により対策済
  • ファイルシステム溢れの原因となったsnapshotを削除

水耕栽培装置届いた

会社から帰宅したら、何やら巨大な段ボールが届いていました。

欲しい物リストにあるとある品がなくなっているのを見て確信。水耕栽培装置でした。これです。

どどんとふ公式鯖管理人の欲しい物リストに入れていたので、どなたかが贈ってくださったのでしょう。マーケットプレイス業者からの直送なので、どなたからかはわかりませんでしたが、こんなに高額なものをありがとうございます。早速開封します。

ほぼパイプなわけですが、予想通り工作精度はめっちゃ悪いしなんか汚いです。まあ、屋外で使う物なので気にしません。

栽培用のカップですが、かなりの量がバッキバキだったのは予想外ですが、使えなくはない。

ポンプとタイマーは中華仕様なので、これはゴミ箱直行。リーベックスのプログラムタイマーと観賞魚用のポンプは既に持っていますので大丈夫です。

とりあえず、組み立ててみましたが組み立てがとにかく大変です。何せ工作精度が悪くてパイプの接合が堅いし歪んでいます。かといって、ハンマーとかで力尽くでやると割れそうなので、とりあえず気合いで押し込みました。風呂上がりなのに汗だく&変な力の入れ方をしたせいか節々が痛い。

で、あとは苗をスポンジに入れて水を流すのですが、まず苗を発芽させなければなりません。とりあえず手持ちのほうれん草とバジルの種を濡らしたキッチンペーパーの上で発芽させることにします。ちなみに、本体以外の付属品は、「バッキバキに割れたカップ」「200V仕様のポンプ」「中国規格の電圧不明なタイマー」「ピンセット」「説明書(中国語)」でした。うーん、ホームハイポニカとかに比べたら確かに安いし、国産品にはない立体的に72個の苗を一気に育てられるのと、塩ビ管を自分で加工する手間を考えると妥当な気がするが、2万あればかなりの量の野菜がスーパーで買えてしまうので、需要は極めて少ないと思う。

bcdice-api

※bcdice-apiに改良部分がマージされましたが、2月3日に投稿した内容とURLが変わっています

どどんとふで採用されているダイスボット(bcdice)のWebAPI版を試験公開。
WebAPI版はNKMR氏が開発・公開したものをベースにちょっと改良しています。落ち着いたらMerge依頼かけます。

改良ポイントは、Onset!互換I/Fを用意したこと。

それ以外の使い方は、上記NKMR氏のgithubリポジトリにあるReadmeと同じです。

これで、rubyが使えないレンタルサーバーでもPHPさえ動けばDiceBotも含めてOnset!が使えるようになるはずです。

使い方は、Onset!を設置した後、src/config.phpにあるBcdiceURLに公式鯖が公開したOnset!互換APIのURLを指定するだけ。
すでにOnset!(どどんとふ公式鯖版)もこれで動いています。
※現時点では試験公開なので、URLはそのうち変わるかもしれません。あくまでテスト目的でお願いします。