mastodon

1つのサーバーで2つのmastodonインスタンスを動かそうとした話とredis周りのバグっぽいなにか

More than 1 year has passed since last update.

これは何か

1つのサーバーで2つのmastodonインスタンスを動かそうとして苦労した話と動かすための方法

はじめにやったこと

1つのpostgres, 1つのredisで2つのmastodonインスタンスを動かそうとした。

postgresはDBとユーザー情報を分け、redisはコメントアウトされていたDBの設定を有効にしてDB0とDB1で分けた

起こった問題

起動するものの、streamingにおいて2つのPost, LocalTimeline, 通知が混ざった

リロードするとデータは正しいものが表示されるのでstreaming/index.jsのバグと踏んで確認した

streaming/index.jsの挙動とバグっぽいなにか

streaming/index.jsは認証時にpostgresを参照し、データ自体はredisのみを参照しているようだった。
redisClientの設定で、DBの指定がされていないことを確認したので少なくともここがバグ1つめ。
DBを指定したものの、状況は改善しなかった。
実際詳しく検証すればおそらく変更したほうに古いほうからの流入は無くなる結果が得られたかもしれないが確認はしていない。

想定

streamingではなく、メインのAPIのほうがredisに投げ込む際に無条件でredisのDB0を参照していると考えた。ここは未確認なので完全にカンであてているだけ。

解決策

さすがにhostやportは有効だとおもったので、redisを別で立ててportをずらした。
結果無事2つのインスタンスが1つのサーバーで動いた。

結局何すればいいの?

  • postgresはDB分割で1つのDBをつかっていい
  • redisはインスタンスごとに立てる必要がある

環境

commit 5ce8a1811abbb304a6cf92616a9db4fb3cac89ee
2017/04/19 の夜22時くらいにpullしたもの

追記2017/04/22

直しました。本家にはプルリク送ってるとこですが急ぎで欲しい人はどうぞ。

https://github.com/dasoran/mastodon