nkjmkzk.net

powered by Kazuki Nakajima

Archive for the ‘ec2’ tag

AWS EC2のコマンドラインインターフェースを使う準備

EC2(Elastic Computing Cloud)はAWS Management Consoleと呼ばれるナイスなWeb UIで操作が可能ですが、いくつかの操作はAmazon EC2 API Toolsと呼ばれるコマンドラインからしかサポートされていなかったりします。なのでEC2を自在に操るにはコマンドライン環境も整備しておく必要があるでしょう。

Mac OS X 10.6 Snow Leopardにてこのコマンドラインツールをセットアップしたときの作業手順を記録しておきます。

まずはこちらから最新のAmazon EC2 API Toolsをダウンロードします。

http://aws.amazon.com/developertools/351

ダウンロードしたzipファイルをローカルマシン(Mac OS X)上で解凍します。僕は/opt以下に解凍してついでにバージョンに依存しないシンボリックリンクを貼っておきました。

[nkjm@mac]$ cd /opt
[nkjm@mac]$ sudo unzip ~/Downloads/ec2-api-tools.zip
[nkjm@mac]$ sudo ln -s ec2-api-tools-1.4.1.2 ec2-api-tools

次に必要な環境変数をセットします。

[nkjm@mac]$ sudo vi ~/.bash_profile
JAVA_HOME=/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
EC2_HOME=/opt/ec2-api-tools
EC2_CERT=/Users/nkjm/Dropbox/AWS/cert-5AR47DHHK3YULOREZJXFV7HMJJZGLH7J.pem
EC2_PRIVATE_KEY=/Users/nkjm/Dropbox/AWS/pk-5AR47DHHK3YULOREZJXFV7HMJJZGLH7J.pem
PATH=$PATH:$EC2_HOME/bin
export JAVA_HOME EC2_HOME EC2_CERT EC2_PRIVATE_KEY PATH

[nkjm@mac]$ . ~/.bash_profile

これでOKです。試しにRegionの一覧を表示するコマンドを叩いてみます。

[nkjm@mac]$ ec2-describe-regions
REGION	eu-west-1	ec2.eu-west-1.amazonaws.com
REGION	us-east-1	ec2.us-east-1.amazonaws.com
REGION	ap-northeast-1	ec2.ap-northeast-1.amazonaws.com
REGION	us-west-1	ec2.us-west-1.amazonaws.com
REGION	ap-southeast-1	ec2.ap-southeast-1.amazonaws.com

よさそうです。
あと、デフォルトのRegionはeu-east-1になっているので、例えばこれをTokyoに変更したい場合は、先ほど作成&編集した.bash_profileに次の一行を追加しておきます。

EC2_URL=https://ec2.ap-northeast-1.amazonaws.com

.bash_profileを編集したら.(ドット)コマンドで.bash_profileをリロードするのを忘れずに。

参考

with 2 comments

Written by 中嶋 一樹

3月 15th, 2011 at 5:17 pm

Posted in Uncategorized

Tagged with ,

nkjmkzk.netをAWSに移設・その手順書紹介

言うまでもなく震災によって甚大な被害が発生している我が日本ですが、その中でも発電所のダメージによる電力不足が深刻です。

微力ながら出来ることを、ということで自宅サーバで運用していたこのブログシステム:nkjmkzk.netをAWS EC2へ移設して、当面は節電のために自宅サーバはOFFにすることにしました。大した話ではないですが何かの参考になればと思い作業の流れを書いておきます。

nkjmkzk.netはOracle VM Server 2.2.1上で準仮想化モードのOracle Linux 5.6 64bitとして稼働しています。当初このVMイメージをなんとかかんとかしてそのままEC2にインポートしてインスタンス起動できないかなーと思いましたが、結局普通にEC2で既存のAMI(Amazon Machine Image)からインスタンスを起動してそのあと必要なファイル群だけ転送することにしました。というのも、Xenのイメージファイルについては現在のところアチョーな感じでインポートできるミラクルなツールは提供されておらずいささか厄介そうだなということと、このブログシステムの稼働に必要なソフトウェア群は全て–prefix=/srv/[ソフトウェア]というように指定して/srv配下にビルド&インストールされており、WordPressのコンテンツやMySQLのデータファイルも/srv配下に配置しています。なのでOracle LinuxのAMIから新規にインスタンス起動してここだけコピれば楽勝だと思ったからです。

[root@nkjmkzk.net]# ll /srv
lrwxrwxrwx  1 root root    34 Mar 13 16:06 mysql -> mysql-5.1.43-linux-x86_64-glibc23/
drwxr-xr-x 13 root mysql 4096 Mar 13 16:25 mysql-5.1.43-linux-x86_64-glibc23
lrwxrwxrwx  1 root root    12 Mar 13 16:06 nginx -> nginx-0.7.65
drwxr-xr-x 10 root root  4096 May 19  2010 nginx-0.7.65
lrwxrwxrwx  1 root root    10 Mar 13 16:06 php -> php-5.3.1/
drwxr-xr-x  7 root root  4096 Feb 10  2010 php-5.3.1
lrwxrwxrwx  1 root root    16 Mar 13 16:06 spawn-fcgi -> spawn-fcgi-1.6.3
drwxr-xr-x  4 root root  4096 Feb 13  2010 spawn-fcgi-1.6.3

ということでまずはサービスを停止して/srv以下を固めます。あと、各デーモン起動に必要なスクリプトが/etc/init.d配下に存在するのでそいつらも用意しておきます。

[root@nkjmkzk.net]# tar cvf /var/opt/nkjmkzk.net-srv-2011_03_12.tar.bz2 --use-compress-prog=pbzip2 /srv
[root@nkjmkzk.net]# cp /etc/init.d/{nginx,php-fcgi,mysql.server} /var/opt/

次にEC2でインスタンスを起動します。まずはRegionですが、本来であればレイテンシーの少ないTokyoを選択すべきところですが関東地方節電のためにAWSに移設しようってときにTokyoに移設してどうすんだよ、ということになるのでRegionにはUS Eastを選択します(微妙に一番ローコスト)。

次にAMIの選択。Community AMIsで今の環境に一番近いOracle Linux 5.5 64bitのAMI(ami-09d43a60)を選択。ちなみにCommunity AMIsで検索結果がでるまで30秒くらい時間がかかります。

インスタンスタイプはMicroを指定。セコくてすんません。でもこれくらいのリソースで起動できちゃうのがこれらのOSSのいいところ。残念ながらOracle Databaseだとがっつり2GBくらい必要になるのでLargeとかじゃないとキツい。Microだと一時間あたり$0.02なので一ヶ月で$14強かな。

余談だけどOracle Database Core Editionとかあったらいいのになと思う。Express Editionみたいなものだけど、もっとスリムダウンしたもので最新のバージョンのもの。

後はひたすらContinueをポチポチ押せばOK。数十秒でインスタンス(VM)が起動してきます。

次にGlobal IPを固定割り当てしてDNSレコードに登録したいのでElastic IPを発行します。Allocate New Addressをポチッとやると即座に固定Global IPが払い出されます。それを先ほど作成したインスタンスに割り当てます。

次にインスタンスに用意しておいたnkjmkzk.net-srv-2011_03_12.tar.bz2ファイル及び起動スクリプト群を転送します。

[root@nkjmkzk.net]# scp /var/opt/nkjmkzk.net-srv-2011_03_12.tar.bz2 root@50.17.222.51:/var/opt/
[root@nkjmkzk.net]# scp /var/opt/{nginx,php-fcgi,mysql.server} root@50.17.222.51:/var/opt/

インスタンスにログインしてファイルを展開します。

[root@ec2]# cd /srv
[root@ec2]# tar xvfj /var/opt/nkjmkzk.net-srv-2011_03_12.tar.bz2
[root@ec2]# cp /var/opt/{nginx,php-fcgi,mysql.server} /etc/init.d/

serviceコマンドで各デーモンを順に起動します。

[root@ec2]# service mysql.server start
[root@ec2]# service nginx start
[root@ec2]# service php-fcgi start

最後にnkjmkzk.netのDNSレコードを書き換えて今回取得したElastic IPを指定します。僕はValue Domainでドメインを取得してDNSもValue Domainが提供してくれているものをそのまま利用していますのでそちらでチョチョイと設定しました。

この他実際にはいらないサービス止めたり、OS全体をアップデートしたり、.vimrcファイルをいじったりしてますが、移設に最低限必要だった手順は以上です。今回はどちらかというと本質的にはEC2がどうっていうか/srv以下とかに実行環境まとめとくとポータブルだなーと再認識したという話でした。古典的な設計だけど古き良き、というかなんというか。

without comments

Written by 中嶋 一樹

3月 15th, 2011 at 10:00 am

Posted in Uncategorized

Tagged with ,