2012年5月1日火曜日

NATインスタンスへのルーティングを変更するPHPスクリプト

スズキです。

以前、@c9katayamaさんが、下記のブログで
VPCでアベイラビリティゾーン越しにプライベートIPを共有する
VPCのルーティングを変更することでAZをまたいだ"Floating IPパターン"的な
フェイルオーバーを実現する方法を紹介してくれました。

上記ブログではルーティングテーブルの変更を手動(AWS Management Console)
で行なっていましたが、最終的にはHeatbeat(Pacemaker)などで自動化したい
はずなので、ルーティングを変更するPHPスクリプトを作成してみました。
#!/usr/bin/php
<?php
require_once("/opt/aws/php/default/sdk.class.php");
define("TABLE", "rtb-6cd63105");
define("CIDR" , "0.0.0.0/0");
define("NAT"  , "i-c149d1c1");
$ec2 = new AmazonEC2(array(
  "key"    => "ACCESS KEY",
  "secret" => "SECRET KEY"
));
$ec2->set_region(AmazonEC2::REGION_APAC_NE1);
$response = $ec2->replace_route(TABLE, CIDR, array("InstanceId" => NAT));
if(!$response->isOK()) {
  error_log("[" . $response->body->Errors->Error->Code . "] " . $response->body->Errors->Error->Message);
  exit(1);
}
exit(0);
?>
ポイントは"replace_route"関数を使っているところでしょうか?

下記のようにNATインスタンスが設定されている状態で


上記のPHPスクリプトを実行すると
# ./replace-nat
次のようにルーティング先のNATインスタンスが変更されていることがわかります。


下記と同じ要領で、Hearbeat(Pacemaker)と連動させることも容易にできるはずです。
Heartbeat(Pacemaker)でEIPの付け替え

Hearbeat(Pacemaker)はもう少し深めておかないと…
--------
http://www.suz-lab.com

0 コメント: