運営ブログMastodonインスタンス「handon.club」の運営ブログです。コラムなど,Mastodonに関する一般的な記事も投稿予定です。2019-12-312019年はんドンクラブ運営の振り返りと年末のご挨拶コラムこんにちは。はんドンクラブ管理人のはんです。年末の挨拶に代えて,今年のはんドンクラブの振り返り記事を書かせていただきます。今年も1年間,皆様のおかげで無事に運営できました。本当にありがとうございました。繰り返しとなりますが,SNSサービスの管理人としては,フォロー/フォロワー関係やオフ会など,はんドンクラブやFediverseで形成されたコミュニティについては関知しないことにしています。私個人の観測範囲(死語)における感じたことだけまとめておきたいと思います。2019年も何人かのユーザが登録してくれました。定着した方もいるようです。新たなユーザに登録して頂けるのは,管理人としてとても嬉しいことです。はんドンクラブは招待制として運用していますが,これは元々スパム防止の目的で導入した制度であり,新規登録ユーザを制限するためではありません。そのため,招待したい人が居れば遠慮無く招待していただけると嬉しいです。v3.0より,「承認制」という設定ができるようになりました。今後の運用について検討中ですが,もしかしたら承認制+招待制に変更するかもしれません。その際はきちんと事前にご相談しますね。んドンクラブ全体に話を戻します。トゥートのvisilibityを非収載や非公開に設定しているユーザが多くLTLには現れづらいものの,引き続きいろいろな方に利用していただいているようです。管理人としては嬉しい限りです。私のフォロー範囲に限っても,様々な使い方で様々な方と交流しているユーザさんが観測できています。分散SNSは,サーバ内部の交流と,それ以外のサーバとの交流,どちらも十分に楽しめるようになっています。はんドンクラブは,当然,話題や利用方法を一切制限していませんので,皆さま思い思いのMastodonを楽しんで頂いていれば幸いです。Fantiaで行っているカンパについても,ご協力いただきありがとうございます。本当に助かっています。このカンパがなければ絶対に運営できていません。引き続きのご支援をいただきますようお願いします。サーバ運営費用の公表も行いたいとは思っていますが,適切な方法を模索しています。お待ち頂ければ幸いです。昨年から引き続き,データで振り返ってみたいと思います。85.52GBトゥート数推移はんドンクラブにおける総トゥート数の推移のグラフです。参考までに,はんドンクラブで受信した,他のサーバのトゥート数も含んだ合計値も示しています(各データのオーダが異なるため,表示軸を分離している点は注意ください)。APIの利用規程変更以降,1日あたり安定して2,000トゥート〜3,000トゥートほどご利用いただいているようです。ユーザ毎のトゥート数分布2019年12月31日現在の,アカウント毎のトゥート数の分布です。相変わらずロングテールですね。はんドンクラブが認知している他サーバのユーザ数2019年は,mstdn.jp・pawoo.netの運営委譲,friends.nicoの閉鎖とbest-friends.chatの開始など,国内大規模サーバ激動の年でした。その影響かどうかはわかりませんが,はんドンクラブで認知しているユーザ数は,海外サーバであるmastodon.cloudが最も多い・・・という結果になりました。昨年はpawoo.netだったのですが。認知しているユーザ数の一覧は以下のとおりです。150人以上のサーバに絞って記載してみました。あくまではんドンクラブが認知しているユーザに限ったものであり,そのサーバに属する全ユーザを補足できている訳ではない点はご注意ください。link今年も多々ご迷惑をおかけしました。いずれの故障についても再発防止または発生時の影響極小化に取り組みたいと思います。故障発生時の迅速な情報提供に努めるよう努力したつもりですが,なにかご意見があれば是非頂ければと思います。9/21〜9/22の故障では,多くのご迷惑をおかけしたかと思います。技術的には,アップデートによりソフトウェアバグが混入してしまい,DB検索時のindexが正しく選択されないという問題でした。一定の負荷をかけないと顕在化しない問題のため,検証環境での試験段階で気づけませんでした。本件については,後でお話ししますが,副管理人として運営に協力いただいているのんさんのおかげで迅速に解決出来たと思っています。この問題は,結果として本家Githubでもissueとして扱われました。7/11の故障もよく覚えています。tootleの通知を受け取るサーバがスタックしてしまい,結果としてはんドンクラブにおいても重要なTL配送処理が全て遅延してしまった,という故障です。本家Githubのソースコードにも反映しました。実際に運営していないと分からない課題をgithubへフィードバックできたよい例かと考えています。その他運営振り返り主なバージョンアップ/サーバ変更作業2019年は,待望のv3.0.0がリリースされたのが最も記憶に残っているところでしょうか。その他,サーバ管理者観点では,様々なイベントがありました。主な作業履歴とバージョンアップ履歴をまとめておきます(この他にもメンテナンスやマイナーバージョンアップやを実施していますが,主要でないものは本表からは除外しました)。副管理人9月頃より,副管理人としてのんさんに運営にご協力いただきました。主には,私が死んだときのバックアップと,技術的な困りごとの相談相手になってもらっています。この場を借りて御礼申し上げます。実はまだサーバの権限関係をきちんと委譲できていないので,これは私の正月の宿題としたいと思います。2人で議論した結果,副管理人はDBへのアクセスを禁止する方向で進めたいと思っています(システム的に難しい場合,ログ監視により不正を取り締まれる状態にする方向で進めると思います)。今後の展望2020年以降も引き続き頑張って運営していきます。安心して利用頂ければと思います。サーバについては一部増強も予定していますが,負荷を監視しつつ増強タイミングを判断したいと思います。その他,いくつか時限爆弾を持っていますので,実施しなくてはならないメンテナンスもあります。継続して安定運用に努めたいと思います。最後になりましたが,はんドンクラブの全てのユーザと,Mastodon開発コミュニティで活動されている皆様に感謝します。おかげで2019年も楽しい1年になりました。12/13(金)に公開される予定の記事でした。インフルエンザの発症で長いこと寝込んでしまい,大遅刻しました。サーバ運営の悩みこんにちは。はんドンクラブはあまり名の知れたサーバではありませんが,実はそこそこアクティブなMastodonサーバです。今日は,このはんドンクラブの運営において悩んでいる,運営者からユーザに対して運営情報を周知する方法(周知チャネル)についてお話できればと思います。SNSに限った話ではない気もしますが・・・)。運営情報の周知チャネルサーバの管理者であれば,サーバに関する運営情報,例えば以下のような情報をユーザへ配信したい場合があるかと思います。運営方針に関するヒアリング,アンケート利用規約の変更しかし,Mastodonが元々持っている機能の範囲では,こういった情報を伝達するために用意された手段(チャネル)はありません。そのため現実的には,サーバ管理者が自分のアカウントで発言するなどの代替手段を取っている場合が多いのではないでしょうか。この代替手段について,なかなかベストな案は無いよね・・・というのが悩みであり,この記事の議論点です。管理者がトゥートするだけです。シンプルなチャネルであり,管理者の作業負担も少ないです。サーバにアカウントを持つ人は必ずしも管理者をフォローしているわけではありません。一定規模以上のサーバになると,必ずしもよい手段ではないように思います。候補1の派生案として,専用のハッシュタグを作り,ユーザにはそのハッシュタグの検索結果を見てもらう方法も考えられます。運営情報配信の専用アカウントを作り,かつ強制フォローさせるというやり方もあります。専用Webページ/ブログでの告知はんドンクラブにおけるこのブログのことです。過去の履歴を追いやすい点が最大のメリットかと思います。そもそもこの専用ブログ等へユーザを誘導する必要がありますので,結局サーバ管理者のアカウントで告知するケースが多いと思われます。緊急周知には適さないと思われます。独自機能によるWebページ(投稿欄下)での表示いくつかのMastodonサーバで導入されている独自機能で,投稿欄下に管理者からのお知らせ表示することができる機能があります。これを活用する方法です。Webを使っているユーザにはかなり確実にリーチできる一方,サードパーティクライアントしか使わないユーザには一切気づかれないという欠点があります。メールシンプルに,メールを送りつける方法です。ユーザはメールアドレスを登録していることから,有効な手段になるかと思います。いえ,実際には読まないユーザも多数いるでしょう。管理者にとってはとても手間です*1。候補のまとめということでまとめるとこんな感じでしょうか。重要なのはユーザの網羅度かと思います。,「メールはどうせ読まないユーザもいるので〇ではないのでは」とヤジが飛んできそうですが,一応全員に届くはずなので,比較表上は〇にしました。まあ最初から分かってたことですが。現在のはんドンクラブでは,候補1の「管理者の発言(ハッシュタグつき)」・候補2の「専用ブログ」・候補3の「投稿欄下表示」の3つのチャネルを使って周知することが多いです。実際にユーザにアンケートを取ってみたところ,どのチャネルも一定数使われているようでした。そもそもこのアンケートが「管理者の発言」により開始されたものであり,そのバイアスがかかっている可能性は大いにあります。3つのチャネルで告知するのって結構大変なんですよね。そのため,アップデートの情報や故障情報は確実に周知したいので複数チャネルを使っていますが,他の情報の場合はサボっている場合が多いです。管理者の方で「もっと良い方法あるよ!」というご意見があれば,是非教えて頂けると嬉しいなーと思っています。本日以下の日程でメンテナンスを実施します。期間中は全てのサービスが利用出来ません。ご迷惑をおかけして申し訳ございませんがご協力お願いします。メンテナンスは予定通り終了しました。8分56秒間サービスが停止しました。運営情報はんドンクラブにおいて,以下の障害が発生していましたが,現在は復旧しています。ご迷惑をおかけしたことをお詫びいたします。mastodonでは,動画が投稿された際,ffmpegによる動画ファイルの再エンコードが行われます。(おそらくffmpeg側の不具合で)ffmpegがCPUリソースをほぼ100%使い果たしてしまい,結果的に他の処理ができなくなってしまいました。puma)から呼び出されるため,今回CPUリソースをほぼ100%使い果たしてしまったのはwebサーバのみです。根拠ですが,実はれっきとした証拠はつかめていません。客観的に見てその可能性が高いと判断した,ということになります。その詳細を説明します。はんドンクラブにある2台のwebサーバはDNSラウンドロビンにより負荷分散されています。今回,2台のwebサーバのCPU利用率の高騰が開始した直前に,いずれのサーバにも全く同じ動画が投稿されていました。party製クライアントで動画アップロードを試みたものの失敗したためリトライ処理が行われ,その際にたまたまDNSのTTLが切れた可能性があります。この状況から,原因を推測しました。再発防止策は現状分かっておらず,再発の可能性は十分にあります。根本対処にはなりませんが,今後大容量なファイルができるかぎりアップロードされないよう,リバースプロキシ(nginx)側でアップロードファイルサイズの上限を制限しました。この対処により,ffmpegに動画を渡す前にあまりに容量の大きな動画はrejectできますので,今回と同様の事象の発生確率は下げられるものと推察します。50m;なお,念のため述べておきますが,コンフィグ中の「50MB」というのは,「アップロード時に受け付けるサイズの上限値」であり,「実際にはんドンクラブサーバに格納される場合のサイズの上限値」ではありません。ffmpeg等により再エンコード/リサイズされるため,実際には数MB程度にまで圧縮されています。アラート発報閾値の見直しはんドンクラブでは,prometheus+grafanaを使った常時監視を行っています。アラートが発生すると管理者全員にLINEで通知される仕組みとなっています。今回は,実際にサービス影響が出始めてからGrafanaのアラート発報まで10分程度要してしまいました。一部の閾値を見直し,より早く気づけるように修正を行いました。意味はないかもしれませんが,今回の対応時系列を公開します。障害発生報はんドンクラブにおいて,以下の障害が発生していましたが,現在は復旧しています。ご迷惑をおかけしたことをお詫びいたします。暫定的にはWebサーバの再起動で回復済。障害の発生メカニズムはんドンクラブでは,メディア(トゥートに添付された画像や動画,またはアイコン画像など)は,Conohaのオブジェクトストレージに保存されています。このオブジェクトストレージ内のメディアへのアクセス用URLをWebページのドメイン(handon.club)と同一ドメイン(media.handon.club)にするため,はんドンクラブサーバ内のnginxでリバースプロキシを使っています。以下のようになっていました(一部抜粋)。ドメインを書いた場合,nginxの起動時にのみ名前解決が行われます。そのため,nginx起動後にDNSレコードの変更があった場合でも,OS側のTTL設定に依らず,レコード変更に追従することができません。手動でnginxを再起動するまで,永遠に古いDNSレコードが使われつづけてしまいます。ktrysmt.github.io今回の障害の原因については,前述のnginxの仕様により,オブジェクトストレージのグローバルIPアドレス変更に追従できなかったためです。IPアドレスが変更されましたが,はんドンクラブのnginxは古いIPアドレスへアクセスし続けてしまうため,結果としてユーザが画像を表示できない状態になっていました。古い画像には通常通りアクセスできていました。よりキャッシュされているためです。とおり,一度アクセスした画像は,最大で31,536,000秒間CDNサービスのCloudflareにキャッシュされます(あれ,そういえば,Cloudflareってこのヘッダをちゃんと尊重してくれるんでしたっけ??)。そのため,キャッシュされているアイコン画像や古いトゥートに添付された画像はアクセスが出来るが,1度もアクセスがなかった画像にはアクセスができなかった・・・・ということになります。挙動について認識こそしていたものの,正しくない設定をしてしまいました。サーバについてはあまり深く考えずに各種設定を行っており,チェック漏れが発生したためです。要するに管理人の凡ミスです。今回の障害はユーザ申告により発覚しました。そのため,管理人が問題を把握したのは問題発生から3時間以上経過した18:30頃でした。こちらの原因について説明します。ついては,1分に1回HTTPSリクエストを送ることで死活監視を行っています。連続してアクセスエラーが発生すると,管理人と副管理人のLINEに通知される仕組みとなっています。そのため,サーバ障害に対しては速やかにその発生を認知出来るはずでした。この死活監視は,常に同じエンドポイントに対して実施していました。そのため,当然CDNにキャッシュされているページに対して死活監視していたことになります。そのため,今回のように,新たにアップロードされている画像に限定して再現する障害では,アラートが上がらない状態となっていました。ついては修正を行います。適用済です死活監視方法の変更による早期障害検知は現実的ではないため,リスクを許容することとします。新しくアップロードされた画像に対するポーリング監視は,適切なエンドポイントが分からないため現実的ではありませんただし,長期的には,ユーザの申告をより簡単かつ速やかに受け付けられる仕組みを検討し,リスクを軽減します(11/20追記)以下のように設定変更しました。メンテナンスリリースが行われました。検証環境にて試験を実施し,問題無いことが確認出来たため,アップデートを行いました。アップデート内容はバグ修正です。更なる詳細はGithubのリリースページを参照ください。GitHub前回のアップデートv3.0.0で多くの新機能が導入されています。詳細はイカをご参照ください。リリース候補版(RC版)のリリースが行われました。正式版ではありませんが,検証環境(AWS)にて試験を実施し,問題無いことが確認出来たため,アップデートを行いました。3.0リリース前に本家ソースコードのmaster追従を行っていたため,はんドンクラブでは大半の機能が2019/9/20頃から利用出来ていました。アップデート内容は以下の通りです。内容が非常に多いため,管理人の独断で,はんドンクラブのユーザに関係しそうだと思うもののみ記載しています。更新UIが刷新され,見やすくなりました。ディレクトリ機能が連合を組むようになりました。:他のインスタンスも3.0.0以降にアップデートする必要があります)。アクセスしてください。オーディオプレーヤの追加オーディオファイルだけをアップロードし,そのファイルをWeb上で再生する機能が追加されました。ハッシュタグ補完機能の追加Webの投稿欄でハッシュタグを入力しようとしたとき,過去利用したハッシュタグがサジェストできるようになりました。全文検索の結果は,これまで予め管理者が設定した件数(デフォルトで20件)までしか表示されず,それ以降の結果は表示不可能でした。今回のアップデートでは,結果画面に「さらに表示」ボタンが追加されました。これによって,管理者が設定した上限数以上の検索結果を確認出来るようになりました。全文検索におけるオペレータ機能の追加Google検索のように,「+」(AND)や「-」(NOT)と言ったOperatorを使うことで,より詳細に検索条件が出来るようになりました。スローモードの追加Web上でUserstreamによる自働更新を行わないモード(スローモード)が追加されました。利用するためには,ユーザ設定画面から「手動更新モード」を有効にして下さい。投票後に自分がどの選択肢に投票したか表示する機能の追加アンケートに投票した後,自分がどの選択肢に投票を行ったのか,チェックマークにより明示されるようになりました。追加サーバ間でのアカウント移行が,Webで半自動的にできるようになりました。非常に重い機能となりますので,はんドンクラブにおいては,利用は推奨しません。復活サーバ内でよく使われているハッシュタグを表示する「注目のハッシュタグ機能」が復活しました。以前一度実装されていましたが,スパムの温床になるとのことで一度削除されていました。今後,管理人の承諾が行われたハッシュタグのみ,注目のハッシュタグに表示されるようになります。注目のハッシュタグは,「トレンド」として,Webの一番右のカラムに表示されます。管理人がブロックまたはサイレントしているサーバを表示する機能が追加されました。ブロックしている理由も明記しております。追加カスタム絵文字がカテゴリ分けできるようになりました。Webでは,サーバ管理者が設定したカテゴリに従って表示されます。3rdパーティ製クライアントをご利用の方は,クライアント側が対応するまでこの機能は利用出来ません。詳細はクライアント作者までお問い合わせ下さい。特定のサーバとのみ連合する機能(ホワイトリスト機能)の追加はんドンクラブでは有効化する予定はありません。変更点DMカラムのUI変更WebにおけるDMカラムのUIが大幅に変更されました。誰からDMを受け取ったかどうかが分かりやすくなりました。使う方法に変更する必要があります。連合向けIFの一部削除1.0からサポートされていたOStatus関連の機能が全て削除されました。対応が不十分であったことから,WebPの画像を投稿する機能が削除されました。上記は一部だけを書き出しています。今回のアップデートには,多くのバグ修正や微細な機能修正が含まれています。更なる詳細はGithubのリリースページを参照ください。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。