2024年のNostrリレー運営を振り返る
Nostr Advent Calendar 2024 の 11 日目の記事です。
昨日の 12/10 は ocknamo さんの nostterに画像最適化機能つけたよ(フロント編) でした。
きりのリレーとは
CloudFront を使って Geo Restriction している日本向けのリレー
やぶみリレーに並んで Nostr の利用者の中ではよく使われるほうのリレーだと思ってます。m(_ _)m
2024/1
きりのリレーの中で動いている Nostream は PostgreSQL + Typescript で動いている Nostr リレーで、流量が多いうちのリレーの場合はほぼ毎秒 INSERT が走っているような感じです。
なので、ずっとディスクへの書き込みが続くために ZFS レベルのフラグメンテーションが発生して、IO性能がめちゃくちゃに落ちることが発生。Proxmox VE の LVM 領域に仮想ディスクを移動して対処しました。
2024/1のリレーに関するつぶやきまとめ
2024/2
非常に負荷の高いクエリリクエストやスパム(わいせつなもの)が相次いで投稿されることが多くなってきたので、Nostream の前に nostr-filter という拙作のフィルタリング&ロギングの仕組みを挟んで、何かあったときに調査できるように強化しました。
ただこのロギングの仕組みがまた大量に SSD 領域に連続書き込みをし続けることになるので後々問題になります。
2024/2のリレーに関するつぶやきまとめ
2024/3
1月~2月に比べると平和な月でした。
リレーとしては安定してサービス提供してました。
2024/3のリレーに関するつぶやきまとめ
2024/4
この頃にリレーを動かしている Proxmox VE がハングアップすることがありました。
いま振り返ると、ロギングを強化したせいで内蔵 SSD が擦り切れ始めていたのかもしれません。
2024/4のリレーに関するつぶやきまとめ
2024/5
平和。
2024/5のリレーに関するつぶやきまとめ
2024/6
利用量が落ち着いてきた(大量のイベントを取得するようなクエリも少なくなった)ので、リレーの仮想マシンに割り当てているメモリ量を 64 GB → 48 GB 程度まで下げました。
2024/6のリレーに関するつぶやきまとめ
2024/7
平和。
2024/7のリレーに関するつぶやきまとめ
2024/8
平和。
2024/8のリレーに関するつぶやきまとめ
2024/9
Reply Guy なる何でもかんでも無差別にオウム返しのリプしてくる Bot が大量発生する。
リレー運営者としては自分のところで対処しても他のリレーが対処してくれない(放置している)とそれが Nostr ユーザーには見えちゃうのが非常によろしくない状況でしたね。。。
↓ Reply Guyがまだリレーを絞って投稿してたからまだマシだったの図。
2024/9のリレーに関するつぶやきまとめ
2024/10
10/17-10/18頃に X (Twitter) の規約変更がらみで一瞬だけ Nostr への流入があったらしい。
この時に流入してきた人たちはまたあっさりと X に戻っていったみたいですが……
↓
2023/8~2024/12のネットワークトラフィックグラフ
ちなみに日本の中では Nostr リレーの利用がめっちゃ増えたとかは何もなかったです。。。
2024/10のリレーに関するつぶやきまとめ
2024/11
この頃ぐらいから内蔵 SSD が不調になる → ディスク I/O が遅くなって PostgreSQL の処理が滞留する → メモリを食い潰す、という障害が相次ぐようになりました。ただこの時はロギングによる大量書き込みが原因とまでは分かっておらず……。
あとは内蔵 SSD の交換作業のタイミングで間違って TrueNAS の電源を間違って落としちゃった事件がありました。Nostr リレーには影響しなかったけど、Mastodon や Wordpress が軒並み死亡していた。
2024/11のリレーに関するつぶやきまとめ
2024/12
11月からちょこちょこ調べていった結果、どうも内蔵 SSD の S.M.A.R.T. 値で書き込み量が半端ないためでは無いかと判明。
内蔵 SSD の寿命が尽きてしまっているのが Proxmox VE の管理画面でも出てきました。
Proxmox VE の Disks 画面で Wearout が 100% を超えているの図
なので、ディスクをホットスワップ出来る外部ストレージを購入してリレーやそれ以外のサーバーも含めて待避することを考え始めます。
合わせて大量にログを吐き出し続けた nostr-filter の設定を変更して SSD への負荷を下げる対処も実施しました。
12/1 QNAP の NAS を買う
買ったもの:
- QNAP TS-923PX
- Intel SSD DC S3700 : 読み書きキャッシュ用の高耐久 SSD
- Western Digital Ultrastar DC HC530 14TB : Amazon.co.jp のセールで安かったリファービッシュ品
QNAP でストレージプールを組んで NFS 共有の上に Proxmox VE から仮想ディスクを配置するアーキテクチャに変更しようと作業をします。
12/9 待避作業を実施
12/10 NFS の限界を知る
TrueNAS (FreeBSD) の NFS だと複数の仮想ディスクを同時にホストしても何も問題なく動いていたのですが、QNAP (Linux) ではそこまで多数の同時リクエストがバンバン来る構成は得意では無かった模様で仮想化基盤全体を巻き込んでハングアップするような動きに振り回されます……。
12/10 Shared LVM on iSCSI で落ち着く
そのため QNAP には iSCSI ターゲットに徹してもらい、Proxmox VE 側で iSCSI ボリューム内に Shared LVM を組んでその中に RAW ディスクを置く構成に見直して移行したところ、安定して動作するようになりました。
2024/12のリレーに関するつぶやきまとめ
まとめ
それなりに大規模な Nostr リレーを動かしていると、サーバーやディスクに対する性能負荷が高い状態が続くので、単なる自宅サーバーよりは経験値がたまるので楽しいです。
ただ、設置環境の維持やメンテナンスの手間などを来年も継続できるようにしたいなー……と思いつつ無理しない範囲でやっていければと思ってます。
明日は Lokuyow さんの nostr-zap-viewのこと です!!
Discussion