JAWS-UG Hokuriku 第5回勉強会 AWS Elastic Beanstalkを使ってみた + こねたCDP
- 2. 自己紹介
中道 健一(nkmc )
JAWS-UG北陸コアメンバー
創屋株式会社 所属(石川県白山市)
ソフトウェア・エンジニア(中間管理職)
PHP/Python/Ruby/.NET/VC++とか
好きなAWSサービス:Route53
好きなCDP:---
- 3. 創屋(そうや)株式会社
2005年創業
http://www.souya.biz/
システム開発全般
AWSを利用したサービス構築
言語・プラットフォームにとらわれず、
広い範囲のシステム開発を1社で行える
開発室:
石川県白山市日御子町ハ13-6
東京事務所:
東京都台東区西浅草3-10-10-201
- 5. ちょっとだけ
新しいこと
やってみようか
AWS Elastic Beanstalk
初めて(!)
- 6. AWS Elastic Beanstalkとは
AWS クラウド内でのアプリケーショ
ンのデプロイと管理を簡単にするサー
ビス
Webアプリケーションをアップロード
するだけで、アプリケーションの運用
に必要な環境の作成からデプロイ、
ロードバランシングなどが自動で行わ
れる
- 12. プラットフォーム
言語 コンテナ/ サポートツール
言語
バージョン フレームワーク 提供IDE
Java 5 or 6 Apache + Tomcat6, Eclipse
7
PHP 5.3 or 5.4 CAKE PHP
Symfony2
Python 2.6 Django
Flask
Ruby 1.8.7, 1.9.3 Rails
Sinatra
.NET .NET 2.0以 IIS7.5, 8 Visual Studio2008,
降 2010
Node.js Express
Geddy
詳細は
http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/Welcome.html
- 31. こねたCDP
EC2からのログの転送方法は?
S3syncではなくFluentdを使ってみた。
◦ http://fluentd.org/
この辺りを参考にしてインストール
◦ http://blog.suz-lab.com/2012/11/centos6fluentd.html
◦ http://dev.classmethod.jp/cloud/amazon-linux-fluentd-
setup-plugin/
$ sudo -s
# cd
# curl -OL http://toolbelt.treasure-data.com/sh/install-redhat.sh
# chmod 755 install-redhat.sh
# ./install-redhat.sh
- 32. こねたCDP
転送するファイルのフォルダに権限設定
$ sudo chgrp td-agent /var/log/httpd/
$ sudo chgrp td-agent /var/log/messages
$ sudo chgrp td-agent /var/log/secure
$ sudo chgrp td-agent /var/log/cron
$ sudo chmod g+rx /var/log/httpd/
$ sudo chmod g+rx /var/log/messages
$ sudo chmod g+rx /var/log/secure
$ sudo chmod g+rx /var/log/cron
- 33. こねたCDP
Gemのアップデートとプラグインのインストール
fluent-plugin-s3 S3にログを書き出すプラグイン
fluent-plugin-forest タグを動的に扱うプラグイン
プレースホルダを扱えるようにするプラ
fluent-plugin-config-expander グイン
$ sudo /usr/lib64/fluent/ruby/bin/fluent-gem update
$ sudo /usr/lib64/fluent/ruby/bin/fluent-gem install fluent-plugin-
s3 $ sudo /usr/lib64/fluent/ruby/bin/fluent-gem install fluent-
plugin-forest $ sudo /usr/lib64/fluent/ruby/bin/fluent-gem install
fluent-plugin-config-expander
- 34. こねたCDP
$ sudo vi /etc/td-agent/td-agent.conf
<source>
type forward <match *.**>
port 24224 type forest
</source> subtype s3
<source> <template>
type config_expander aws_key_id AKI******
<config> aws_sec_key **************
type tail s3_bucket log.test.com
format apache s3_endpoint s3-ap-northeast-1.amazonaws.com
path /var/log/httpd/access_log
tag ${hostname}/apache.access path ec2/${tag}/
</config> buffer_path /var/log/td-agent/buffer/${tag}
</source>
time_slice_format %Y/%m/%d/ec2-%Y-%m-%d-%H
<source> flush_interval 1m
type config_expander # time_slice_format %Y/%m/%Y-%m-%d
<config> # time_slice_wait 10m
type tail </template>
format syslog </match>
path /var/log/messages
tag ${hostname}/syslog.messages
</config>
</source>
- 37. こねたCDP
AWSの中の人にEMRでファイル結合
できるって教えてもらった
コマンドはS3DistCp
◦ http://imai-
factory.s3.amazonaws.com/decks/log_aggregation_with_e
mr.pdf
◦ http://docs.aws.amazon.com/ElasticMapReduce/latest/Dev
eloperGuide/UsingEMR_s3distcp.html
EC2のmicroインスタンスを起動し
て、EMRをキック。
これでファイルが結合された!
- 38. こねたCDP
EC2のマイクロインスタンス起動してすぐ実行する方法
$ cd
$ mkdir elastic-mapreduce-cli
$ cd elastic-mapreduce-cli
$ wget http://elasticmapreduce.s3.amazonaws.com/elastic-mapreduce-ruby.zip
$ unzip elastic-mapreduce-ruby.zip
$ vi credentials.json
{
"access_id": "AKI*****************",
"private_key": "**************************",
"keypair": "keypair_name",
"key-pair-file": "mykeypair.pem",
"log_uri": "s3n://log-merge.test.com/",
"region": "ap-northeast-1"
}
キーを置いとく
$ chmod og-rwx mykeypair.pem
EMRのインスタンスを起動し、jobflow番号を取得する。
$ ./elastic-mapreduce --create --name logmerge --instance-type m1.small --num-instances 1 --alive
Created job flow j-1IFZNUBP3U123
EMRでS3distCp実行
./elastic-mapreduce --jobflow j-1IFZNUBP3U123
--jar s3://ap-northeast-1.elasticmapreduce/libs/s3distcp/1.latest/s3distcp.jar
--step-name S3DistCp
--args '--src,s3://log.test.com/2013/03/,--groupBy,.*([0-9]{4}-[0-9]{2}-[0-9]{2}).*.gz,--outputCodec,gzip,--
dest,s3://log-merge.test.com/merge/'