2017年6月29日木曜日

ECSで管理しているContainerからRDS(Aurora)に接続

ECSで管理しているContainerにWebApplicationをデプロイ後、RDS(Aurora)に接続するまで。
まず、RDSのページから、Aurora インスタンスを起動する。
インスタンスが起動したら、テーブル作成のため、mysql client を利用してログインする。
ローカルPC -> Aurora だと、色々面倒なので、ECS インスタンスにmysql client をinstall して、そこからログインする。
mysql client のinstall は、以下の通り。
sudo yum install mysql

Aurora に設定したDB ユーザ、パスワードを入力して、Aurora にログインする。
ログインコマンドは以下の通り。
mysql -u username -p -P 3306 -h ecs-cluster-db.cluster-xxxxxxxx.us-east-1.rds.amazonaws.com

ログインしたら、適当にテーブルを作成する。
また、WebbApplication からアクセスするログインアカウントが上記と異なる場合、ユーザの作成と権限付与をする必要がある。

コマンドは以下の通り。
CREATE USER 'user_name' IDENTIFIED BY 'password';
GRANT ALL ON db_name.* to 'user_name'@'%' identified by 'password'; <- ALL をSELECT にすればRead only user ができる。

とりあえずこれでRDS 側の設定は終わったので、WebApplication からAurora にアクセスしてみる。
ここでは、jdbc ドライバを利用したアクセスを試みる。 コマンドは以下の通り。
jdbc:mysql://ecs-cluster-db.cluster-xxxxxxxx.us-east-1.rds.amazonaws.com:3306/db_name

これでアクセスできない場合、ネットワークの問題があるはず。
一番簡単な解析方法はtcpdump でパケットを眺める。
Container インスタンスに、ssh でログインする。
ログインしたら、tcpdump をインストール。
コマンドは以下の通り。
sudo yum install tcpdump
インストールしたら、ifconfig でeth0 のNIC を確認し、IP を控えておく。
実際にtcpdump を取得する。
コマンドは以下の通り。
sudo tcpdump -s0 -i eth0 -w packet.cap

パケットを取得したら、packet.cap ファイルが実行したフォルダに置かれるので、ローカルPC に持ってきてWireshark などで解析をする。
ssh でcontainer インスタンスに入っているので、ローカルPC にファイルを持ってくるには、SCP コマンドを利用するか、S3 にファイルを一旦アップロードしてからダウンロードするやり方が簡単。
Tera term を利用しているなら、File > SSH SCP でFrom に、"./packet.cap"と入力してReceive ボタンを押せば、ローカルPC にダウンロードできる。
S3 に一旦、アップロードする場合のコマンドは、以下の通り。
aws s3 cp ./packet.cap s3://bucket-name

0 件のコメント:

コメントを投稿