Open114

aws

kajirikajirikajirikajiri

tldr
ecsのログはここに出てるよ

kajirikajirikajirikajiri

例えばこのエラーはメモリが不足している。

service sample-service was unable to place a task because no container instance met all of its requirements. The closest matching container-instance 0f2484b70f80a9d46db24f1 has insufficient memory available. For more information, see the Troubleshooting section.

kajirikajirikajirikajiri

例えばこのエラーはポートが使用中

service sample-service was unable to place a task because no container instance met all of its requirements. The closest matching container-instance 0f2484b70f80a9d46db24f1 is already using a port required by your task. For more information, see the Troubleshooting section.

kajirikajirikajirikajiri

今日は一旦諦めてたcloudwatchにcodedeployのログ出力をやってみよう

kajirikajirikajirikajiri

全部一旦消したらうまくいった
sg, loadbalancer, target group, task definition, service, cluster

kajirikajirikajirikajiri

これでdocker imageとport bindingをやりたかったやつに直せばいけるんじゃないですかね

kajirikajirikajirikajiri

私のimageなんか壊れてるんですかね?
保留中にならないですね

kajirikajirikajirikajiri

試しにさっき起動したリビジョンを再デプロイしてみたが以前のように止まる

kajirikajirikajirikajiri

何かを見つけた。私が再デプロイを要請すると、メモリ不足で落ちて

service sample-service は、要件をすべて満たすコンテナインスタンスがなかったため、タスクを配置できませんでした。最も近い条件のコンテナインスタンスaaa では、利用可能なメモリが不足しています。詳細については、「トラブルシューティング」セクションを参照してください。

kajirikajirikajirikajiri

みづらいな
service sample-service は、要件をすべて満たすコンテナインスタンスがなかったため、タスクを配置できませんでした。最も近い条件のコンテナインスタンスaaa では、利用可能なメモリが不足しています。詳細については、「トラブルシューティング」セクションを参照してください。

kajirikajirikajirikajiri

確かに私はハードリミットをかけているので限界が来れば落ちる

kajirikajirikajirikajiri

マシンとしては1024だけど、使えるのは768だよって言いたいんだろうきっと

kajirikajirikajirikajiri

あー、半分にしてもダメか。すでに1タスク起動しているわけで

kajirikajirikajirikajiri

service sample-service-34234 was unable to place a task because no container instance met all of its requirements. The closest matching container-instance-dfasdaf is already using a port required by your task. For more information, see the Troubleshooting section.

kajirikajirikajirikajiri

え、hostのポート指定しないのはさ、そしたらloadbalancerがtarget groupに繋いでtarget groupで80portに飛ばすって指定してるから。host指定しなかったら、??hostのport指定しないとport何になるの?

kajirikajirikajirikajiri

ecsログを出力しませんねとか私言ってましたけど、イベントを見ればよかったんですね

kajirikajirikajirikajiri

今これ。だけど、instanceのhost port 80に複数バインドしようとしてさっきのエラーが出てるはず。

kajirikajirikajirikajiri

Amazon ECS コンソールを開いて、作成または更新するタスク定義のホストポートを 0 に設定します。アプリケーションのコンテナポートマッピングを必ず設定してください。
重要:host および awsvpc ネットワークモードは、動的ホストポートマッピングをサポートしていません。

どこかのサイトでいつぞやに0を指定してたけど、あんまりよくみてなくて、なんやねんこれ?って思ってたけど、これでどう的にできるのか

kajirikajirikajirikajiri

そして、albも設定か

If you are using containers in a task with the bridge network mode, you can specify a non-reserved host port for your container port mapping, or you can omit the hostPort (or set it to 0) while specifying a containerPort and your container automatically receives a port in the ephemeral port range for your container instance operating system and Docker version.

kajirikajirikajirikajiri

loadbalancerからinstanceへのトラフィックを上記を参考に全てのportで許可する。
security groupを修正

kajirikajirikajirikajiri

そして、task definitionでhostを0, containerのポートをcontainer内部のapplicationのポートに設定

kajirikajirikajirikajiri

ecsのec2はほぼ完璧になったと思われる。自分のサーバーをアップしてみよう

kajirikajirikajirikajiri

もうawsできますわー
ecs, ec2, sg, loadbalancer, tg
あたりがわかった。

kajirikajirikajirikajiri


数値としてはコンテナインスタンスを見れば書いてあるんだけど、画像になってた方がわかりやすい

kajirikajirikajirikajiri

route53も使いたいな
そこからトラフィック分けたい。
使い捨てstgを作りたい

kajirikajirikajirikajiri

243j23423jl.example.comとかを毎回作りたい。1時間くらいで破棄したい。

kajirikajirikajirikajiri

loadbalancerは同じにして、portでトラフィックを分離して
stgとproductionに分けよう。。

あれ、loadbalancer高くない?
数で課金されるのか

kajirikajirikajirikajiri

2個にしたら倍になった
基本料金みたいなもんかな
$17.74

2000円くらいするのか〜

kajirikajirikajirikajiri

まあblue/greenしなくてもいいんですけどね。
かっこいいから使いたいっていうくらいで。

kajirikajirikajirikajiri

あとは、ecsのfargateの方がいいんかなこれだと。
blue/greenするときに、instance内でtaskを一時的に2個立ち上げるために、task1個分を常にあけてるんだよね今。
これ勿体ない。

kajirikajirikajirikajiri

そもそもそんなに動かさないからな今は。
トラフィックが大量になったら考えよう

kajirikajirikajirikajiri

ただ、本来は時間あたりで請求が来るものではなさそう。
ec2とかloadbalancerとかaclとか。なんで、一年後にはアラート入れとこカレンダーに