ECSをEC2クラスタからfargateに移行するやり方
今年も桜がちった。写真てアップで撮るより周りの風景も入れたほうが面白いよね。 だけどいろいろ写ってると特定されちゃうよねえ🌸
今回はphpのAPIをECSのEC2クラスタモードで動かしていたんだけど、 それをfargateに移行するという話🐶
もともと使っていたecsのパラメータの設定とdockr-compose.ymlは以下。 nginxとphp-fpmを立てている
💁こいつをfargate化していく💁
パラメータファイル
version: 1 task_definition: ecs_network_mode: bridge task_size: mem_limit: 0.5 GB services: php-fpm: essential: true mem_reservation: 256m nginx: essential: true mem_reservation: 128m
docker-compose.yml
version: '2' services: nginx: image: hogehoge/nginx ports: - ":80" depends_on: - php-fpm links: - php-fpm volumes_from: - php-fpm php-fpm: image: hogehoge/php-fpm
そしてサービスを更新するときのコマンドはこれ↓
ecs-cli compose \ --file docker-compose.yml \ --ecs-params [ECSのパラメータファイル] \ --project-name [プロジェクトネーム] \ service \ --cluster [クラスタネーム] \ --region ap-northeast-1 \ up \ --launch-type EC2 \ --deployment-min-healthy-percent 50 \ --target-group-arn [ターゲットグループARN] \ --container-name nginx \ --container-port 80 \ --timeout 10
そして。。無事fargate化されたのが、これだ
1 2 3 ✍️
ecsパラメータファイル
version: 1 task_definition: ecs_network_mode: awsvpc 👈 ネットワークモードがawsvpcに変える task_execution_role: [タスク実行ロールARN] 👈task_execution_roleなるものが必要になる task_size: mem_limit: 1 GB cpu_limit: 0.25 vCPU 👈CPUリミット指定 services: php-fpm: essential: true mem_reservation: 512m nginx: essential: true mem_reservation: 256m run_params: network_configuration: awsvpc_configuration: subnets: [サブネットID] security_groups: - [セキュリティグループID] assign_public_ip: DISABLED
docker-compose.yml
version: '2' services: nginx: image: hogehoge/nginx ports: - "80:80" 👈 awsvpcモードだとhost側のportも明示的に指定してやる必要がある. depends_on: - php-fpm volumes_from: - php-fpm php-fpm: image: hogehoge/php-fpm
実行コマンド
ecs-cli compose \ --file docker-compose.yml \ --file ecs-compose.yml \ --ecs-params [パラメータファイル] \ --project-name [プロジェクトネーム] \ service \ --cluster [クラスタネーム] \ --region ap-northeast-1 \ up \ --launch-type FARGATE \ # FARGATEに --deployment-min-healthy-percent 50 \ --target-group-arn [ターゲットグループARN] \ --container-name nginx \ --container-port 80 \ --timeout 10
❗気をつけるポイント
タスク実行ロールを作る必要がある
Amazon ECS タスク実行 IAM ロール - Amazon Elastic Container Service
Amazon ECS コンテナエージェントはユーザーに代わって Amazon ECS API アクションを呼び出すため、エージェントがユーザーに属していることをサービスに伝えるために、IAM ポリシーおよびロールが必要です。
awsvpcモードになるとlink機能が使えなくなる代わりに他のコンテナにlocalhostでアクセスできる。(portを指定してアクセス)
これがけっこうハマりどころ
fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass 127.0.0.1:9000; 👈これが正解(nginxコンテナからポート9000でphp-fpmコンテナにアクセスできる) # fastcgi_pass php-fpm; 👈 これはだめ(dockerのlink機能を使ってしまっている)! fastcgi_index index.php; include fastcgi_params;
ガンバ🙋
令和
令和令和令和令和令和令和
ヨーグルト作りL92
今回はL92でヨーグルトづくりに挑戦
40℃18時間で
前回やったときはうまく固まらなかったけど今回はどうだろう
味的にはR1で作るやつより好き
nuro光の開通で困ったこと おすすめのテクニック
結論から言うとまだ開通できていません
たしか申し込んだのは2月の頭だったのでもう一ヶ月以上たつ
そもそも開通までに時間がかかることは公式サイトでもも明記されているので文句はないけど色々めんどくさかったので記録
宅内工事
まずはじめに宅内工事の日程調整がsmsで飛んできた。かんたんに調整できて感動していた。
宅内工事当日、作業員の方が来たがマンション一階のMDFの鍵が空いていないということで
次までに開けといてくださいと速攻で帰ってしまった。すごく時間に追われている感じだった。感情も希薄な感じがした。
管理会社に連絡を取った。MDFの鍵は宅内工事の日程を事前に教えてくれれば開けておきますとのことだったのでnuro光に電話して次の予約を取ろうとしたのだが…
つながらないっ
一時間ぐらい電話を繋ぎっぱなしで待ってるのだけど、糞音割れした音楽が延々と流れているだけ!電話のサンプリング周波数って低いんだからそれに合わせて曲を選んでほしい!!!
ここで、so-netのサポートページでLINEによる質問窓口があるのを発見した。
すでにso-netの契約番号等を持っていたのでそちらで質問を投げた。
そうするとこちらの窓口では予約はできないが、後日担当からかけ直す手配をしてくれた👯やったね!
その後宅内工事では作業員の方が3人ぐらい来て1時間ぐらいで完了。
あとは宅外工事だけなのだけど…
nuro光から電話があり追加の工事が必要なので許可を取りたいから管理会社の連絡先を教えてくれとのこと
しかし、バスの中で連絡先を持ってなかったので
後でかけ直すといって切ってしまった…
これが間違いだった!
nuro光とやり取りするときは必ず時間をおいてかけ直してもらうことが重要!!なぜならこちらから連絡を取るのことは不可能に近いから
そうして何日も音割れミュージックを聞くことになってしまった
朝イチでかけたらつながったけどね
MDFにスペースがないから、ボックスをつけたいんだってさ
いいですか何度も言いますが
nuro光とやり取りするときは必ず向こうから連絡をとってくれるようにしてもらいましょう。
続く
R1ヨーグルト
R1ヨーグルト2本 明治おいしい牛乳
40℃ 8時間
かなりしっかり固まったヨーグルトになった
ご自由にお取りください2
今日は朝に来てみた。色々増えてる
レンガは相変わらず。