ラベル amazon の投稿を表示しています。 すべての投稿を表示
ラベル amazon の投稿を表示しています。 すべての投稿を表示

記事一覧

2012年1月23日月曜日

EnterpriseZine (EZ):連載:Amazon RDS for Oracleを使ったWebシステムの作り方(第1回)


ずいぶん前から依頼いただいたAmazon Web Services の記事。。年末にまとめたRDS for Oracle Database の記事を掲載いただきました。
EnterpriseZine (EZ):連載:Amazon RDS for Oracleを使ったWebシステムの作り方(第1回)ぜひご覧ください。まずはRDSテーマで4回の連載です。

よろしくお願いいたします。

2010年6月11日金曜日

Amazon Web Services Console が S3 をサポート

Amazonは着実にサービスをリリースしますね。
Googleも着実にサービスをリリースしてきていますがAmazonのほうが企業システム寄りの機能を地道にリリースしてきているように思います。

今回はAmazonが提供しているシステム管理者用のWeb ConsolでS3(ストレージサービス:99.999999999% availability)を管理できるというお知らせが届きました。



早速画面を見てみました。



ストレージなのでフォルダやファイル管理ですが直感的に操作することができて良いと思います。
もちろんすべてのリージョンをサポートしていますのでSingaporeに置いているファイルも管理できます。
ダウンロードが1ファイルづつしかまだ実行できないようなのは、改善してほしいですね。
(ファイルを選択して右クリックして表示されたメニューにDownloadがあります)

WindowsにインストールするようなCloudBerry Explorer for Amazon S3など便利なツールもfree版でありますが、AWS ConsolでS3をサポートしたことでWebブラウザがあればどこからでもAmazonのサービスを1つのコンソールから操作することができるのは大変便利ですね。

継続的にEnhanceされてくることは確実ですので期待したいと思います。

2010年5月22日土曜日

[TechMemo] 第12回 Amazon EC2 利用するリージョンのデフォルト

今回は前回2回にわたって掲載したAmazon EC2のリージョン移行の補足です。

[TechMemo]Amazon EC2 USリージョンからAPリージョンへの移行
[TechMemo]Amazon EC2 USリージョンからAPリージョンへの移行(後半)

私が利用していたUS EastではEC2のコマンドを実行する際にリージョン(region)を意識する必要がなかった(まあEC2環境でのデフォルトということでしょうが)のですがAsia Pacificリージョンではコマンド実行時にregionを指定しなければうまくいきませんでした。

コマンドのhelpを後からゆっくり読み直したところregionも環境変数で指定できることに気がつきました。

はじめから気がつかずにシェルを書き直してしまいました。とほほ。

region のデフォルトを指定するための環境変数は EC2_URL です。
APリージョンの指定は以下のようにします。

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

こうすればシェルはどこのリージョンでも同じように使うことができるわけですね。

まあ今考えてみれば当たり前ですね。
リージョン用の環境変数があるはずだとう感が働くなった私はそろそろ技術者としては厳しいかなぁ。。orz

環境構築やプログラミングの際には、感も重要ですよね。
皆さんはどう思いますか?

ではまた。

2010年5月11日火曜日

[TechMemo] 第11回 Amazon EC2 USリージョンからAPリージョンへの移行(後半)

今回は先日公開しようとしてしていた内容の後半部分を説明します。

なんか長くなってしまったのですが。。

内容サマリ
1)移行するEC2環境の構成について
2)AMIのリージョン間コピー/APリージョンでAMIの登録

*** 上記、二つの手順は前回に説明しています ***

3)Amazon EBS(Elastic Block Store)データの移行
4)移行後のシェルの修正
5)Amazon Machine Image(AMI)の再作成

Amazon EBS(Elastic Block Store)データの移行

Amazon EC2には不揮発性のディスクを提供するEBS(Elastic Block Store)というサービスがあります。
EBSはデータベースのデータなど永続的に保持したいデータの格納用に提供されたものです。
小職のテスト環境のデータベースは、Oracle社から無償で提供されている Oracle Database 10g Express Edition(XE) です。
このXEをEBS上に構築しています。
EBSを別のEC2リージョンに移行するコマンドは、見当たらなかった(たぶんない)のでLinuxのコマンドで移行作業を行いました。

*** 小ネタ: 無償のOracleはどこで手に入る? ***********************
◆Oracle Technology Network からDL

※ユーザ登録必須
※私はここからDLしたXEを自分のEC2にuploadしてOracle Database環境をEBS上に構築しました。

◆AmazonEC2のAMIもあった!
@US Eastリージョン
AMI ID:ami-98be5cf1
Source:incharge/www.mototaker.com/ja_JP.32/ruby-db-ami/oracle_10gR2_XE_Univ_32Bit-Ruby_on_Rails233_Server-1.0-image.manifest.xml
※AmazonのAMIでは日本語が使えるもの(Universal版)はあまりないのでご注意。
※上記のAMIは日本語っぽいですねw
※US East、APリージョンではキーワードoracleで検索してもありませんでした。
※APリージョンには製品版のOracleがバンドルされたAMIすら存在しません。
******************************************************************

*** 豆知識: リージョン間AMIコピーコマンド(ec2-migrate-image) ***
※昨年末くらいからEBS上にAMIを構築するサービスも提供されていますが、前回のBLOGで説明したAMIのリージョン間コピー用コマンド(ec2-migrate-image)はEBS上のAMIを移行できません。
******************************************************************

◆データ移行手順

@US Eastリージョンでの作業

1)EBSにあるすべてのファイルをtarなどでアーカイブ
2)アーカイブしたファイルをs3へアップロード

@Asia Pacificリージョンでの作業

3)APリージョンに登録したAMIの起動(前回のBLOGで説明したAMI)
4)EBS上にVolumを作成
5)S3からダウンロード
6)ダウンロードファイルの展開とファイルのアクセス権限変更

◆データ移行内容詳細

@US Eastリージョンでの作業

1)EBSにあるすべてのファイルをtar+gzipでアーカイブ

※EBSボリュームは/volというフォルダにマウントされています。
oracle関連のファイルはすべて/vol/oracle配下にありますので oracle フォルダ以下すべてをアーカイブして2GBづつのファイルに分割します。

cd /vol
tar czvf oracle.tar.gz ./oracle
split -b 500m oracle.tar.gz oracle.tar.gz.
mkdir /vol/oracleimg
mv oracle.tar.gz.* /vol/oracleimg/.

2)アーカイブしたファイルをs3へアップロード

EC2からS3へのアップロードはrubyで作成されたスクリプト:s3sync.rb で行います。
以下の例では、S3に101ora-ap バケットを作成しそこに /vol/oracleimg フォルダを
同一名でコピーします。

cd /usr/local/s3sync
export AWS_ACCESS_KEY_ID='xxxxxxxxxxxxxxxx'
export AWS_SECRET_ACCESS_KEY='xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'

ruby s3cmd.rb createbucket 101ora-ap
ruby s3sync.rb -r --delete /vol/oracleimg/ 101ora-ap:oracleimg

*** 小ネタ:s3sync.rb はどこで手に入る? *************************
以下の記事に書いてある通りやれば簡単に使えるようになります。
http://developer.amazonwebservices.com/connect/entry!default.jspa?categoryID=100&externalID=931&fromSearchPage=true

・s3sync.rbのセットアップ
wget http://s3.amazonaws.com/ServEdge_pub/s3sync/s3sync.tar.gz
tar -xzvf s3sync.tar.gz
cp -r s3sync/ /usr/local/
******************************************************************

@Asia Pacificリージョンでの作業

3)APリージョンに登録されているAMIの起動(前回のBLOGで説明したAMI)

※ここで起動されたAMIはrcが正しく動作しないためElasticIPも設定されずに動的なグローバルIPが割り当てられたままのとりあえずのインスタンスという状態です。

4)EBS上にVolumを作成

US Eastで使用しているボリュームは使えませんのでAPリージョン用にボリュームを作成します。
EC2コンソールで50GBのボリュームを作成後、フォーマット(/dev/sdh)してマウントします。

4-1.EC2コンソールで50GBのボリューム作成とアタッチ

コンソールのメニュー Volumes をクリックして EBS Volumes の画面を表示します。
「Create Volumes」をクリックすると以下の画面が表示されるので Size 入力エリアに50と入力します。
Availavility Zone:は現在インスタンスが起動しているZoneに合わせます。ボリュームはZone固有です。



※ec2-create-volumeというコマンドもあるのですがなぜか実行するとエラーになりました。
# ec2-create-volume --size 50 --availability-zone ap-southeast-1
Client.InvalidZone.NotFound: The zone 'ap-southeast-1' does not exist.

次に作成された Volume をデバイスに Attach します。
作成したVolumeはコンソールに表示されますので左のチェックボックスをチェックして「Attach Volumes」をクリックすると以下の画面が表示されるのでDevice:を選択して「Attach」ボタンをクリックします。



アタッチ後確認してみるとブロックデバイスができています。
# ls -al /dev/sdh
brw-r----- 1 root disk 8, 112 May 5 07:58 /dev/sdh

※コマンドで実行する場合は以下の通り
# ec2-attach-volume vol-80d160e8 --instance i-9dace8cf --device /dev/sdh

4-2.mkfsコマンドでデバイスのフォーマット(プロンプトはすべてyesとする実行例)

# yes | mkfs -t ext3 /dev/sdh
mke2fs 1.40.4 (31-Dec-2007)
/dev/sdh is entire device, not just one partition!
Proceed anyway? (y,n) Filesystem label=
OS type: Linux
Block size=4096 (log=2)

・・・省略・・・

This filesystem will be automatically checked every 25 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.

4-3.フォーマットされたデバイスのマウント

# mount /dev/sdh /vol

5)S3からダウンロード

作成したVolumeがファイルシステムから見えるようになったのでS3からoracle関連のアーカイブファイルをダウンロードします。
S3へのアクセスのために以下の環境変数を設定します。

# export AWS_ACCESS_KEY_ID='xxxxxxxxxxxxxxxx'
# export AWS_SECRET_ACCESS_KEY='xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
# export AWS_CALLING_FORMAT='SUBDOMAIN'
※US Eastでは環境変数 AWS_CALLING_FORMAT はデフォルトの REGULAR でよいので指定していませんでしたがAPでは必須です。(参照)

# cd /usr/local/s3sync
# ruby s3cmd.rb get 101ora-ap:oracleimg/oracle.tar.gz.ad /vol/oracle.tar.gz.ad &
# ruby s3cmd.rb get 101ora-ap:oracleimg/oracle.tar.gz.ac /vol/oracle.tar.gz.ac &
# ruby s3cmd.rb get 101ora-ap:oracleimg/oracle.tar.gz.ab /vol/oracle.tar.gz.ab &
# ruby s3cmd.rb get 101ora-ap:oracleimg/oracle.tar.gz.aa /vol/oracle.tar.gz.aa &
分割したファイルの結合
# cd /vol
# cat oracle.tar.gz.aa oracle.tar.gz.ab oracle.tar.gz.ac oracle.tar.gz.ad > oracle.tar.gz

6)ダウンロードファイルの展開とファイルのアクセス権限変更

# chown oracle oracle.tar.gz
# chgrp dba oracle.tar.gz
# su - oracle
% cd /vol
% ls
lost+found oracle.tar.gz
% tar xvfz oracle.tar.gz

◆sビットを付与
% chmod ug+s oracle
% chmod ug+s tnslsnr

移行後のシェルの修正

US EastリージョンからコピーしてきたAMIで起動されたインスタンスはrc(起動シェル)に記載された内容がUS Eastリージョン用になったままです。
ここではリージョン固有の記述がされたシェルの内容を修正します。

◆rcで実行させているシェルの修正について

1)Elastic IP Address
Elastic IP Addressとは固定IPを利用できるサービスです。
(Elastic IP Addressについては書きだめのテキストがあるのでこれも後日掲載します。鮮度はなくなってますが。。)
リージョンが変わればもちろんIPアドレスも振り直しですね。
まずはAWSのWebコンソールからAPリージョンのElasticIPを購入します。



購入したIPアドレスをインスタンスIDに関連付けなければいけません。
AmazonEC2のインスタンスIDは起動時に動的に付与されますので起動するたびに変化します。
起動後に手動で関連付けることももちろん可能ですが。。
インスタンス起動時に動的に関連付けるためのシェルが以下のようになります。
シェルをみるとわかると思いますが引数 region でAPリージョンの値を指定しています。
てっきりコマンドを実行しているインスタンスがデフォルトの region なると勝手に信じていたのでエラーになる理由がわからずちょっとハマりました。

#!/bin/bash
#
# Associate EC2 Elastic IP Address with INSTANCE
source /root/.ec2env
var1=`ec2din --region ap-southeast-1| grep running | gawk '{print $2}'`
#echo $var1
ec2assocaddr 購入したIPアドレス -i $var1 >/dev/null 2>&1

2)EBSのアタッチ
EBSを作成すると固定の識別ID(Volume ID)が付与されます。
インスタンスIDは起動時に動的に付与されますので起動ごとに変化します。
つまりEBSはインスタンス起動後にアタッチしてあげる必要があります。
そのための起動シェルは以下のようになります。
このシェルにも region 引数を追加しています。

#!/bin/bash
#
# Attach EBS VolumeID: vol-84ac00ec to INSTANCE
source /root/.ec2env
var1=`ec2din --region ap-southeast-1 | grep running | gawk '{print $2}'`
#echo $var1
ec2attvol --region ap-southeast-1 vol-84ac00ec -i $var1 -d /dev/sdh >/dev/null 2>&1
mount /dev/sdh /vol

Amazon Machine Image(AMI)の再作成

システム起動時のシェルを修正したら忘れずに再度AMIを作成します。

これを忘れてシステムを停止してしまうと設定が消えて苦労が水の泡なので注意しましょう!
※上記はRoot Device Type: instance-store

※EBS上にAMIを作成できるサービスも始まっているのでそれを利用すれば設定は消えません。

私のインスタンスはまだS3上に置いたAMIから起動するタイプです。
以下AMI再作成の手順です。

1)AMIのサイズは10GBまでという制限があるのでoracleが配置してあるボリュームをumountします。

umount /vol

2)AMIを作成するコマンドの実行

ec2-bundle-vol -d /tmp -k pk-xxxxxxxxxxxxxxxxx.pem -c cert-xxxxxxxxxxxxxxxx.pem -u 999999999 -r i386 -p oracle10gXE32bitUniv2

正常に終わると/tmpの下にmanifestファイルとAMIを10MB単位に分割したファイルがたくさんできています。

3)作成されたAMIをS3にアップロード

ec2-upload-bundle -r ap-southeast-1a -b tnoraclexe -m /tmp/oracle10gXE32bitUniv2.manifest.xml -a AccsessKey値 -s SecretAccessKey値

上記のコマンドが2)で作成したファイルをS3の tnoraclexe バケットにアップロードします。

4)S3に保管したAMIをAPリージョンに登録

ec2-register --region ap-southeast-1 tnoraclexe/oracle10gXE32bitUniv2.manifest.xml

※ここでも region 引数を指定しています。
US Eastでは指定する必要なかったのですが、ほとんどのコマンドで region 引数を明示的に指定する必要があるようですね。


以上、長々と書いてしまいましたがなんとなくお分かりいただけましたでしょうか?

おまけ

US East と AP ネットワークレイテンシを計測した結果の画面スナップショットを掲載します。
ググルとすでにBLOGなどで掲載しているのを見つけることができますね。

結論から言うとAPリージョンのほうがUS Eastに比べると2.5倍くらい早いですね。
いままでレイテンシーが大きいのではと懸念されていた方もAPリージョンならその心配もない様に思います。

ちなみにAmazonが提供しているAMIはデフォルトではpingは通らない設定になっているのでWebコンソールのSecurity Group設定でpingを通す設定してください。
ピングを通す設定は以下の通りです。

Protocol FromPort ToPort IP
-------------------------------------------
icmp -1 -1 許可するIPアドレス

◆以下レイテンシーの計測結果

1)ローカルPCからUS EastとAsia Pacificリージョンにping実行結果



2)US Eastインスタンスからwww.nikkei.comへping実行結果



3)Asia Pacificインスタンスからwww.nikkei.comへping実行結果



以上 前後半2回に分けて紹介したEC2インスタンスのリージョン間移行手順。

みなさまのお役立てば幸いです。

ではまた。

2010年5月10日月曜日

[TechMemo] 第10回 Amazon EC2 USリージョンからAPリージョンへの移行

相当ブランクが空いてしまったのでAmazonから提供されているサービスで私が利用しているのにご紹介してないサービスがいくつもあるのですが。。

先月末に待望のアジア圏でのAWSが開始しましたので、久しぶりにAmazonEC2ネタで記事を書きました。
US East(Virginia) リージョンに作成されているEC2サイトを Asia Pacific(Singapore) リージョンに移行する方法を簡単に説明します。

USのサイトに作成していたシェルがそのまま動くと思いきやそんなことはなかったので、少々ハマりました。(笑)
ハマった経験を皆様にお知らせして少しでもお役に立てばうれしく思います。

今回の内容サマリ
1)移行するEC2環境の構成について
2)AMIのリージョン間コピー/APリージョンでAMIの登録

*** 以下、二つの手順は次回に説明します ***

3)Amazon EBS(Elastic Block Store)データの移行
4)移行後のシェルの修正
5)インスタンス再起動

移行するEC2環境の構成について


Region:US East
OS:Linux
Root Device Type: instance-store(停止時にルートのイメージが消えるタイプ)
Database:Oracle 10g Express Edition
※データベースはAmazonEBSボリュームに配置
固定IP(ElasticIP)利用



上記の構成でrcにはEC2 Command Line Toolsコマンドを実行する以下のシェルを登録しています。
※このシェルがのちにハマった原因です。

1)固定IPアドレスの振り直し
※EC2インスタンスは起動時に動的にIPが割り振られる仕組みなのでIPが割り振られた後に購入している固定IPをマップするコマンドを実行する必要があります。
2)Amazon EBSのアタッチとmount
3)Oracle NetとOracle Databaseの起動

AMIのリージョン間コピー/APリージョンでAMIの登録


AWSはそれぞれのリージョンは独立したインフラ環境になっています。
したがって例えばUS Eastリージョンで作成したAMI(AmazonMachineImage)をAPリージョンで使用するには既存のAMIを予め新しいリージョンに転送してあげる必要があります。

◆Amazonが提供しているリージョン
US East(Virginia)
US West(California)
EU West(Ireland)
Asia Pacific(Singapore) ※今回新規に始まったリージョン

私がテストサイトとして使用しているのはUS Eastでしたのでそこに作成したAMIをEC2 Command Line Toolsのコマンドを使ってAPリージョンにコピーします。

※古いAPIにはAPリージョンに対応したコマンドがなかったので最新版をダウンロードして設定。
以前はec2-migrate-bundle というコマンドでコピーを作りましたが ec2-migrate-image に変わっています。

**** EC2 API Toolsの更新 ****
more .ec2env
export JAVA_HOME=/usr/local/java
export EC2_HOME=/usr/share/ec2/ec2-api-tools
export PATH=$PATH:$EC2_HOME/bin:$JAVA_HOME/bin
export EC2_PRIVATE_KEY=/root/.ec2/pk-xxxxxxxxxxxx.pem
export EC2_CERT=/root/.ec2/cert-xxxxxxxxxxxx.pem

cd tmp
wget http://s3.amazonaws.com/ec2-downloads/ec2-api-tools.zip
unzip ec2-api-tools.zip
cd /usr/share/ec2
ln -s /root/tmp/ec2-api-tools-1.3-51254 ec2-api-tools
*****************************

◆AMIコピーの作成

US EastのS3バケットに保管されているAMIをAP South EastのS3バケットにコピーします。
このコピーには非常に時間がかかりました。
全体で約1.4GBのイメージを10MBに分割されたファイルで転送していますが完了するのに約2時間10分もかかりました。

ec2-migrate-imageの実行例

# ec2-migrate-image -K pk-xxxxxxxxx.pem -C cert-xxxxxxxxxx.pem -o AccessKeyID -w SecretAccessKey --bucket 101oraclexe2 --manifest oracle10gXE32bitUniv2.manifest.xml --location ap-southeast-1 --reagion ap-southeast-1 --destination-bucket ora10xe-101ap

各パラメータの詳細は以下のURL参照
http://docs.amazonwebservices.com/AWSEC2/latest/CommandLineReference/

※認証用のプライベートキーと証明書はパラメータではなくて環境変数(EC2_PRIVATE_KEY、EC2_CERT)で指定してもOKです。
※AWS認証用のアクセスキーとシークレットアクセスキーを指定するオプションが今までのコマンドと違って -o -w なので注意!
いままでEC2コマンドを使っていた人はきっと -a -s を指定してしまうと思います。

Downloading manifest oracle10gXE32bitUniv2.manifest.xml from 101oraclexe2... OK
Copying 'oracle10gXE32bitUniv2.part.000' to 'ora10xe-101ap/oracle10gXE32bitUniv2.part.000'... OK
Copying 'oracle10gXE32bitUniv2.part.001' to 'ora10xe-101ap/oracle10gXE32bitUniv2.part.001'... OK
Copying 'oracle10gXE32bitUniv2.part.002' to 'ora10xe-101ap/oracle10gXE32bitUniv2.part.002'... OK
・
・
Copying 'oracle10gXE32bitUniv2.part.136' to 'ora10xe-101ap/oracle10gXE32bitUniv2.part.136'... OK
Copying 'oracle10gXE32bitUniv2.part.137' to 'ora10xe-101ap/oracle10gXE32bitUniv2.part.137'... OK
Your new bundle is in S3 at the following location: ora10xe-101ap/oracle10gXE32bitUniv2.manifest.xml

※実際にS3にファイルがコピーされたかどうかはS3用のクライアントツールで確認してみてください。
以下はCloudBerryで確認した例です。



◆APリージョンでAMIの登録
AMIをAPリージョンにコピーしただけではそのAMIを起動することはできません。
EC2コンソールのAMIメニュー(Register New AMI)からコピーしたAMIを登録します。

・RegionをAsia Pacificにして左側のリストメニューの「AMIs」をクリックします。
・表示された画面の「Register New AMI」をクリックして以下のウィンドウを表示してコピーしたAMIのmanifestファイルを登録します。
manifestは「バケット名/マニフェストファイル名」と指定します。



**** コピー元で以下のように登録コマンドを実行すると。。***
# ec2-register ora10xe-101ap/oracle10gXE32bitUniv2.manifest.xml
[root@domU-12-31-39-0E-D8-13 ~]# ec2-register ora10xe-101ap/oracle10gXE32bitUniv2.manifest.xml
Client.InvalidManifest: HTTP 301 (Moved Permanently) response for URL http://s3.amazonaws.com:80/ora10xe-101ap/oracle10gXE32bitUniv2.manifest.xml: check your manifest path is correct and in the correct region.
リージョンが正しくないと言って怒られます。
**********************************************************

若干、長くなったので後半は次の回に掲載することにします。

ではまた。

2009年9月11日金曜日

[TechDay] 第9回 Amazon S3用クライアント:CloudBerry S3 Explorer

Amazon S3のクライアントはFirefoxのアドオンソフトのS3 Organizerを使っていましたがS3にUploadしたときのファイルのタイムスタンプが表示されずいまいちだなぁと思っていました。

You Tubeの紹介ビデオやWeb上の紹介記事では表示されているに。。

とりあえず他にもないのかなと思ってAWSのリソースページで確認してみました。



S3 Organizerは星2つですが、なんと星4つの同じような機能ツールがあるじゃないですかー。

ということで早速ダウンロード&インストールしました。



独立したアプリケーションですがこちらのほうがいい感じです。星4つは正しいかも。

またファイルのタイムスタンプも表示されているので自動バックアップでUploadされたファイルも確認できて安心安心。

■こちらがCloudBerry S3 Explorerの画面

S3 Organizerをお使いの方は乗換お勧めします。

■S3 Organizerの画面

Uoload Timeが表示されていない。。

2009年1月9日金曜日

[TechDay] 第8回 Amazon EC2 : AWS Management Console

先ほどAmazonから新しいサービスのメールが届きました。
EC2の管理コンソール(Webアプリ)のBetaの案内です。
継続してどんどんサービスを出してきますね。すばらしい。

同様の機能はFirefoxではElasticfoxというプラグインでOkですが、Amazonが正式に
サポートするというのが継続性を考えると重要ですね。
またAWS Management ConsoleはID/パスワードだけで使えるというところが便利です。



さっそく試してみましたのでTechDayネタというほどでもありませんが。。
いくつか画面スナップショットを掲載します。

サインイン画面


https://console.aws.amazon.com/index
AWSのアカウントがあればID/パスワードだけで利用できます。(無償)
「Sign in to Amazon EC2 Console」ボタンをクリックしてID/パスワードでログイン



ログイン後のコンソール初期画面:EC2 Dashboard


AWSのダッシュボード。見やすいです。
「Launch Instances」クリックすると起動できるAMIのリストがポップアップで表示されるのも見やすいですね。

#あれ? Yahoo UI ぽいなと思ってページのソースを表示してみたらBINGOでした。
#やるなAmazon。。安く使えるものは何でも使うって感じですね。
#見習いたいところです。




自分のインスタンスリスト:Instances




AMI(マシンイメージ)一覧:AMIs


Elasticfoxと比べると全然見やすいですね。
VisibilityタブをクリックしてPrivateのAMIを先頭に来るようして自分のAMIにチェック
をしてAMIの詳細を表示しています。



セキュリティ設定一覧:Security Groups


Elasticfoxは自分のグローバルIPを取得してくれるけどこちらはまだまだといいう感じですね。
表示されている設定は特定のIPからのアクセスだけtcpで1521ポートへアクセス許可しています。



その他


その他にもElasticIPやElasticBlock用の機能なども付いていています。
また今後のサポートを表明している以下機能にも期待しています。
リリースされたらまた簡単な紹介をします!

* Monitoring, Load Balancing and Auto-scaling - View real-time monitoring of operational metrics within Amazon EC2, configure load balancing and auto-scaling rules through a web-based UI.
* Amazon S3 Support - Create and delete Amazon S3 buckets, upload and download objects through your browser, edit permissions, set log data, and manage URLs.
* CloudFront Support - Setup and administer content delivery distributions on Amazon CloudFront using a simple web-based tool on the AWS Management Console.

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を選択

2008年10月25日土曜日

[TechDay] 第6回 Amazon Elastic Compute Cloud (Amazon EC2)

第5回で約束したとおり今回はEC2の再起動をしてもOracle Net Serviceが正常に起動するための設定を説明します。


Oracle Net Serviceを起動するために必要な構成ファイル:listener.ora


Oracle Net Serviceの構成ファイルに記述する環境情報にはHOST名があります。
一般的なLinux環境では動的にHOST名を変更することはないためlistener.oraファイルは一度書けばよいことですが、EC2のHOST名は再起動すると以前の名前と変わってしまいます。
そのためlistener.oraに記述するHOST名はインスタンス起動時に動的に設定してあげる必要があります。


Oracleの自動起動シェルの変更


◆Oracleの自動起動シェル
/etc/init.d/oracle-xe
※/etc/init.dはシンボリックリンク

上記の起動シェルの中でOracle Net Serviceを起動する記述がありますがその時にlistener.oraを書き換えるコマンドを追加します。

◆listener.oraを動的に変更する方法
起動シェルでlistener.oraに記述するHOST名を変更してあげましょう。

以下に設定方法を示します。

1)listener.ora.orgファイルの準備
以下のようにHOST名に「%hostname%」など動的に変更するときの識別名を記述した種ファイル(listener.ora.org)を用意します。
****listener.ora抜粋*********************************************
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC_FOR_XE))
(ADDRESS = (PROTOCOL = TCP)(HOST = %hostname%)(PORT = 1521))
)
)
*****************************************************************

2)インストーラで作成されている起動シェルを修正します。
起動シェルの中でコールしている以下のファイルを修正します。

/etc/sysconfig/oracle-xe

このファイルはコメントを読めばわかりますが、システムの起動時にOracleを自動起動させるときの構成を指定するファイルです。


#This is a configuration file for automatic starting of the Oracle
#Database and listener at system startup.It is generated By running
#'/etc/init.d/oracle-xe configure'.Please use that method to modify this
#file

# ORACLE_DBENABLED:'true' means to load the Database at system boot.
ORACLE_DBENABLED=true

# LISTENER_PORT: Database listener
LISTENER_PORT=1521

# HTTP_PORT : HTTP port for Oracle Application Express
HTTP_PORT=8090

# Configuration : Check whether configure has been done or not
CONFIGURE_RUN=true

# 以降が変更部分 ********
# 種ファイルでlistener.oraファイルを上書きする
\cp $ORACLE_HOME/network/admin/listener.ora.org $ORACLE_HOME/network/admin/listener.ora
# hostnameコマンドで取得した文字列で%hostname%を置換
sed -i "s/%hostname%/`hostname`/g" $ORACLE_HOME/network/admin/listener.ora
# リスナー起動には上記まででOK
# ついでにNet Serviceに接続するためのクライアント用構成ファイル
# (TNSサービス名の定義)も修正
\cp $ORACLE_HOME/network/admin/tnsnames.ora.org $ORACLE_HOME/network/admin/tnsnames.ora
sed -i "s/%hostname%/`hostname`/g" $ORACLE_HOME/network/admin/tnsnames.ora
#************************


参考情報

◆Oracleの起動停止
/etc/rc.d/init.d/oracle-xe start
/etc/rc.d/init.d/oracle-xe stop

2008年10月19日日曜日

[TechDay] 第5回 Amazon Elastic Compute Cloud (Amazon EC2)

第5回の内容

Oracleがアマゾンに提供しているOracle 10g XE はシングルバイトのモジュールで日本語が使用できないのでアマゾンのLinuxのAMIにOracle 10g XE のUniversal版をインストールする説明をします。
OracleのサイトからOracle 10g XEのインストールを入手してAMIにコピーしてからは普通のLinuxにインストールする手順と同様です。簡単に以下のステップを説明します。

・OracleのサイトからOracle Database 10g Express EditionのRPMを取得
・Oracle Database 10g Express EditionのRPMをAmazon EC2インスタンスにコピー
・Oracle Database 10g Express Editionのインストール
・アクセスポートの解放
・AMIの作成
・AMIの登録

OracleのサイトからOracle Database 10g Express Editionを取得


以下のサイトからrpmをダウンロードします。
http://www.oracle.com/technology/software/products/database/xe/htdocs/102xelinsoft.html
ダウンロードするにはOracleのサイトへユーザ登録が必要でログイン後にライセンス条項への同意が必要なため一度ローカルのPCにダウンロードしてscp(SecureCopy)でアップロードしました。



上記画面上のAccept License Agreementのラジオボタンをクリックしてライセンス条項に同意して、Oracle Database 10g Express Edition (Universal)の oracle-xe-univ-10.2.0.1-1.0.i386.rpm (262,909,363 bytes) (cksum 2403796334) *RPM package をクリックしてダウンロードします。

Oracle Database 10g Express EditionのRPMをAmazon EC2インスタンスにコピー


第2回で紹介したSSHクライアントのPuTTYに付属のscpコマンド:pscpを使ってEC2インスタンスにRPMをコピーします。250MBぐらいのファイルのアプロードに約2時かぐらいかかりました。
ちなみに弊社はのインターネット回線はフレッツ光です。

以下、実行例)
C:\AWS>pscp -i id_rsa-my-test-keypair.ppk oracle-xe-univ-10.2.0.1-1.0.i386.rpm root@ec2-67-202-25-135.compute-1.amazonaws.com:/tmp
oracle-xe-univ-10.2.0.1-1 | 256747 kB | 35.2 kB/s | ETA: 00:00:00 | 100%

Oracle Database 10g Express Editionのインストール


※詳しくはインストールガイド(英語)を見てください。

システム要件は以下の通りです。
OS
Red Hat Enterprise Linux RHEL3 and RHEL4
Suse SLES-9
Fedora Core 4
Red Flag DC Server 5.0/MIRACLE LINUX V4.0/Haansoft Linux 2006 Server (Asianux 2.0 Inside)
Debian 3.1

必要なパッケージ:
glibc - 2.3.2
libaio - 0.3.96

Unix・Linux系のOracleはKernelパラメーターを設定しなければいけませんがXEのインストーラはチェックして値が小さい場合は勝手に変更してくれるようです。

・システム要件の確認
libaio と glibc がインストールされているか確認します。



libaio はデフォルトでは入っていないのでインストールします。





・RPMを使ったOracle XEのサイレントインストールを行います。

コマンドラインから以下のように実行してインストールしてOKですがここではサイレントインストールの手順を説明します。

# rpm -ivh /downloads/oracle-xe-univ-10.2.0.1-1.0.i386.rpm

◆サイレントインストール手順
1)RPMファイルを配置するディレクトリの作成
※わかりやすくするためにインストールガイドと全く同じようなディレクトリ構成にしました。

2)アップロードしたRPMのmv
3)サイレントインストール用のパラメータファイル(responsefile)の作成
4)サイレントインストール用のシェル作成
5)サイレントインストール用シェルの実行

# mkdir /downloads        (1)
# mv /tmp/oracle* /downloads   (2)
# ls /downloads
oracle-xe-univ-10.2.0.1-1.0.i386.rpm
#
# ls -al
合計 257020
drwxr-xr-x 2 root root 4096 2008-10-01 06:29 .
drwxr-xr-x 23 root root 4096 2008-10-01 06:24 ..
-rw-r--r-- 1 root root 262909363 2008-10-01 05:23 oracle-xe-univ-10.2.0.1-1.0.i386.rpm
-rw-r--r-- 1 root root 35 2008-10-01 06:21 responsefile
-rwxr--r-- 1 root root 196 2008-10-01 06:29 xesilentinstall.sh
#

(3)で作成したresponsefile(5行のテキストファイル)
# more responsefile
8090     <--- Oracle 10g XE のWeb管理アプリポート(デフォルト8080)
1521     <--- Oracle database listenerのポート(デフォルト1521)
ここはsysのパスワード
ここはsystemのパスワード
y      <--- OS起動時にOracleも自動起動するかの指定(yesで自動起動)

(4)で作成した起動シェル
# more xesilentinstall.sh
#!/bin/bash

rpm -ivh /downloads/oracle-xe-univ-10.2.0.1-1.0.i386.rpm > /var/log/XEslilentinstall.log

/etc/init.d/oracle-xe configure < /downloads/responsefile >> /var/log/X
Esilentinstall.log

5)サイレントインストール用シェルの実行
#./xesilentinstall.sh
#

※インストールログ(/var/log/XEsilentinstall.log)を確認しましょう。
# more /var/log/XEsilentinstall.log
準備中... ###############################################
###
This system does not meet the minimum requirements for swap space. Base
d on
the amount of physical memory available on the system, Oracle Database 1
0g
Express Edition requires 1024 MB of swap space. This system has 895 MB
of swap space. Configure more swap space on the system and retry the in
stallation.
oracle-xe-univ ############################################
######
Executing Post-install steps...
You must run '/etc/init.d/oracle-xe configure' as the root user to
configure the database.


Oracle Database 10g Express Edition Configuration
-------------------------------------------------
This will configure on-boot properties of Oracle Database 10g Express
Edition. The following questions will determine whether the database sh
ould
be starting upon system boot, the ports it will use, and the passwords t
hat
--続ける--(52%)
will be used for database accounts. Press to accept the default
s.
Ctrl-C will abort.

Specify the HTTP port that will be used for Oracle Application Express [
8080]:
Specify a port that will be used for the database listener [1521]:
Specify a password to be used for database accounts. Note that the same
password will be used for SYS and SYSTEM. Oracle recommends the use of
different passwords for each database account. This can be done after
initial configuration:
Confirm the password:

Do you want Oracle Database 10g Express Edition to be started on boot (y
/n) [y]:
Starting Oracle Net Listener...Done
Configuring Database...Done
Starting Oracle Database 10g Express Edition Instance...Done
Installation Completed Successfully.
To access the Database Home Page go to "http://127.0.0.1:8090/apex"
#

◆Oracleユーザの環境変数設定

Linuxのロケールを設定してOracleの提供するシェルを実行すると言語系の環境変数が設定されます。.bash_profileに以下の設定をします。
1)LANGの設定
2)oracle_env.sh の呼び出し

# su - oracle

-bash-3.2$ ls -al
合計 28
drwxr-xr-x 4 oracle dba 4096 2008-10-01 07:01 .
drwxr-xr-x 3 root root 4096 2008-10-01 06:29 ..
-rw------- 1 oracle dba 275 2008-10-01 06:55 .bash_history
-rw-r--r-- 1 oracle dba 189 2008-10-01 07:01 .bash_profile
-rw------- 1 oracle dba 1520 2008-10-01 07:01 .viminfo
drwxr-xr-x 3 oracle dba 4096 2008-10-01 06:29 app
drwxr-xr-x 3 oracle dba 4096 2008-10-01 06:29 oradata
-bash-3.2$ pwd
/usr/lib/oracle/xe
-bash-3.2$ vi .bash_profile
export LANG=ja_JP.UTF-8
. /usr/lib/oracle/xe/app/oracle/product/10.2.0/server/bin/oracle_env.sh

-bash-3.2$


アクセスポートの解放


◆Elasticfoxの画面から行う例



ElasticfoxのSecurity Groupsタブをクリックすると現在解放されているポートが表示されます。EC2のセキュリティはEC2のオーナー(ユーザ)毎に任意のグループを作成(複数可能)してそこに対してポリシーを設定します。作成したグループをインスタンス起動時に指定してセキュリティを有効にします。
デフォルトでdefaultというグループがあるので何も指定しない場合はdefaultグループに設定したセキュリティが有効になります。

上記の画面は、Your Groupsにリストされているグループを選択して右クリックしてメニューが表示されている状態です。

ここで Grant a new permission on this security group を選択してクリックすると以下の画面が表示されます。



この画面から解放するプロトコル、ポートやアクセス元の制限を設定します。
上記の例はTCP/IPを8090ポートで指定したIPアドレスからだけアクセスすることが出来る設定です。

◆AWS用コマンドラインツール(ec2-api-tools)から行う例

C:\AWS>ec2-authorize default -p 8090 -s 192.168.0.10/32
GROUP default
PERMISSION default ALLOWS tcp 8090 8090 FROM CIDR 192.168.0.10/32

AMIの作成


これでとりあえずOracle 10g XEのUniversal版のセットアップが終了したのでこの状態でAMIの作成をします。AMIの作成は第2回で説明していますのでそのとおりやるだけです。

・AMIにRSAキーペアのバンドル
認証ファイルとPキーをAMI環境へコピー(Secure copy)する
C:\AWS>pscp -i id_rsa-my-test-keypair.ppk pk-キー名.pem cert-キー名.pem root@ec2-67-202-25-135.compute-1.amazonaws.com:/mnt
pk-キー名 | 0 kB | 0.9 kB/s | ETA: 00:00:00 | 100%
cert-キー名 | 0 kB | 0.9 kB/s | ETA: 00:00:00 | 100%

C:\AWS>

・EC2にコピーしたRSAキーペアをバンドルしたAMI(oracle10gXE32bitUniv)を作成
※AMI名は任意。
# ec2-bundle-vol -d /mnt -k /mnt/pk-キー名.pem -c /mnt/cert-キー名.pem -u EC2のユーザID -r i386 -p oracle10gXE32bitUniv



・S3にAMIファイルの格納用フォルダを作成(101oraclexe)
※S3に作成するフォルダ名は任意。
・S3にAMIファイルをupload
# ec2-upload-bundle -b 101oraclexe -m /mnt/oracle10gXE32bitUniv.manifest.xml -a アクセスキー -s シークレットキー




AMIの登録


・EC2へ作成したAMIを登録
C:\AWS>ec2-register 101oraclexe/oracle10gXE32bitUniv.manifest.xml
IMAGE ami-AMIの番号

C:\AWS>

・登録されたAMIをElasticfoxで確認します。



これでEC2のインスタンスを停止してもまたこのAMIを利用して現在の状態でインスタンスを再起動できるのですが。。実はここで問題が起きます!
普通にインストールしたままだと再起動するとリスナーが起動しません。

問題の原因は以下にあります。
・EC2のインスタンスは起動するたびにIPアドレスが変わってしまいます。
・Oracleのリスナーはhost名またはIPアドレスを構成ファイルに明記します。

次回はこの問題の解決について説明したいと思います。

2008年10月10日金曜日

[TechDay] 第4回 Amazon Elastic Compute Cloud (Amazon EC2)

EC2については久しぶりの掲載です。
EC2上のOracle XEは文字コードが WE8MSWIN1252 でシングルバイトのデータしか扱えなかったことは以前ここでも書きました。
とはいえ実際に使えるところまでの画面スナップショットなどキャプチャしたので、どんな感じでEC2に乗っていてどんなステップでOracleが使えるようになるのかを簡単に説明したいと思います。

EC2を使うために使用するツールも以前紹介したコマンドラインツールではなくてFirefoxのプラグインを使いましょう。

Elasticfoxのインストール


Firefoxで利用できるEC2用のツールに Elasticfox というツールがあります。以下のURLからダウンロードしてインストールしましょう。
http://developer.amazonwebservices.com/connect/entry.jspa?externalID=609

以下、上記のページを表示したところです。


ここで「Download」ボタンをクリックすると以下のページが表示されるので「今すぐインストール」ボタンをクリックしてプラグインをインストールします。インストールしたらFirefoxを再起動してください。



Elasticfoxで出来ることとEC2上のOracle XEの起動


このツールで出来ることは結構あります。
・AMIのリストを表示する(キーワードで検索できます!)
・インスタンスを起動する(起動されたインスタンスは別のペインにリストされる)
・インスタンスを停止する
・インスタンスをリブートする
・コンソールを表示する
・AMIを登録する(S3上にバックアップしたAMIを登録)
・AMIを削除する
・起動中のインスタンスリストを選択してSSHで接続する(事前コンフィグが必要)
・自分のAMIの起動権限設定
・インスタンスのポートへのアクセス権限設定(セキュリティグループ(ロール)作成)
・公開鍵と秘密鍵のキー・ペアの作成
・Elastic IP(EC2インスタンスで固定IPを実現するための予約されたIPアドレス)の確保
・Elastic Block Store (EBS) ボリュームの作成
など

以下は、キーワードに「orac」としてAMIのリストを表示した画面です。



以下の画面はコンソールログを表示している例です。



AMIのリストからAMIIDが ami-7acb2f13 (表示が oracle10g_XE_32Bit_image となっているのですぐにわかります)を選択してグリーンの電源スイッチみたいなボタンをクリックするとインスタンスが起動します。起動するまで5分程度かかっていたと思います。

起動したらSSHでログインします。
初めてログインをすると以下のような使用許諾を確認される画面が出てきますのでそれなりに回答していきます。









以下はOracle XE の管理用アプリケーション(webアプリ)のログイン画面です。
ご覧のとおり英語です。(^^;



これでは残念!なので次回は、自分でOracle10g XE Universal版をインストールして使うまでを解説します!

ではまた。
#今回の記事はやや雑ですが。。すみません。

2008年10月2日木曜日

Amazon EC2 running Windows Server or SQL Server

先日、Amazon EC2 上で Oracle databaseを正式にサポートされるということはここでも書きましたが、早速、確認してみたところ Oracleのフリー版 Oracle 10g XE のAMIがあったので試してみました。

ところが残念。。
立ち上げてみると。。(-.-;
このEC2上の Oracle xe は文字コードが WE8MSWIN1252 でした。
シングルバイトのデータしか扱えん。。とほほ。
Oracleには文字コードセットの変更ができるユーティリティもあるのですが WE8MSWIN1252 から UTF-8 はサポートされていません。

断念して自分で Universal の XE をダウンロードしてインストールしてみました。
この手順は今度また掲載しますね。

さて、前置きが長くなりましたが、今日、知らせたかったことはAmazon EC2 上で Windows Server と SQL Server がサポートされるとい知らせが届いたことです。

Amazon はどんどん来ますね。
仮想化サーバーの利用も巷では盛んになってきているようですし、ITインフラの電気料金みたいな時間貸しもほんとに近くに迫ってきているように思います。

以下は、Amazonから届いたメールです。

Dear Amazon Web Services Developer,

We are excited to let you know that Amazon Elastic Compute Cloud (Amazon EC2) will offer you the ability to run Microsoft Windows Server or Microsoft SQL Server starting later this Fall. Today, you can choose from a variety of Unix-based operating systems, and soon you will be able to configure your instances to run the Windows Server operating system. In addition, you will be able to use SQL Server as another option within Amazon EC2 for running relational databases.

Amazon EC2 running Windows Server or SQL Server provides an ideal environment for deploying ASP.NET web sites, high performance computing clusters, media transcoding solutions, and many other Windows-based applications. By choosing Amazon EC2 as the deployment environment for your Windows-based applications, you will be able to take advantage of Amazons proven scalability and reliability, as well as the cost-effective, pay-as-you-go pricing model offered by Amazon Web Services.

Our goal is to support any and all of the programming models, operating systems and database servers that you need for building applications on our cloud computing platform. The ability to run a Windows environment within Amazon EC2 has been one of our most requested features, and we are excited to be able to provide this capability. We are currently operating a private beta of Amazon EC2 running Windows Server and SQL Server. Please go to http://aws.amazon.com/windows if you are interested in being notified later this Fall when the offering is released broadly.

Sincerely,

The Amazon Web Services Team

2008年8月22日金曜日

[TechDay] News - Amazon Elastic Block Store for Amazon EC2

amazonのWebサービスで基幹システムを構築できる環境がきますね。

以下は昨日届いたAWSユーザ向けの新サービス案内メールです。




新サービスを簡単に一言で言うとEC2で使えるSAN(Storage Are Network)ということです。
1つのディスクボリュームを1GBから1TBの大きさで作成することができるそうです。

EC2はインスタンスを停止してしまうとEC2上で動いていたインスタンス全体(データも含む)が消滅することは以前のBLOGで説明しましたが、それが理由でEC2ではあまりRDBMSを動かすようなアプリケーションは向かないとされてきました。

今回の新サービス Elastic Block Store (EBS) が登場したことで上記の懸念が解消されますね。

なかなか面白くなってきました。

クラウドコンピューティングが本格的に展開される日も近いと思います!

チャレンジしたいお客さんからプロトタイプの依頼が来たらがんばるのになぁ。。
まあ依頼がなくても興味があるのでやってしまいますが。。

評価結果はまたこのBLOGでお知らせしたいと思います。

以下関連ニュースサイトです。
http://www.itworld.com/storage/54421/amazon-adds-persistent-storage-compute-cloud

関連BLOG
http://blog.rightscale.com/2008/08/20/why-amazon-ebs-matters/

2008年8月19日火曜日

[TechDay] 第3回 Amazon Elastic Compute Cloud (Amazon EC2)

前々回、前回とEC2のGetting Startedについて説明してきました。今回はこのテーマの最終回になります。

最終回は 自分のインスタンス・イメージの作成とバックアップ です。

EC2のインスタンスは停止してしまうとすべての内容が消えてしまうということを前回説明しました。今回はいろいろカスタマイズしたAMIが再利用できるようにする方法について説明します。

自分用のAMIを作成するにはAmazonのストレージサービスであるAmazon Simple Storage Service(Amazon S3)を利用します。S3については以前書いたBLOGを参照してください。

自分用AMI作成手順


Amazonがデフォルトで用意しているAMIをカスタマイズして自分用のAMIを作成するためのステップは以下の通りです。

1)デフォルトのAMIから好みの物を選択してAMIを起動します。
2)カスタマイズします。
3)自分のキー・ペアを現在稼動しているインスタンスへコピーします。
4)稼働中のインスタンスに自分のキー・ペアをバンドルしてイメージコピーを作成します。
5)作成したイメージコピー(自分用のAMIファイル)をS3にアップロードします。
6)S3へアップロードしたAMIファイルをec2に登録

こうすることで5)の時点のインスタンスイメージがS3へバックアップされた状態になります。
4)と5)の処理を定期的に実施することでシステム全体のバックアップがされていることになります。
これはなかなか便利ですね。
本番環境のバックアップとしてだけではなく、本番環境のバックアップをすぐに他のインスタンスとして起動することも出来るのでリアルなテスト環境としても活用できそうです。

それでは以降でそれぞれのステップについて実行した例を交えながら説明します。
2)までは第2回までの内容を参照してください。以下の説明は第2回目の最後の状態になっているとそのままスムーズに実行できると思います。

ステップ3 キー・ペアのコピー


第2回で生成したキー・ペアを現在起動中のインスタンスにセキュア・コピーを使ってコピーします。Windows用のセキュア・コピーはPuTTYの pscp を使用して行います。

C:\pscp -i PuTTY用秘密鍵ファイル(*.ppk) EC2用秘密鍵ファイル(*.pem) EC2用認証ファイル(*.pem) ユーザ名@ドメイン名:コピー先フォルダ名(フルパス)



以下の図は /mnt に正しくコピーされたかSSHでログインして確認した画面です。



ステップ4 キー・ペアをバンドルしたイメージコピー作成


インスタンス環境にキー・ペアがコピーされましたのでこのキーをバンドルしたAMI(インスタンス・イメージ)を作成します。PuTTY(SSH)でインスタンスに接続してコマンド ec2-bundle-vol を使って作成します。

# ec2-bundle-vol -d AMIの保存先パス -k EC2用秘密鍵ファイル(フルパス/*.pem) -c EC2用認証ファイル(フルパス/*.pem) -u EC2のユーザID(AWSのアカウントNO(数値)) -r [i386|x86_64] -p 自分のAMI用プレフィックス

以下実行例です。AMI作成は10分ぐらいかかりました。





/mnt 配下に出来上がったファイルを確認します。
指定したプレフィックスがついた約10MBのファイルがたくさんできているのがわかります。




ステップ5 イメージコピー(自分用のAMI)をS3へアップロード


/mnt 配下に作成したイメージファイルをS3へアップロードします。
あらかじめS3へイメージファイル格納用のフォルダを作成しておきましょう。

S3へのアップロードは、以下のコマンドで行います。

# ec2-upload-bundle -b S3格納用フォルダ(バケット)名 -m manifestファイルのパス -a AWSのAccess Key ID -s AWSのSecret Access Key

S3へのアップロードはほんの1分ぐらいで終わりました。





ステップ6 S3へアップロードしたAMIファイルをec2に登録


ステップ5までで自分用AMIファイルが出来上がりバックアップもとることができました。
作成したAMIファイルを使用して自由にインスタンス起動するには、作成したAMIをEC2へ登録する必要があります。登録はec2-api-toolsのec2-registerコマンド使ってクライアントから行います。

C:\mydoc\Prototype\AWS>ec2-register 101tn-bucket/myami-200808.manifest.xml

コマンドを実行するとAMI IDが割り振られます。以降はこのAMI IDを使用してインスタンスを起動することができます。



以下は現在のインスタンスを停止して登録したAMI IDでインスタンス起動した例です。
※テスト用で起動したインスタンスは必ず停止しましょう! 安いとはいえ課金されていますので。