投稿

9月, 2012の投稿を表示しています

Netflix のスケール - オートメーション編

遅くなったけど続編。前回 TODO にしてたスケールアウトのオートメーションあたり。AWS のオートスケールについては、 本家ドキュメント に一通り書いてあります。その機能を大まかにまとめると、 スケールアウト、バランシングが自動化できる 複数のゾーン (Availability Zone) にまたがっていても一元管理できる (AZRebalance ELB を指定してインスタンスを追加できる 不健全なインスタンスを自動的に入れ替えれる >>> オートスケールの設定 大きく分けると 3 つのステップ CPU やメモリ等のリソースを識別する CloudWatch に各リソースをモニタリングするためのメトリクスを作成する デフォルトでモニタリング可能なリソースが用意されている ( デフォルトで用意されているリソース EC2 の CPU 負荷、ディスク I/O、ネットワーク I/O ELB のホスト数 (健全/不健全)、 リクエスト数 、レイテンシ Netflix 推奨は ELB の rps (req/sec クラスメソッドさんが カスタムメトリクスの追加 について超わかりやすく解説されています。 リソースの変化に基づくアラームやオートスケール等のポリシーを定義する ポリシーベース: 負荷が高くなったら EC2 インスタンスを増やし、負荷が減ったら EC2 インスタンスを減らす スケジュールベース: 負荷の予測が可能な場合は、インスタンスの増減をスケジュールする (バッチ処理にも素敵 >>> Netflix がオートスケールから学んだこと Netflix さんが実際にオートスケールを運用して、その結果を フィードバック されています。以下抄訳とかメモとか 早めにスケールアップ 例えば負荷テストで 25rps (rec/sec) を超えると待ちが発生するとする。その場合は待ちが発生しないように、20rps を超えた際にキャパシティーを増やすよう設定する。この rps の上限設定は以下の目的がある。 オートスケールイベントのトリガーでは間に合わない程の、予想をはるかに超える rps もありうる このバッファーが "キャパシティスパイラル" を回避するセーフ