AWSのELB、超便利ですよね。これがないと生きていけないくらい便利です。AWSの各種サービスは日々バージョンアップされ使いやすくなっているのだけど、ELBも御多分にもれずバージョンアップされておりました。大きくは2つ。

ELBでアクセスログをS3に保存


今まではELBにぶら下げているEC2インスタンスのアクセスログをfluentdとか使って一箇所に集約してゴリゴリ解析とかやっていたかと思いますが、それがELB単体でアクセスログ保存ができるようになりました。

保存先はもちろんS3。

設定方法は、ELBを選択して「Description」タブの一番下に「Access Logs」という項目があります。そこをクリックして、S3のバケット名を入力するだけ。新規でS3バケットを作る場合は、「Create the location for me」にチェックを入れるとパーミッションなど自動で設定してくれます。楽。

既存バケットに設定したい場合は、自分でパーミッション設定を変更する必要あり。設定方法はConfigure an Amazon S3 Bucket for Storing Access Logs - Elastic Load Balancingを見ると良いです。

保存間隔も5分 or 60分と選ぶことが出来る。

アクセスログフォーマット

参照 : Access Logs - Elastic Load Balancing

フィールド名 内容 サンプル
timestamp UTCのタイムスタンプ 2014-02-15T23:39:43.945958Z
elb ELBの名前 my-test-loadbalancer
client:port クライアントのIPアドレス&ポート番号 192.168.131.39:2817
backend:port ELBによって振り分けられたインスタンスのIPアドレス&ポート番号 10.0.0.0.1
request_processing_time ELBがリクエストを受け付けてから、インスタンスへ送るまでの時間 0.000073
backend_processing_time ELBがリクエストを受け付けて、インスタンスへ送信してから返ってくるまでの時間 0.001048
response_processing_time ELBがインスタンスからレスポンスを受け取ってから、クライアントへ返すまでの時間 0.000057
elb_status_code ELBのステータスコード(HTTPのみ) 200
backend_status_code バックエンドのステータスコード(HTTPのみ) 200
received_bytes 受信したリクエストのサイズ(bytes) 0
sent_bytes 送信したリクエストのサイズ(bytes) 29
"request" クライアントからのリクエストURI "GET http://www.example.com: 80/HTTP/1.1"

Cross-Zone Load Balancingで柔軟な分散へ

AWS ELBを使う際に注意すべきことで書いた AZ毎のEC2インスタンスは同じにする! という注意点。もう定番というくらい言われていることですが、Cross-Zone Load Balancingを有効すると、ELBにぶら下がっているEC2インスタンス全体で分散してくれるようになります。

これによって、Availability Zoneを複数運用している場合、スケールアウトするには均等に増やす必要があり、ちょっと面倒くさかったりコストが余計にかかったり、ちょうどいい塩梅に出来なかったりしましたが、あと1台インスタンスあれば十分という状況でも気軽にスケールアウトできるようになりました。

デメリット的な部分で言えば、RDSとAZが違うインスタンスが増えることで通信コストとレイテンシの問題が出てくるかも…という所かな。

設定方法は簡単で、アクセスログと同じように「Description」タブの中にある「Cross-Zone Load Balancing」をEnabledにするだけ。即時反映されます。

今まででも十分、神的なELBがより神になりましたね。と。