ラベル Apache の投稿を表示しています。 すべての投稿を表示
ラベル Apache の投稿を表示しています。 すべての投稿を表示

2014年2月5日水曜日

突発的なアクセス集中に耐える構成案

こんにちは!

これまでのブログの内容から、自分は図のような構成を提案します。
Instanceを作り込むのは大変ですが、1つ作ってAMIにして、AutoScaleで拡張していく構成です。


Instanceの中身は、

  • Apache
  • PHPなどのアプリ用の言語
  • MySQL Proxy
  • td-agent(fluentd)

といった感じです。

注意点は、MySQLの更新系は必ずRDSのmasterに接続するように、PHPなどで制御してください。
逆に参照系は、ローカルホストに接続するようにして、MySQL-Proxyが勝手に分散してくれます。

Apacheのアクセスログは、S3に保存されますが、アクセスログからサイトのアクセス分析をするのは、あまり現実的ではないと思ってます。GoogleAnalyticsなどの外部の分析ツールをページに埋め込んだ方がよいと思います。

※RDSのRead Replicaが増えたときの対処を、これから検討していきます。

2014年2月4日火曜日

ApacheのアクセスログをS3にためる

こんにちは!

fluentdを使って、ApacheのアクセスログをS3のバケットにためる手順です。
fluentdの設定が難しくて、なかなか苦労しました。
次回苦労しないように、ここに書き留めておきます。

TreasureDataリポジトリを追加します。
vi /etc/yum.repos.d/treasuredata.repo で次を記述します
[treasuredata]
name=TreasureData
baseurl=http://packages.treasure-data.com/redhat/$basearch
enabled=1
gpgcheck=0

fluentdをインストールします。
yum install -y td-agent

fluentdの実行ユーザでaccess_logを読めるように権限を設定します。
chgrp td-agent /var/log/httpd/
chmod g+rx /var/log/httpd/


設定ファイルを作成します※赤字の部分は修正してください。
vi /etc/td-agent/td-agent.conf

<source>
  type tail
  format apache2
  path /var/log/httpd/access_log
  pos_file /var/log/td-agent/httpd.access_log.pos
  tag s3.apache.access
</source>

<match s3.*.*>
  type copy

  <store>
    type s3

    aws_key_id AWS-ACCESS-KEY
    aws_sec_key AWS-SECRET-KEY
    s3_bucket apache-accesslog
    s3_endpoint s3-ap-southeast-1.amazonaws.com
    path access_log_
    buffer_path /var/log/td-agent/s3

    time_slice_format %Y%m%d_%H%M
    time_slice_wait 1m
    utc

    buffer_chunk_limit 256m
  </store>

</match>


起動します。
/etc/init.d/td-agent start


Apacheにアクセスして、ログがS3のバケット内に作成されればOKです!