Loadbalance using internal_elb

6,023 views

Published on

2013/2/18 cookapdで行われたAWS勉強会のスライドです
http://techlife.cookpad.com/2013/01/23/awspad/

Published in: Technology
1 Comment
12 Likes
Statistics
Notes
No Downloads
Views
Total views
6,023
On SlideShare
0
From Embeds
0
Number of Embeds
3,011
Actions
Shares
0
Downloads
32
Comments
1
Likes
12
Embeds 0
No embeds

No notes for slide

Loadbalance using internal_elb

  1. 1. Internal ELB を使った負荷分散13年2月18日月曜日
  2. 2. 星野 豊 (@con_mame) クックパッド株式会社 インフラストラクチャー部 http://d.conma.me/ http://facebook.com/conmame conmame@cookpad.com13年2月18日月曜日
  3. 3. 好きなCDP Cache Distributionパターン13年2月18日月曜日
  4. 4. 好きなサービス Elastic Transcoder http://d.conma.me/entry/ 2013/01/30/00244513年2月18日月曜日
  5. 5. 提供13年2月18日月曜日
  6. 6. 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日月曜日
  7. 7. ところで13年2月18日月曜日
  8. 8. Internal ELB 知ってますか?13年2月18日月曜日
  9. 9. Internal ELB 使ってますか?13年2月18日月曜日
  10. 10. これ13年2月18日月曜日
  11. 11. VPC 内部用Load Balancer 基本的に外向けELBと同じ VPC内部のインスタンス間の通信をロード バランス アプリケーションサーバ <-> DB / Cache アプリケーションサーバ <-> 内部用API13年2月18日月曜日
  12. 12. DBとかCacheの冗長化 どうしてますか?13年2月18日月曜日
  13. 13. アプリケーションの設定ファイルに複数 サーバを並べる haproxyとかproxyを使う Floating IP pattern13年2月18日月曜日
  14. 14. アプリケーションの設定に複数サーバを並べる サーバ台数多いと設定の配布に時間がかかる haproxyとかproxyを使う haproxy自体の冗長化どうしよう... (multicast使い たい...) Pacemaker + heartbeat(Corosync) Floating IP pattern Slave系 内部API...13年2月18日月曜日
  15. 15. そこで、Internal ELB13年2月18日月曜日
  16. 16. 13年2月18日月曜日
  17. 17. を13年2月18日月曜日
  18. 18. 13年2月18日月曜日
  19. 19. すっきり13年2月18日月曜日
  20. 20. メリット アプリケーションの設定ファイルに複 数サーバを並べなくてもいい 切り離し・サービスインが手軽 他のミドルウェアを使わなくていい 管理コストの軽減 コネクションの集約 Multi AZ13年2月18日月曜日
  21. 21. Use Case13年2月18日月曜日
  22. 22. DB 3306 DB slave13年2月18日月曜日
  23. 23. 注意 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日月曜日
  24. 24. 内部API 80 API13年2月18日月曜日
  25. 25. Cache ElastiCache or Memcached / Redis on EC2 22121 twemproxy haproxy 1121113年2月18日月曜日
  26. 26. TIPS Protocol: http Port: 80 Path: /13年2月18日月曜日
  27. 27. TIPS Master / Slave process Down ENIの移動やELBからの切り離しを行うよ うなスクリプトを追加 Masterのfailover先をELB配下のslaveに ENIの移動とELB アプリケーションの設定変更なし13年2月18日月曜日
  28. 28. Multi AZ AZ-a AZ-b proxy server mail relay server application server mail server13年2月18日月曜日
  29. 29. Multi AZ AZ-a AZ-b proxy server mail relay server application server mail server13年2月18日月曜日
  30. 30. Multi AZ AZ-a AZ-b proxy server mail relay server application server mail server13年2月18日月曜日
  31. 31. Multi AZ AZ-a AZ-b proxy server mail relay server application server mail server13年2月18日月曜日
  32. 32. Multi AZ AZ-a AZ-b proxy server mail relay server application server mail server13年2月18日月曜日
  33. 33. Performance13年2月18日月曜日
  34. 34. qps DB編 データ数: 約2億 connection DIRECT ELB connection: 100 - 800 100 1897.5 1703.5 試行回数: 100 200 2075.1 1696.3 ELB配下に2台のMySQL (m2.4xlarge) 300 2286.7 1897.35000 400 3098.5 2033.9 500 3255.8 2110.23750 600 3341.2 2687.9 700 3923.7 2886.32500 800 4812.3 3224.31250 http://bit.ly/12CetAx 0 100 200 300 400 500 600 700 800 DIRECT ELB13年2月18日月曜日
  35. 35. qps DB編 データ数: 約2億 connection DIRECT ELB connection: 100 - 800 100 1897.5 1703.5 試行回数: 100 200 2075.1 1696.3 ELB配下に2台のMySQL (m2.4xlarge) 300 2286.7 1897.35000 400 3098.5 2033.9 33% 500 3255.8 2110.23750 600 3341.2 2687.9 700 3923.7 2886.32500 800 4812.3 3224.31250 http://bit.ly/12CetAx 0 100 200 300 400 500 600 700 800 DIRECT ELB13年2月18日月曜日
  36. 36. 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日月曜日
  37. 37. only$twemproxy$(cmd/sec) 60000" 50000" 40000" twemproxy1" twemproxy2" Sec$ 30000" twemproxy3" twemproxy4" 20000" twemproxy0" 10000" 0" 2" 3" 4" ELB+twemproxy(cmd/sec) 4200# 4100# 4000# 3900# 3800# 3700# twemproxy2# Sec$ 3600# twemproxy3# 3500# twemproxy4# 3400# 3300# 3200# 3100# 3000# 2# 3# 4#13年2月18日月曜日
  38. 38. 13年2月18日月曜日
  39. 39. 90%劣化... 4,000/sec のアクセスがウォームアップ無しの Internal ELBの性能限界では... ELBはアクセス量に応じてスケールアップする! 事前ウォームアップも可能 http://bit.ly/Uh68lr13年2月18日月曜日
  40. 40. 注意 ELBのIPアドレスは変わることがある DNSの問い合わせ結果をキャッシュしたり、 hostsファイルに書いておいたりするとアクセ スできなくなることも haproxyなどの起動時のDNSの結果を キャッシュするような作りになっているも のは、IPアドレスの変更を検知させたり、 定期的なreloadを13年2月18日月曜日
  41. 41. Conclusion13年2月18日月曜日
  42. 42. ELBは勝手にスケールアップするけど... 事前のパフォーマンス測定 数分とかではなく長時間トラフィックを流 してスケールアップの状態を見たり13年2月18日月曜日
  43. 43. ELBは勝手にスケールアップするけど... 事前のパフォーマンス測定 数分とかではなく長時間トラフィックを流 してスケールアップの状態を見たり     ∧_̲∧   ⊂(#・ω・)  仕様書はない!     /      ノ∪     し―-‐‑‒J  |l|  |                     ⼈人ペシッ!!                 __                 \    \                      ̄ ̄13年2月18日月曜日
  44. 44. Internal ELBで気軽に負荷分散・冗長化 Floating IP パターンと組の組み合わせで 楽にFailover ELBのIPアドレスの変更にご注意を!13年2月18日月曜日
  45. 45. Important13年2月18日月曜日
  46. 46. 募集中!! 一緒に毎日の料理を支えませんか?13年2月18日月曜日
  47. 47. Q and A13年2月18日月曜日

×