Upload
yutaka-hoshino
View
4.477
Download
2
Embed Size (px)
DESCRIPTION
2013/2/18 cookapdで行われたAWS勉強会のスライドです http://techlife.cookpad.com/2013/01/23/awspad/
Citation preview
Internal ELBを使った負荷分散
13年2月18日月曜日
星野 豊 (@con_mame)
クックパッド株式会社 インフラストラクチャー部
http://d.conma.me/
http://facebook.com/conmame
13年2月18日月曜日
好きなCDP
Cache Distributionパターン
13年2月18日月曜日
好きなサービス
Elastic Transcoderhttp://d.conma.me/entry/
2013/01/30/002445
13年2月18日月曜日
提供
13年2月18日月曜日
PC、モバイル合わせて月間利用者数は2,000万人以上
レシピ数130万以上
PC、モバイル合わせて PV 10億/月 以上
PC / smart phone / mobile/ iOS / Android
Ruby on Rails
2011年 11月 AWS完全移行2012年 8月 VPC移行
500インスタンス以上稼働EC2 / ELB / CloudFront / S3 / Glacier / R53 / EIP / ENI etc...
13年2月18日月曜日
ところで
13年2月18日月曜日
Internal ELB知ってますか?
13年2月18日月曜日
Internal ELB使ってますか?
13年2月18日月曜日
これ
13年2月18日月曜日
VPC 内部用Load Balancer
基本的に外向けELBと同じ
VPC内部のインスタンス間の通信をロードバランス
アプリケーションサーバ <-> DB / Cache
アプリケーションサーバ <-> 内部用API
13年2月18日月曜日
DBとかCacheの冗長化どうしてますか?
13年2月18日月曜日
アプリケーションの設定ファイルに複数サーバを並べる
haproxyとかproxyを使う
Floating IP pattern
13年2月18日月曜日
アプリケーションの設定に複数サーバを並べる
サーバ台数多いと設定の配布に時間がかかる
haproxyとかproxyを使う
haproxy自体の冗長化どうしよう... (multicast使いたい...)
Pacemaker + heartbeat(Corosync)
Floating IP pattern
Slave系
内部API...13年2月18日月曜日
そこで、Internal ELB
13年2月18日月曜日
13年2月18日月曜日
を
13年2月18日月曜日
13年2月18日月曜日
すっきり
13年2月18日月曜日
メリットアプリケーションの設定ファイルに複数サーバを並べなくてもいい
切り離し・サービスインが手軽
他のミドルウェアを使わなくていい
管理コストの軽減
コネクションの集約
Multi AZ13年2月18日月曜日
Use Case
13年2月18日月曜日
DB
3306
DB slave
13年2月18日月曜日
注意ELBのヘルスチェックで、tcp:3306をチェックしていると...
blocked because of many connection errors.
mysqladmin flush-hosts
max_connect_errors
MySQLを監視するスクリプトをxinet.d経由で登録して、http:8080:/ のように監視
正常なら 200
MySQLが駄目な感じなら 500とか
13年2月18日月曜日
内部API
80
API
13年2月18日月曜日
Cache
22121twemproxyhaproxy
11211
ElastiCacheor
Memcached / Redis on EC2
13年2月18日月曜日
TIPS
Protocol: httpPort: 80Path: /
13年2月18日月曜日
TIPSMaster / Slave process Down
ENIの移動やELBからの切り離しを行うようなスクリプトを追加
Masterのfailover先をELB配下のslaveに
ENIの移動とELB
アプリケーションの設定変更なし
13年2月18日月曜日
Multi AZ
AZ-a AZ-b
application servermail server
proxy servermail relay server
13年2月18日月曜日
Multi AZ
AZ-a AZ-b
application servermail server
proxy servermail relay server
13年2月18日月曜日
Multi AZ
AZ-a AZ-b
application servermail server
proxy servermail relay server
13年2月18日月曜日
Multi AZ
AZ-a AZ-b
application servermail server
proxy servermail relay server
13年2月18日月曜日
Multi AZ
AZ-a AZ-b
application servermail server
proxy servermail relay server
13年2月18日月曜日
Performance
13年2月18日月曜日
DB編データ数: 約2億connection: 100 - 800試行回数: 100ELB配下に2台のMySQL (m2.4xlarge)
connection DIRECT ELB
100 1897.5 1703.5200 2075.1 1696.3300 2286.7 1897.3400 3098.5 2033.9500 3255.8 2110.2600 3341.2 2687.9700 3923.7 2886.3800 4812.3 3224.3
qps
0
1250
2500
3750
5000
100 200 300 400 500 600 700 800DIRECT ELB
http://bit.ly/12CetAx
13年2月18日月曜日
DB編データ数: 約2億connection: 100 - 800試行回数: 100ELB配下に2台のMySQL (m2.4xlarge)
connection DIRECT ELB
100 1897.5 1703.5200 2075.1 1696.3300 2286.7 1897.3400 3098.5 2033.9500 3255.8 2110.2600 3341.2 2687.9700 3923.7 2886.3800 4812.3 3224.3
qps
0
1250
2500
3750
5000
100 200 300 400 500 600 700 800DIRECT ELB
33%
http://bit.ly/12CetAx
13年2月18日月曜日
ElastiCache+twemproxy編
データ数: 10万
connection: 100
試行回数: 100
key size: 40bytes / value: 400bytes
twemproxy配下に2-4台のElastiCache Node
cache.m1.large
m1.large
Internal ELBウォームアップ無し
13年2月18日月曜日
0"
10000"
20000"
30000"
40000"
50000"
60000"
2" 3" 4"
Sec$
only$twemproxy$(cmd/sec)�
twemproxy1"
twemproxy2"
twemproxy3"
twemproxy4"
twemproxy0"
3000#
3100#
3200#
3300#
3400#
3500#
3600#
3700#
3800#
3900#
4000#
4100#
4200#
2# 3# 4#
Sec$
ELB+twemproxy(cmd/sec)�
twemproxy2#
twemproxy3#
twemproxy4#
13年2月18日月曜日
13年2月18日月曜日
90%劣化...
4,000/sec のアクセスがウォームアップ無しのInternal ELBの性能限界では...
ELBはアクセス量に応じてスケールアップする!
事前ウォームアップも可能
http://bit.ly/Uh68lr
13年2月18日月曜日
注意ELBのIPアドレスは変わることがある
DNSの問い合わせ結果をキャッシュしたり、hostsファイルに書いておいたりするとアクセスできなくなることも
haproxyなどの起動時のDNSの結果をキャッシュするような作りになっているものは、IPアドレスの変更を検知させたり、定期的なreloadを
13年2月18日月曜日
Conclusion
13年2月18日月曜日
ELBは勝手にスケールアップするけど...
事前のパフォーマンス測定
数分とかではなく長時間トラフィックを流してスケールアップの状態を見たり
13年2月18日月曜日
ELBは勝手にスケールアップするけど...
事前のパフォーマンス測定
数分とかではなく長時間トラフィックを流してスケールアップの状態を見たり
∧_̲∧ ⊂(#・ω・) 仕様書はない! / ノ∪ し―-‐‑‒J |l| | ⼈人ペシッ!! __ \ \  ̄ ̄
13年2月18日月曜日
Internal ELBで気軽に負荷分散・冗長化
Floating IP パターンと組の組み合わせで楽にFailover
ELBのIPアドレスの変更にご注意を!
13年2月18日月曜日
Important
13年2月18日月曜日
募集中!!一緒に毎日の料理を支えませんか?
13年2月18日月曜日
Q and A
13年2月18日月曜日