swarmに載せ替えました。文章ほぼ出来上がってる状態だったので勿体なく感じてしまい公開します。swarm構成については後ほど投稿予定。まえがきここ半年ほどMastodonお一人様サーバをt3smallの上でほぼ公式のdocker-compose.ymlそのまま使って運用していましたが、ECSに載せ替えました。ECSのお勉強として実施。CloudflareデータベースバックアップはS3へ(未実装)DBは色々迷いましたがネイティブでEC2にインストール。nanoでいい気もしますがswapするとRedisでバシバシEBSのIOPS食ってサーバ止まっちゃいそうな気がするので。(過去似たような経験があり......)ECSのホストはスポットフリート。コストメリットはほぼ無し(むしろ上がっちゃうのでsshの踏み台鯖潰しました)、運用コスト爆上り(減らしたものも多いですが、知らないものだらけなので)、可用性は多分低下(スポットフリートなのでちょいちょいコンテナホスト消えて再作成走る?まだ未経験)、といった具合。sidekiqを動かしています。t3smallt3nano現在t3nanot3microスポットインスタンスでt3microが3つコンバーチブルRIみたいにmicroを1として数えると元々のは2.5,今のは1.5+スポット(大体1台あたり7割減なので合計約1)で2.5くらい。ストレージは今スポットで使わせてる分が無駄使いすぎ(デフォ30GBです。そんなに使わない)ですが、元々のもDBコンテナ用に50GBとか当ててたり。ssh踏み台を潰したのでEIPも減り、EC2全体の金額を見るとほぼ同じですね。各種サービスの設定はそれぞれについてymlを書き、ecs-cliからアップしています。tootsuite/Mastodonのdocker-compose.ymlからそれぞれコピーしただけなので中身についてはここでは割愛(swarm構成記事に乗せるかも)。webとstreamingはネットワークモードをawsvpcにし、ECSのサービスディスカバリを使ってて内部Route53のAレコードを登録、リバースプロキシさせてます。逆にsidekiqはインターネットへ出られる必要があるためネットワークモードをhostにしています。awsvpcモードだと、VPCのアドレスをコンテナが持てるんですがただパブリックIPは持てないんですよねぇ...。この部分どうやればsidekiqコンテナをインターネットへ出られるようにできるか分からずめっちゃ時間かかりました。