2011年8月2日火曜日

"Auto Scaling"で指定時刻にEC2インスタンスを起動

スズキです。

"Auto Scaling"の有名な使い方として、CPU使用率やSQSのキューサイズなどの
"CloudWatch"のメトリクスの変化をトリガーに、
インスタンス数を自動で増減させるものがありますが、
実は、指定時刻に(定期的に)インスタンス数を増減させることも可能です。

ということで、早速、いつものPHPを利用して試してみます。

今回は、いつもはインスタンスを起動しておらず、
指定時刻に1インスタンス起動するようにしてみました。


create_launch_configuration

まずは"Auto Scaling"の設定です。増減させるインスタンスのAMIやインスタンスタイプ、
そしてセキュリティグループなどを登録します。

require_once("/opt/aws/php/sdk.class.php");

define("AWS_KEY"       , "AAAAAAAA");
define("AWS_SECRET_KEY", "SSSSSSSS");

$as = new AmazonAS();
$as->set_region(AmazonAS::REGION_APAC_NE1);
$response = $as->create_launch_configuration(
    "suz-lab",
    "ami-bcca7fbd",
    "t1.micro",
    array(
        "KeyName"        => "suz-lab_ap-northeast-1",
        "SecurityGroups" => array(
            "default"
        )
    )
); 

var_dump($response);


create_auto_scaling_group

次は通常の"Auto Scaling"の振る舞いを指定します。
いつもはインスタンスが起動していない状態にしたいので、
インスタンス数のMax/Minともに「0」としています。

require_once("/opt/aws/php/sdk.class.php");

define("AWS_KEY"       , "AAAAAAAA");
define("AWS_SECRET_KEY", "SSSSSSSS");

$as = new AmazonAS();
$as->set_region(AmazonAS::REGION_APAC_NE1);
$response = $as->create_auto_scaling_group(
    "suz-lab",
    "suz-lab",
    0,
    0,
    array(
        "ap-northeast-1a",
        "ap-northeast-1b"
    )
);

var_dump($response);


put_scheduled_update_group_action

最後に指定時刻にインスタンスを起動する設定です。5分後に"Auto Scaling"の振る舞いを、
上記のMaxとMinが「0」の状態(インスタンスを起動させない状態)から
MaxとMinが「1」の状態(常に1インスタンス起動している状態)にしています。

require_once("/opt/aws/php/sdk.class.php");

define("AWS_KEY"       , "AAAAAAAA");
define("AWS_SECRET_KEY", "SSSSSSSS");
date_default_timezone_set("Asia/Tokyo");

$as = new AmazonAS();
$as->set_region(AmazonAS::REGION_APAC_NE1);
$response = $as->put_scheduled_update_group_action(
    "suz-lab",
    "suz-lab",
    array(
        "Time"            => "+5 minutes",
        "MinSize"         => 1,
        "MaxSize"         => 1,
    )
);

var_dump($response);


これで、5分後に自動でインスタンスが起動することを確認することができるはずです。

さらに、"EndTime"を指定して、上記の変更を元に戻す時間もしてできますし、
"Recurrence"(Cron書式)を指定して、定期的に変更させることも可能です。

定時バッチは、上記の仕組み使った方がコストダウンできるよなー...
--------
http://www.suz-lab.com

0 コメント: