2009年5月12日火曜日

Scalrの構造図

簡単にいうと。ScalrとはAmazonEC2上で動作するWebServiceのスケーリングを自動で行ってくれるProgram。
「ScalrがあればEC2で動作する仮想PCの負荷監視が出来る!」って喜んでる人は一杯いると思う。勿論俺もそう。
でもそろそろその実態がどうなっているのかを把握しないといけない時期になってしまった。という事で調査してみる。
調べながらやってるし、どこか誤解して書いている可能性が十二分にあるんで、鵜呑みは危険です。
もしどこか間違っていたら教えてください。速攻で直します。

まずは分かり易い図から。という事でScalr(スケィラー)の図を和訳してみた。
■Scalr ProcessDiagrams


さて続いてScalr全体の構造の解説。
Scalrは特定のApplicationを提供するInstance群をFarmという単位で管理する。どんなFarmを作るかはScalr上で設定を行い、この設定をFarm定義と呼ぶ。
Farm定義は
このFarmではAPサーバとしてこのAMIを。DBサーバとしてこのAMIを使う。
という形で設定する。
この時の「APサーバ」「DBサーバ」等、ある特定の機能を提供する為の役割を「Role」と呼ぶ。
ScalrではこのRoleを予め幾つか用意しているので下記に紹介する。またRoleは自分達で新たに作り追加する事が出来る。
WWW Role・・・LoadBalancerの役割。Nginxを搭載。
App Role・・・APServerの役割。Apacheを搭載。
DB Role・・・DBServerの役割。MySQLを搭載。
Base Role・・・独自Role構築用


Farm内で「AP サーバ」RoleのAMIから作られたInstance群はAP サーバ「Role Group」と呼ぶ。
ScalrはこのRole Group毎に負荷を監視し、Role Group内のInstance全体の負荷が増加した場合、そのGroupにInstanceを追加する。
なお基本的にInstance の追加などに伴うIP 管理等はScalr がDNS サーバを書き換えて対応している。

さてScalrの最大の売りである自動負荷対応機能だが、特定のRoleGroupに所属する全Instanceの最後15分の平均負荷から判断する、というアルゴリズムを搭載している。
なお新規Instanceを立ち上げる平均負荷の基準値、Instanceを減らす平均負荷の基準値、及び最大Instance数、最低Instance数、Farm立上時の初期Instance数もScalrの画面から設定する事が出来る。

Scalrが想定しているのは
Client
Load Balancer/WWW Server・・・(Nginx)
Application Server・・・(Apache)
Database Server・・・(MySQL)

という4層構造。

APサーバのInstanceが増減した場合はScalrがDNSを更新する。
APサーバを担当するInstanceが増加した場合はLoadBalancerであるNginxがDNSに基づきAP
サーバInstance群を管理する。
DBサーバのInstanceが増減した場合はScalrがDNSを更新する。
ScalrではMySQLをDBとして採用しており、このMySQLの自動クラスタ機能(Master/Slave設定)
機能を利用してDBサーバをクラスタ化管理している。

恐らく企業用途ではOracleを使う機会が多くなると思うがMySQLの代わりにOracleを使ってこの辺りが巧くいくのか、現段階の私では解りません。
知っている方いたら教えてください。
コメントを投稿