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をリロードするのを忘れずに。
参考
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以下とかに実行環境まとめとくとポータブルだなーと再認識したという話でした。古典的な設計だけど古き良き、というかなんというか。