💭

2024年のNostrリレー運営を振り返る

2024/12/11に公開

Nostr Advent Calendar 2024 の 11 日目の記事です。
昨日の 12/10 は ocknamo さんの nostterに画像最適化機能つけたよ(フロント編) でした。

きりのリレーとは

CloudFront を使って Geo Restriction している日本向けのリレー
https://relay-jp.nostr.wirednet.jp/
と、全世界に開放しているグローバルリレー
https://relay.nostr.wirednet.jp/
を今年も一年間運営してきました。
やぶみリレーに並んで Nostr の利用者の中ではよく使われるほうのリレーだと思ってます。m(_ _)m

2024/1

きりのリレーの中で動いている Nostream は PostgreSQL + Typescript で動いている Nostr リレーで、流量が多いうちのリレーの場合はほぼ毎秒 INSERT が走っているような感じです。
なので、ずっとディスクへの書き込みが続くために ZFS レベルのフラグメンテーションが発生して、IO性能がめちゃくちゃに落ちることが発生。Proxmox VE の LVM 領域に仮想ディスクを移動して対処しました。
https://nostter.app/note1qrhjm0lk70hm9q44q3djg5mmew2wrgs87jl9py8gx650c8eqasqqv3smx8

2024/1のリレーに関するつぶやきまとめ
https://relay-jp.nostr.wirednet.jp/index.html?npub1vd9ar8jusldjze24eq2tlz8xdt8pwkq99ydxh6gtzkkrkgj8m2dsndwen9&q=リレー&date=202401

2024/2

非常に負荷の高いクエリリクエストやスパム(わいせつなもの)が相次いで投稿されることが多くなってきたので、Nostream の前に nostr-filter という拙作のフィルタリング&ロギングの仕組みを挟んで、何かあったときに調査できるように強化しました。
https://nostter.app/note1hqj0nvra3df7harf0pa5p6j3rt8h425fdxvdrgxmhhn5065jcjtsvqf0lp

ただこのロギングの仕組みがまた大量に SSD 領域に連続書き込みをし続けることになるので後々問題になります。

2024/2のリレーに関するつぶやきまとめ
https://relay-jp.nostr.wirednet.jp/index.html?npub1vd9ar8jusldjze24eq2tlz8xdt8pwkq99ydxh6gtzkkrkgj8m2dsndwen9&q=リレー&date=202402

2024/3

1月~2月に比べると平和な月でした。
リレーとしては安定してサービス提供してました。

2024/3のリレーに関するつぶやきまとめ
https://relay-jp.nostr.wirednet.jp/index.html?npub1vd9ar8jusldjze24eq2tlz8xdt8pwkq99ydxh6gtzkkrkgj8m2dsndwen9&q=リレー&date=202403

2024/4

この頃にリレーを動かしている Proxmox VE がハングアップすることがありました。
いま振り返ると、ロギングを強化したせいで内蔵 SSD が擦り切れ始めていたのかもしれません。
https://nostter.app/note14q2szcsl3rc2n2rvw2vlaucu23wptad3yptkug2y5tul6htqxv4stel8wu

2024/4のリレーに関するつぶやきまとめ
https://relay-jp.nostr.wirednet.jp/index.html?npub1vd9ar8jusldjze24eq2tlz8xdt8pwkq99ydxh6gtzkkrkgj8m2dsndwen9&q=リレー&date=202404

2024/5

平和。

2024/5のリレーに関するつぶやきまとめ
https://relay-jp.nostr.wirednet.jp/index.html?npub1vd9ar8jusldjze24eq2tlz8xdt8pwkq99ydxh6gtzkkrkgj8m2dsndwen9&q=リレー&date=202405

2024/6

利用量が落ち着いてきた(大量のイベントを取得するようなクエリも少なくなった)ので、リレーの仮想マシンに割り当てているメモリ量を 64 GB → 48 GB 程度まで下げました。
https://nostter.app/note18lc8nvp2lfsunx2twsu6jpw5exw3qr2c72520cc8fac3v74y6xds56wn6h

2024/6のリレーに関するつぶやきまとめ
https://relay-jp.nostr.wirednet.jp/index.html?npub1vd9ar8jusldjze24eq2tlz8xdt8pwkq99ydxh6gtzkkrkgj8m2dsndwen9&q=リレー&date=202406

2024/7

平和。

2024/7のリレーに関するつぶやきまとめ
https://relay-jp.nostr.wirednet.jp/index.html?npub1vd9ar8jusldjze24eq2tlz8xdt8pwkq99ydxh6gtzkkrkgj8m2dsndwen9&q=リレー&date=202407

2024/8

平和。

2024/8のリレーに関するつぶやきまとめ
https://relay-jp.nostr.wirednet.jp/index.html?npub1vd9ar8jusldjze24eq2tlz8xdt8pwkq99ydxh6gtzkkrkgj8m2dsndwen9&q=リレー&date=202408

2024/9

Reply Guy なる何でもかんでも無差別にオウム返しのリプしてくる Bot が大量発生する。
https://nostter.app/note1syckgkcaecek3nuukgvzthckhyx06k05hgtpr27r0p4mhxws5zaq6m9xk8

リレー運営者としては自分のところで対処しても他のリレーが対処してくれない(放置している)とそれが Nostr ユーザーには見えちゃうのが非常によろしくない状況でしたね。。。

↓ Reply Guyがまだリレーを絞って投稿してたからまだマシだったの図。
https://koteitan.github.io/nostr-post-checker/?hideform&eid=98b8c73d993fe6d4474fc27ad04063e2abcd320c25f703b9a76388b174e867aa&kind=1&relay=wss://bostr.nokotaro.com/;wss://ipv6.nostr.wirednet.jp/;wss://nfrelay.app/;wss://nos.lol/;wss://nostr-pub.wellorder.net/;wss://nostr-relay.nokotaro.com/;wss://nostr.fediverse.jp/;wss://nostr.holybea.com/;wss://nostream.ocha.one/;wss://nrelay-jp.c-stellar.net/;wss://nrelay.c-stellar.net/;wss://offchain.pub/;wss://purplepag.es/;wss://r.kojira.io/;wss://relay-jp.nostr.wirednet.jp/;wss://relay-jp.shino3.net/;wss://relay.damus.io/;wss://relay.nostr.band/;wss://relay.nostr.wirednet.jp/;wss://relay.snort.social/;wss://relay.yozora.world/;wss://yabu.me/

2024/9のリレーに関するつぶやきまとめ
https://relay-jp.nostr.wirednet.jp/index.html?npub1vd9ar8jusldjze24eq2tlz8xdt8pwkq99ydxh6gtzkkrkgj8m2dsndwen9&q=リレー&date=202409

2024/10

10/17-10/18頃に X (Twitter) の規約変更がらみで一瞬だけ Nostr への流入があったらしい。
https://nostter.app/note1exlxrn0xeyqqxfr4uj3tv2n9h7t0lmhefly5eqvg0xecujv5l0vszr0dg7

この時に流入してきた人たちはまたあっさりと X に戻っていったみたいですが……
 ↓

2023/8~2024/12のネットワークトラフィックグラフ

ちなみに日本の中では Nostr リレーの利用がめっちゃ増えたとかは何もなかったです。。。
https://nostter.app/note1rfud60e6u7dkkanndnpqkdt2lcgpjatsxwy84mcqn7600xluryrsp2n69m

2024/10のリレーに関するつぶやきまとめ
https://relay-jp.nostr.wirednet.jp/index.html?npub1vd9ar8jusldjze24eq2tlz8xdt8pwkq99ydxh6gtzkkrkgj8m2dsndwen9&q=リレー&date=202410

2024/11

この頃ぐらいから内蔵 SSD が不調になる → ディスク I/O が遅くなって PostgreSQL の処理が滞留する → メモリを食い潰す、という障害が相次ぐようになりました。ただこの時はロギングによる大量書き込みが原因とまでは分かっておらず……。
https://nostter.app/note1c0ecgnzf2rjpsnzgnagwjyqnjxpsrgg9jszyslv5dg2junjjh5psx8dp7u

あとは内蔵 SSD の交換作業のタイミングで間違って TrueNAS の電源を間違って落としちゃった事件がありました。Nostr リレーには影響しなかったけど、Mastodon や Wordpress が軒並み死亡していた。
https://nostter.app/note1tmyy75hhc4dpqpdpwj9gp84pzdc2vuv5nywuzgjf72kkw2ekghgq24whuw

2024/11のリレーに関するつぶやきまとめ
https://relay-jp.nostr.wirednet.jp/index.html?npub1vd9ar8jusldjze24eq2tlz8xdt8pwkq99ydxh6gtzkkrkgj8m2dsndwen9&q=リレー&date=202411

2024/12

11月からちょこちょこ調べていった結果、どうも内蔵 SSD の S.M.A.R.T. 値で書き込み量が半端ないためでは無いかと判明。
https://nostter.app/note1jzespv2tlqvsz9l58t5ern9khhpj7de6kxwg47c20p0dqumyy3sqvwu3x0

内蔵 SSD の寿命が尽きてしまっているのが Proxmox VE の管理画面でも出てきました。

Proxmox VE の Disks 画面で Wearout が 100% を超えているの図

なので、ディスクをホットスワップ出来る外部ストレージを購入してリレーやそれ以外のサーバーも含めて待避することを考え始めます。
https://nostter.app/note1azll4ks0p62tmps7c508zyf8e2u69u45c30ae5q96urd26ttnkpqwj83z8

合わせて大量にログを吐き出し続けた nostr-filter の設定を変更して SSD への負荷を下げる対処も実施しました。

12/1 QNAP の NAS を買う

買ったもの:

QNAP でストレージプールを組んで NFS 共有の上に Proxmox VE から仮想ディスクを配置するアーキテクチャに変更しようと作業をします。

12/9 待避作業を実施

https://nostter.app/note1u586ewnd633tpd6ym6x24cccc7r42n05t9ygj7y9shp378krzmdsurrn30

12/10 NFS の限界を知る

https://nostter.app/note1zf8lpnr0nnrlz9yk6ur5awtslcdhywx255rxa64jcdq4m0elf6mq3ppw0k
https://nostter.app/note1700taad2jwvfs5yygqcpt9y47vktacy8ug29u4vflnqymj3f62gsk3se0e

TrueNAS (FreeBSD) の NFS だと複数の仮想ディスクを同時にホストしても何も問題なく動いていたのですが、QNAP (Linux) ではそこまで多数の同時リクエストがバンバン来る構成は得意では無かった模様で仮想化基盤全体を巻き込んでハングアップするような動きに振り回されます……。

12/10 Shared LVM on iSCSI で落ち着く

そのため QNAP には iSCSI ターゲットに徹してもらい、Proxmox VE 側で iSCSI ボリューム内に Shared LVM を組んでその中に RAW ディスクを置く構成に見直して移行したところ、安定して動作するようになりました。
https://nostter.app/note1s9hkk663a6eyphmknamjcp93q70k9ctdrzk0facuc9frhywmuz9sqd6rcj

2024/12のリレーに関するつぶやきまとめ
https://relay-jp.nostr.wirednet.jp/index.html?npub1vd9ar8jusldjze24eq2tlz8xdt8pwkq99ydxh6gtzkkrkgj8m2dsndwen9&q=リレー&date=202412

まとめ

それなりに大規模な Nostr リレーを動かしていると、サーバーやディスクに対する性能負荷が高い状態が続くので、単なる自宅サーバーよりは経験値がたまるので楽しいです。
ただ、設置環境の維持やメンテナンスの手間などを来年も継続できるようにしたいなー……と思いつつ無理しない範囲でやっていければと思ってます。

明日は Lokuyow さんの nostr-zap-viewのこと です!!

Discussion