2008年11月8日土曜日

[TechDay] 第7回 Amazon Elastic Compute Cloud (Amazon EC2) : Elastic IP

今回はEC2で起動したインスタンスのIPアドレスを固定IPにする方法です。
EC2での固定IPのサービスは「Elastic IP」と呼ばれています。

Elastic IPの使い方


EC2で起動するインスタンスは起動時に動的にIPアドレスが割り振られます。
固定IPを利用したい時にはElastic IPというサービスを使用します。
これはグローバルIPアドレスですが、AWSアカウントに割り当てらるれIPアドレスです。
IPアドレスはいくつでも簡単に取得できます。
EC2でインスタンスを起動した後に自分で取得したグローバルIPアドレスを割り当てることができます。
IPアドレスの取得も割り当てもコマンド1つで行うことができます。

以下にElasticIPサービスを利用するときのEC2 API toolsコマンドを示します。
(参考:EC2 API toolsのコマンドのヘルプ表示は # コマンド -? )

・新しいIPアドレスの取得
ec2-allocate-address
ec2allocaddr
・IPアドレスの割付
ec2-associate-address
ec2assocaddr -i インスタンスID IPアドレス
・IPアドレスの分離(剥奪)
ec2-disassosiate-address
ec2disaddr IPアドレス
・IPアドレスの解放(リリース)
ec2-release-address
ec2reladdr

インスタンス起動時にElasticIPを割り当てる


他のアプリケーション同様に /etc/init.d の直下にEC2のElasticIP割り当て用シェルを配置します。
以下に手順を示します。

(1)新規固定IPアドレスの取得

[root@domU-12-31-38-00-68-26 ~]# ec2allocaddr -K /root/.ec2/pk-プライベートキー.pem -C /root/.ec2/cert-証明書.pem
ADDRESS 75.101.167.58
[root@domU-12-31-38-00-68-26 ~]#

(以下参考:IPアドレスのリリース)
[root@domU-12-31-38-00-68-26 ~]# ec2reladdr 75.101.167.58
ADDRESS 75.101.167.58
[root@domU-12-31-38-00-68-26 ~]#


(2)シェルの作成(例. FileName:ElasticIP)

[root@domU-12-31-38-00-68-26 ~]# more /etc/init.d/ElasticIP
#!/bin/bash
#
# Associate EC2 Elastic IP Address to a INSTANCE

#source /root/.ec2env
#export JAVA_HOME=/usr/local/java
#export EC2_HOME=/usr/share/ec2/ec2-api-tools-1.3-24159
#export PATH=$PATH:$EC2_HOME/bin:$JAVA_HOME/bin
#export EC2_PRIVATE_KEY=/root/.ec2/pk-プライベートキー.pem
#export EC2_CERT=/root/.ec2/cert-証明書.pem
. /root/.ec2env

var1=`ec2din | grep running | gawk '{print $2}'`
#echo $var1
ec2assocaddr 75.101.167.58 -i $var1 >/dev/null 2>&1

[root@domU-12-31-38-00-68-26 ~]#


(3)権限の変更
[root@domU-12-31-38-00-68-26 ~]# chmod 755 ElasticIP

(4)rc4.dにシンボリックリンクの作成
[root@domU-12-31-38-00-68-26 ~]# cd /etc/rc4.d
[root@domU-12-31-38-00-68-26 ~]# ln -s ../init.d/ElasticIP S79ec2ElasticIP

※rc4.dに作成されているシンボリックリンクはたくさんありますがここでの注意点は、リンク名のつけ方です。固定IPを割り振った後に起動させたいOracleなどのリンク名より前に実行されるようにする必要があります。リンク名の頭文字「S」は実行されるシェルを表していて続く数字は実行されるシェルの優先順位です。(参考:ランレベル)

※実はランレベルはてっきり3だと思いはじめは rc3.d にリンクを作ったのですがちょっとはまりました。(^^;
EC2はXen上で動いているのですがXenのデフォルトのランレベルは4らしいです。(参考)

ちなみに/etc/inittabを見ると以下のようなエントリーなのでやはりデフォルト3ですが。。
#
id:3:initdefault:

インスタンス起動後にコマンドで確認してみると 4 になっています。
[root@domU-12-31-38-00-68-26 ~]# runlevel
N 4
[root@domU-12-31-38-00-68-26 ~]#

rcにシェルをセットした場合は、起動後にちゃんと実行されているか確認しましょう。
FirefoxのアドオンソフトElasticfoxでメモが表示されている青いボタンをクリックしてInstance Console Outputの画面を表示します。



下記の画面が Instance Console Output です。
ハイライトになっている部分が上記で作成したシェルが正しく実行できたことを示しています。



いかがでしょうか?
これでEC2でも固定IPのサービスをインスタンス起動時に自動で立ち上げられることがお分かりいただけたと思います。

Elasticfoxを利用した固定IPの付与


インスタンス起動時に固定IPを付与する説明をしてきましたが、固定IPの利用はElasticfoxから随時GUIで操作することもできます。
以下の画面はElasticfoxからあるインスタンスに固定IPを割り当ててた状態です。



固定IP付与の手順は以下のとおりです。
1)Elasticfoxの「ElasticIPs」タブをクリック
2)固定IPの取得
+表示のあるグリーンのボタンをクリック
3)取得したIPの割り当て
矢印表示のあるグリーンのボタンをクリック
起動中のインスタンスIDを選択

0 件のコメント:

コメントを投稿