Flickrの中のヒトのLAMP構成プレゼン(Hardware Layouts for LAMP Installations)訳
del.icio.us見てたら面白いファイルがあったので訳しながらはてな記法ワープロでメモったものを公開します。2005/10/18-25に行われたZend/PHP Conference & ExpoにてFlickrのJohn Allspaw氏が発表されたプレゼンの内容のようです。英語読めるヒトは本物のほうをご覧ください。そもそもプレゼンなので長文はほとんどないし、図も入ってるので。天丼に親近感を覚えました。
あと はてな記法ワープロいいですね。ついでにはてな記法なプレゼンツールも是非作ってください!!!
普通にSQL書いてMySQL使うのは出来るけど負荷とかほとんど考えたことないなーと思って「実践ハイパフォーマンスMySQL」読んでたところでhttp://del.icio.us/tag/flickr+mysqlあたりで見つけました。「実践ハイパフォーマンスMySQL」だと6章から9章辺りが関係あります。
このプレゼンの中では前半部はよく見る内容だなと思って見てたんですけど、ロードバランシング以降の話(port exhaustion,10k vs 15k drive, SQUID辺りの具体的な数値とか)は知らなかったので勉強になりました。

- 作者: ジェレミ・D.ザウドニ,デレク・J.ベリング,Jeremy D. Zawodny,Derek J. Balling,林秀幸
- 出版社/メーカー: オライリージャパン
- 発売日: 2004/10
- メディア: 単行本
- 購入: 9人 クリック: 239回
- この商品を含むブログ (53件) を見る
このプレゼンの構成
- MySQL構成
- その他、(運営していて学んだ?)秘技
- キャッシュコンテンツに関する考察
One box
Two Box
レプリケーションを使った多マシン構成
スレーブ遅延
Hardware load balancing mysql
ロードバランシングの良い点
- アトミックなクエリにより、アプリケーションに影響を与えずにスレーブに追加・削除が可能
- モニタリングポイントの追加と異常処理の自動化
- スレーブプールを一つのリソースとして扱うことができ、許容限度を知っていれば許容量工数計画を更に簡単に出来る
各スレーブの許容限度(最大QPS能力)の測定方法
- まずベンチマークして予測する(またはトム
(誰)のハードウェアのベンチマーク(http://www.tomshardware.com/ )結果かanadtech.comを参照する) - 予想より多くのマシンを用意
- 恐ろしい(?):遅延検出中に、トラフィックが安定している時の製品のスレーブプールからマシンを削除
- スレーブ遅延が発生する直前のQPSが許容限度である
ロードバランシングの悪い/困難なところ
- 全てのロードバランサが均一に作られるとは限らない。全てのロードバランサ会社がこの使い方を想定しているとは限らないので、サポートも受けられないかもしれない
- 高ボリューム状態で試している人が少ないため、コミュニティでのサポートも期待出来ない
- わかったこと
- ポートの消耗
- ヘルスチェック
- バランスアルゴリズム
ポートの消耗(Port exhaustion)
ポートの消耗(Port exhaustion(cont'd*2続き))
解決
- データベース スレーブ/ファーム側のIPプールの使用(Netscalerでは"subnet IPs",Alteonでは"PiPs"と呼んでいる)
- port/connection使用率をモニタし、追加タイミングを知る
ヘルスチェック
ヘルスチェック(cont'd続き)
バランシングアルゴリズム
一方、"in-the-box"考察
"in-the-box"考察(cont'd続き)
(ディスク制限されている時に比べて最大20%のパフォーマンス増か)
10k v.s. 15kドライブはそれほど重要なことか? ->実測値による証明(10k vs 15kなスレーブ遅延発生グラフ)
SAN(Storage Area Network)でMySQLを使う
- 出来るだけローカルと同じレイアウトにせよ
- HBA(fiber card)ドライバがLinuxで十分にサポートされているか明らかにせよ
- データベース間でボリュームを共有するな
- 正確なQueue Depth Sizeを忘れるな。それはHBA -> switch ->storageから増加する
静的コンテンツのキャッシング(cont'd続き)
- 平凡なwebサーバを高速化するためにSQUIDを使おう。"reverse-proxy" HTTPアクセラレーションとしても知られている
- http://www.squid-cache.org/Doc/FAQ/FAQ-20.html参照
SQUIDの基本レイアウト
高容量SQUIDingのための良いHWレイアウト
Flickr:How We Roll
図参照