MastodonでConoHaオブジェクトストレージを使うのをやめて費用をケチった話

ConoHaトップページ 孤独のIT
ConoHaトップページ

MastodonでConoHaオブジェクトストレージを使ってきましたが、最近のMastodonは古いメディアファイルを削除できるようになってローカルストレージに収まる範囲で運用できそうになったので、やめることにしました。

ConoHaオブジェクトストレージをやめていくら節約できたか

ConoHaオブジェクトストレージを使い始めた頃に書いた記事が↓です。

この記事が2017年11月なので、1年5ヶ月くらい使ってたんですね。最小の100GBは450円/月なので、7560円。塵も積もれば。

今後は、この450円/月が節約できます。もうちょっと細かい単位での課金だとありがたいですね…

ちなみにAmazon S3を東京リージョンで使うとすると、現在の使用量が7GBくらいなので、 0.025USD * 7 = 0.175 USD/月 + 転送料 になります。初めからこっち使ってれば良かったのか…?

ConoHaオブジェクトストレージからローカルストレージに移行する手順

使い始めた時と逆の手順をやればOKです。それにしても、データ移行は面倒ですね。

あまり長時間Mastodonを落とさずに移行したいので、以下の方法を採りました。

  1. tootctl media remove で古いのを削除しておく。
  2. オブジェクトストレージからローカルにファイルをダウンロードする。数時間かかる。
  3. もう一回、オブジェクトストレージからローカルにファイルをダウンロードする。既にダウンロードしたファイルはスキップする(ので、一回目より早い)。
  4. Mastodonを停止する。
  5. もう一回、オブジェクトストレージからローカルにファイルをダウンロードする。既にダウンロードしたファイルはスキップする。Mastodonが停止しているので、ダウンロード中に新たにメディアファイルが作成されることはない。
  6. Mastodonの .env.production ファイルを書き換えて再起動する(Swift関連を無効化)
  7. nginx の /media のリバースプロキシをやめる

tootctl media remove で古いメディアを削除しておく

きっとみんないつも自動実行しているやつです。直前に実行しておくことで、移行するデータを小さくしておき、楽したい作戦です。

オブジェクトストレージからローカルにファイルをダウンロードする

MastodonでConoHaオブジェクトストレージを使ってみるでも使った、OpenStack SwiftのDocker imageをそのまま使いました。

$ time docker run --rm OS_AUTH_URL='https://identity.tyo1.conoha.io/v2.0' -e OS_TENANT_NAME='gnct********' -e OS_USERNAME='gncu********' -e OS_PASSWORD='**********' -v /path/to/mastodon/public/system:/system swift sh -c 'cd /system && swift download --object-threads 1 --skip-identical 39sounds'

数時間かかりました。(具体的な時間を記録し忘れた)

2回目: オブジェクトストレージからローカルにファイルをダウンロードする

1回目のダウンロードには数時間以上かかるので、その間にまた新しいメディアファイルが増えているはずです。なるべくダウンロードしていないファイルが少ない状態にしておくとダウンタイムを抑えられるので、もう一回ダウンロードをしておきます。

OpenStack Swiftは --skip-identical を付けておくと、既に存在するファイルはスキップしてくれるので早くなります。10分くらいだったかな…(忘れた)

Mastodonを停止する

がっつり停止してしまいます。

考えてみたら、設定変更して再起動してからダウンロード(データ移行)をすれば最短ダウンタイムで済んだのか…?(後の祭り)

3回目: オブジェクトストレージからローカルにファイルをダウンロードする

Mastodonが停止している間にダウンロードをすることで、すべてのメディアファイルを漏れなく移行できます。ほとんどスキップするので、数分で完了しました。

Mastodonの .env.production ファイルを書き換えて再起動する(Swift関連を無効化)

Swift関連を無効化します。

SWIFT_ENABLED=false にするだけでいい気がしますが、 SWIFT_* を全部コメントアウトしました。

nginx の /media のリバースプロキシをやめる

ローカルストレージを見るように、nginx の /media のリバースプロキシ設定をコメントアウトしました。

消さずにコメントアウトにしておくのは、具合が良くなかったら元に戻すからです。うまく行ったら消しておきましょう。

あとがき

ConoHaオブジェクトストレージをやめることで、450円/月をケチることができました。

現在はConoHa VPS 1GBプランのみで運用しているので、かかっている費用は 900円/月 だけになりました。

Mastodonさん、もうちょっと軽くなってくれるとありがたいですねえ…

タイトルとURLをコピーしました