というわけで今話題のECS/Fargate + EFS + WordPressの構築を経験したので、特にハマったところだけをブログしたいと思います。1から構築方法をまとめようと思いましたが、前回でFargateのブログを書いておりますので割愛と以下リンク貼っておきます。(わからなかったらTwitterでDMしてもらえばと〜)

https://blog.adachin.me/archives/tag/ecs-fargate


EFSはAWS Fargate 1.4.0必須

  • ecs.tf

ECS/FargateでEFSを利用する場合は31行目で必ず1.4.0のバージョンではないと動作しません。またタスク定義で15行目にEFSのIDを指定する必要があります。今回EFSはTerraformで作成せずに手動で指定しました。(これもTerraform化しないとアカンね)  タスク定義の詳細は以下になります。

  • wordpress.json

7行目でマウント場所を指定しないとエラーが出るので気をつけましょう。EFSでECSサービスの設定はこれだけとなります。他は特に変わりませんね。


ECS Scheduled Taskで時間になってもコンテナが立ち上がらない

  • cloudwatch_event_target.tf

もちろんバッチの実装も同様にEFSなので1.4.0ではないと時間になってもコンテナが起動しません。これはくそハマった。。ECS Scheduled TaskのTerraform化は以下を参考にしてください〜

[AWS][ECS/Fargate][Terraform]ECS Scheduled Tasksを使ってRailsバッチを動かす


EFSが急激に重くなりコンテナが落ちまくりアクセスができなくなる

スループットモードのバーストで運用してしまうとクレジットが枯渇したときに一気にアクセスができなくなります。これによりファイルアクセスのスループットがベースラインレートに制限されたことにより、パフォーマンス低下に繋がります。そうならないようにプロビジョンドスループットモードに切り替えるのが相応しいでしょう。ちなみに、1 MiB/s でスループットをプロビジョニングすると、バーストクレジットを使用することで 1 TiB 未満のファイルシステムでは 100 MiB/s までバーストできる一方、最小スループットはファイルシステムの使用量によらず 1 MiB/s となります。なので100MBくらいが良さそうなので、ここらへんは様子見てチューニングしたほうが良さそうですね。


デプロイ方法

下記ブログ書きましたので参考に。

ECS/Fargate + EFSでのデプロイをCircleCI + CodeBuildで自動化する


まとめ

EFSは最近読み取りスループットが3倍に向上したので、この機会にWordPressもECS/Fargateで運用するチャンスが来たのではないのかと感じました。今後もっと早くなるだろうし!レスポンスどうなのって疑問に思う方もいますが、そこまで遅くないので会社のブログで詳しく書きたいと思います。しかし、コンテナ便利だ…



adachin

1989年生まれのFindy/SRE。ホスティングから大規模なアドテクなどのインフラエンジニアとして携わる。現在はサービスの信頼性向上、DevOps、可用性、レイテンシ、パフォーマンス、モニタリング、オブザーバビリティ、緊急対応、AWSでのインフラ構築、Docker開発環境の提供、IaC、新技術の検証、リファクタリング、セキュリティ強化、分析基盤の運用などを担当している。個人事業主では数社サーバー保守とベンチャー企業のSREインフラコンサルティングやMENTA/TechBullで未経験者にインフラのコーチング/コミュニティマネージャーとして立ち上げと運営をしている。また、過去「脆弱性スキャナVuls」のOSS活動もしており、自称エバンジェリスト/技術広報/テクニカルサポート/コントリビュータでもある。

0件のコメント

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください