share facebook facebook twitter menu hatena pocket slack

2012.06.22 FRI

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

鈴木 宏康

WRITTEN BY 鈴木 宏康

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

上記のブログでは、ルーティングテーブルの変更を手動(AWS Management Console)で
行なっていましたが、最終的にはHeatbeat(Pacemaker)等で自動化したいと考えるはずなので、
ルーティングを変更するPHPスクリプトを作成してみました。

#!/usr/bin/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インスタンスが変更されていることがわかります。

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

こちらの記事はなかの人(suz-lab)監修のもと掲載しています。
元記事は、こちら

鈴木 宏康

鈴木 宏康

愛知県生まれ。東京工業大学大学院修士課程修了。在学時より、ベンチャー企業でインターネットに関する業務に携わり、現在はクラウド(主にAmazon Web Services)上での開発・運用を軸とした事業の、業務の中心として活躍。