最近のサーバー構成の話

Posted on Sep 25, 2023

概要

私は主に分散SNSと個人用のウェブアプリをいくつかホストしています。自宅サーバーとVPSとクラウドに跨っている構成となっていて、まあ当然と言えば当然ですができるだけ少ないコストで安全に光速にしようと日々考えている訳です (←誇大広告)

今までの構成

2021年10月から2023年8月初旬までは大体以下のような構造でした。

  • 基本的に自宅サーバーにDBやワーカーを配置
  • VPSと自宅サーバーをWireguardで繋いでフォワード・リバースプロキシをする
  • ユーザーはCloudflare経由でアクセス
  • EEW Botなど高アップタイムが求められるもの、メールサーバーなど自宅ではホストできないものはVPSで完結させる
  • オブジェクトストレージとDBのバックアップは容量が多く災害に強いアムステルダムのVPSに置く

まだこの頃はそこまで利用者も少なく大したソフトもホストしてなかったので良かったのですが、 最近アルファベット1文字のなんともダサい中二病のような名前に改名した某大手SNSがやらかした辺りからMisskeyサーバーの利用者が増えてきます。

これだけならまだしもMisskey側でジョブキュー周りの改悪変更が行われた時期と重なったためサーバーの増築が必要になってきました。 一部のサービスをVPSに押し込んだりしてリソースを確保した訳ですがVPNとNATとリバースプロキシの拠点を増やしまくった結果、次第にどんどん複雑な構成になっていったせいで管理がどんどん煩雑になっていきました。

今年9月からの変更

9月に自宅サーバーのSSDが突然死寸前の状態に突然なりプライマリデータベースを飛ばしかけるという大事故が発生します。
幸い救出できましたがヤバいことには変わりありません。更には前々から管理が手間に感じるようになってきたのでこの際サーバー構成を全面的に見直して、以下のようなシンプルで堅牢な構成に変えようとなった訳です。

  • 老朽化したサーバーはなるべく使わないよう自宅内で使うサーバーをなるべく統合して調子良さそうなやつに押し込む(結果メンテナンスコストの削減にも貢献した)
  • プライマリデータベースやセルフホストVaultwardenなどの超重要なサービスや、比較的負荷が少ないがアップタイムが長い方が望ましいMisskeyのWebワーカー(キューは処理しない)などをVPSに設置するようにする
  • Tailscaleを導入し、今まで人力で構築していた相互接続の塊(メッシュVPNではなく必要に応じて構築してたせいで拠点同士がバラバラに繋がっていた)を解消
  • Cloudflare R2やEmail Routing、GmailのSMTPなど各種マネージドサービスを使用することでメールサーバーやMinioを不要にしメンテナンスとリソースのコストを削減
  • ついでに円安が酷いのでVPSをより安いものに切り替え

今残ってる課題 + 今後どうしたいか

8月のような複雑怪奇な構成はある程度解消できましたが、まだ不完全です。というのも

  • Misskeyのジョブワーカーが自宅サーバー依存(使用リソースの関係)なのを冗長化したい
  • VPSの拠点数が無駄に多いので統合したい(契約期間切れ待ち状態)
    • 個人用のアプリでそこまで重要じゃないけどメモリだけやたら食うやつは自宅でなるべくホストしたい
  • 置き換えるほどではないけどある程度老朽化した自宅サーバーを省電力なマシンに置き換えたい(電気代と騒音問題)
  • DBのクラスタが乱立してるのである程度統合したい

といった感じでまだ改善の余地が山ほどあります。
こいつらは今後のメンテナンスで解消していきたいですが気まぐれな自分のことなのでまた方針が変わるかもしれません。ある程度まともな構成になったらブログにします。