LoginSignup
12
4

More than 3 years have passed since last update.

ECSクラスターにEC2インスタンスをアタッチする

Last updated at Posted at 2019-05-09

やりたいこと

ECSクラスターを作った後、追加でEC2インスタンスをアタッチしたい。

EC2インスタンスの設定

ECSクラスターはすでに作ってあるという前提で話を進める。
クラスターにアタッチするために、インスタンスにはいくつか設定が必要だ。

1. IAMロールは、ecsInstanceRoleにする。

起動時にロールの設定項目がある.
ecsInstanceRoleが存在しない場合は、公式を参考に自分で作成する。

2. ECSコンテナエージェントをインストールする。

インスタンス起動後にsshして、GitHubから入手できる。

手順2を省略する方法

インスタンスのAMIをAmazon ECS-Optimized Amazon Linux 2 AMIに設定すれば、手順2は不要。

3. コンフィグファイル等を設定する。

手順1、2を踏んだ上でインスタンスを作成すると、インスタンスは、aws側が自動で生成するdefaultという名前のクラスターに自動的にアタッチされる。自分で作成したクラスターにアタッチするには、インスタンスのコンフィグを書き換えなければならない。
インスタンスにsshして、/etc/ecs/ecs.configを編集する。

/etc/ecs/ecs.config
ECS_CLUSTER=YOUR_CLUSTER_NAME

YOUR_CLUSTER_NAMEは、アタッチしたいクラスターの名前にする。

4. コンフィグの変更を適応する

私が詰まったポイントはココ。
インスタンスのログは、/var/log/ecs/ecs-agent.log.timestampにあるのだが、そこを見ると

[CRITICAL] Data mismatch; saved cluster 'default' does not match configured cluster 'YOUR_CLUSTER_NAME'. Perhaps you want to delete the configured checkpoint file?

と出力される。セーブされてるクラスターとコンフィグのクラスターが一致してないよーと書いてある。
要するに、先程コンフィグに書いたクラスター名は、まだインスタンス上ではセーブされていないということ。

ということで、rm /var/lib/ecs/data/* でチェックポイントファイルの削除を行う。
チェックポイントファイルは、インスタンスの起動時に自動で生成されるので、削除して問題ない。

削除をした後は、忘れずにインスタンスの再起動を行うこと。

これでOK

以上の設定をすれば、クラスターはECSインスタンスと自動でつながる。
クラスターのコンソールのECSインスタンスのところに、アタッチされたインスタンスが表示されるはずだ。

12
4
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
12
4