LoginSignup
6
6

More than 5 years have passed since last update.

Amazon EC2 Container Service プレビュー版で実践編をがんばってみた結果

Last updated at Posted at 2015-01-10

まえがき

Amazon EC2 Container Service(以下ECS)で実践的な構成を作ってウェ~イしようと思ったんですが、
試していくにつれて理解が浅いことに気付いたため
結果的にポエムになりました:)

Amazon EC2 Container Service(以下ECS)

ECSを動かしてみた系の記事はもうすでにいくつか公開されているので、
実際の運用を考えた構成にした時にどんな感じなんだろう?
という肌感を得るためにがんばってみました。
ちなみに現時点(2015/1/9)ではプレビュー版のため
正式版では変更される可能性大です。
生暖かい目で御覧ください。


ECSがよくわからない方への補足

用語集

用語 説明
クラスタ ECSを管理するための単位。ロールごとに用意する感じだと思う。
タスク 1インスタンス内で構成されるコンテナの定義。クラスタにかかわらずグローバルなもの。
実行中タスク クラスタ内で実行されているタスクのこと。

仕様についてメモ

  • 1つのサーバは1つのクラスタにのみ属する。
  • 1サーバ内では1つのタスクのみ実行できる。別のタスクを実行しようとするとタスクが上書きされる。


テスト構築しようとしていた構成

Appクラスタは webアプリ/fluentd/sensuクライアント の3つのコンテナで、
Redisクラスタは redis/sensuクライアント の2つのコンテナで、
Fluentdクラスタは fluentdサーバ(Appからの受信用)/sensuクライアント の2つのコンテナで、
Sensuクラスタは sensuサーバ(各サーバのモニタリング) の1つのコンテナで、
構成されています。
スクリーンショット 2015-01-11 2.58.40.png

で、結論から言うと現時点ではムリ〜。


ダメな理由

プレビュー版制限事項

そもそも、プレビュー版の制限として
クラスタは最大2つまで
という縛りがあるため、上記構成は出来ませんでした。
http://docs.aws.amazon.com/AmazonECS/latest/developerguide/service_limits.html

いろいろ試しているうちに疑問がわいた

そもそもですよ、クラスタ間の連携について考えると
App -> Redis に接続したい場合、
AppクラスタはどうやってRedisの情報を取得すればよいのでしょうか?

Appクラスタ内で aws ecs .. コマンドで取得して/etc/hostsに適用する仕組みを作る?
もしくはconsulを入れて、自動的に居場所がわかるようにする?

ここで気付いた。ECSはここまではやってくれないのか〜

CoreOSの技術と比べて見る

CoreOSに入門した

そうか、ECSはここでいうfleetの役割だけ提供しているのではないか?
つまりetcdのように複数サーバをクラスタする仕組みが
別途必要なのでは?


ECSで出来ること(プレビュー版時点)

  • クラスタ(サービス)毎に「どのクラスタにどのコンテナを起動するかのタスク定義/タスク実行/確認」などができる
  • クラスタに参加しているEC2インスタンスがどれか?の確認ができる
  • 1サーバ内にコンテナをいくつ起動するか、をcountで指定できる
  • CPU/メモリなどコンテナのリソース管理が出来る
  • コンテナデプロイはコマンドで出来る

ECSで出来ないこと(プレビュー版時点)


出来ないこと、については
正式版リリースと共にサポートしてくれるんじゃないかなーと期待してる。


以上、ポエムでした。

6
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
6