さて、昨日(d:id:rx7:20080423:p1)はAWSに登録して、Amazon S3を軽く使うところまで紹介しました。
今日は、Amazon EC2を動かしてみて、最後に考察も書いてみたいと思います。
# Amazon EC2/S3については、d:id:rx7:20080423:p1 をご覧ください。
昨日も書きましたが、Amazon EC2は仮想マシンのホスティングサービスで、所謂レンタルサーバみたいなものですが、いくつかの制約事項もあります。
このEC2もHaaS(Hardware as a Service)形式での提供となるため、従量課金制となります。
以下に料金表を引用していますが、一番小規模のインスタンスで1時間あたり$0.1ながら、1vCPU(1Core)、1.7Gメモリと、なかなかお買い得です。
Instances $0.10 - Small Instance (Default) 1.7 GB of memory, 1 EC2 Compute Unit (1 virtual core with 1 EC2 Compute Unit), 160 GB of instance storage, 32-bit platform $0.40 - Large Instance 7.5 GB of memory, 4 EC2 Compute Units (2 virtual cores with 2 EC2 Compute Units each), 850 GB of instance storage, 64-bit platform $0.80 - Extra Large Instance 15 GB of memory, 8 EC2 Compute Units (4 virtual cores with 2 EC2 Compute Units each), 1690 GB of instance storage, 64-bit platform
あと、上記のインスタンスの料金とは別に通信料も発生しますが、以下の通り、1GBあたり$0.1〜と、こちらもなかなかお買い得な値段設定です。
Internet Data Transfer $0.10 per GB - all data transfer in $0.18 per GB - first 10 TB / month data transfer out $0.16 per GB - next 40 TB / month data transfer out $0.13 per GB - data transfer out / month over 50 TB Data transfer "in" and "out" refers to transfer into and out of Amazon EC2. Data transferred between Amazon EC2 and Amazon S3-US or Amazon SimpleDB, is free of charge (i.e., $0.00 per GB), except data transferred between Amazon EC2 and Amazon S3-Europe, which will be charged at regular rates.
と、まぁこんな感じなので、1ヶ月間動かしっぱなしで、ぼちぼち使われたとしても月に$80くらいでしょうか。バックエンドのインフラが"Amazon"ということを考えると素敵ですよね。
んじゃ、早速使ってみることにします。
証明書の取得
EC2を動かすには、X.509証明書が必要となります。
AWSのページの右部にある「Your Web Service Account」にマウスを乗せ、上から2番目の「AWS Account Identifiers」をクリックすると、以下のようなページに遷移します。
「X.509 Certificate」にある「Create Now」ボタンをクリックし、2つのファイル「Private Key file」と「X.509 Certificate file」を生成し、手元にダウンロードしておいてください。
Amazon EC2 Command-Line Tools
EC2のための操作コマンドが入った「Amazon EC2 Command-Line Tools」を導入します。
以下URL先からダウンロードして、解凍した後、適当な場所に配置してください。
- Amazon Web Services Developer Connection : Amazon EC2 Command-Line Tools
- http://developer.amazonwebservices.com/connect/entry.jspa?categoryID=88&externalID=351
尚、ツールの実行にはJavaランタイムが必要です。インストールされていない方は、あわせてインストールしてください。
配置が出来たら、次は環境変数の設定です。Linux環境でしたら、以下の要領でパスを通しましょう。
export JAVA_HOME=/usr/local/java export EC2_HOME=/usr/local/ec2-api-tools export PATH=$PATH:$JAVA_HOME/bin:$EC2_HOME/bin export EC2_PRIVATE_KEY=/home/rx7/pk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.pem export EC2_CERT=/home/rx7/cert-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.pem
※Windowsの場合は、setコマンドで環境変数の設定を行いましょう。
# ec2ver 1.3-19403 2008-02-01
設定が完了したら、上記のコマンドを実行し、バージョン番号が返ってきたらOKです。
イメージファイル(AMI)の選択
EC2で仮想サーバを起動するためには、AMI(Amazon Machine Image)が必要となります。
これは、Amazonが提供しているイメージもあれば、一般のユーザが公開しているものもあります。
公開されている全てのイメージを確認するには、以下のコマンドを実行します。
# ec2-describe-images -x all
全てのイメージが表示されるかと思います。結構多いですよね。EC2 on Railsのイメージあたりが気になるところ。
今回は、無難にAmazonが提供してくれている公式イメージを使ってみたいと思います。
Amazonが公開しているイメージの一覧を見るには以下のコマンドを実行します。
# ec2-describe-images -o amazon IMAGE ami-bd9d78d4 ec2-public-images/demo-paid-AMI.manifest.xml amazon available public A79EC0DB i386 machine IMAGE ami-26b6534f ec2-public-images/developer-image.manifest.xml amazon available public i386 machine IMAGE ari-a51cf9cc ec2-public-images/ec2-initrd-2.6.21.7-2.fc8xen.i386.manifest.xml amazon available public i386 ramdisk IMAGE ari-b31cf9da ec2-public-images/ec2-initrd-2.6.21.7-2.fc8xen.x86_64.manifest.xml amazon available public x86_64 ramdisk IMAGE aki-a71cf9ce ec2-public-images/ec2-vmlinuz-2.6.21.7-2.fc8xen.i386.manifest.xml amazon available public i386 kernel IMAGE aki-b51cf9dc ec2-public-images/ec2-vmlinuz-2.6.21.7-2.fc8xen.x86_64.manifest.xml amazon available public x86_64 kernel IMAGE ami-f51aff9c ec2-public-images/fedora-8-i386-base-v1.06.manifest.xml amazon available public i386 machine aki-a71cf9ce ari-a51cf9cc IMAGE ami-f21aff9b ec2-public-images/fedora-8-x86_64-base-v1.06.manifest.xml amazon available public x86_64 machine aki-b51cf9dc ari-b31cf9da IMAGE ami-a21affcb ec2-public-images/fedora-core-6-x86_64-base-v1.06.manifest.xml amazon available public x86_64 machine aki-a53adfcc ari-a23adfcb IMAGE ami-25b6534c ec2-public-images/fedora-core4-apache-mysql.manifest.xml amazon available public i386 machine IMAGE ami-23b6534a ec2-public-images/fedora-core4-apache.manifest.xml amazon available public i386 machine IMAGE ami-20b65349 ec2-public-images/fedora-core4-base.manifest.xml amazon available public i386 machine IMAGE ami-22b6534b ec2-public-images/fedora-core4-mysql.manifest.xml amazon available public i386 machine IMAGE ami-36ff1a5f ec2-public-images/fedora-core6-base-x86_64.manifest.xml amazon available public x86_64 machine IMAGE ami-2bb65342 ec2-public-images/getting-started.manifest.xml amazon available public i386 machine IMAGE ari-a23adfcb ec2-public-images/initrd-2.6.20-1.3002.fc6xen.ari.manifest.xml amazon available public x86_64 ramdisk IMAGE aki-9b00e5f2 ec2-public-images/vmlinuz-2.6.18-xenU-ec2-v1.0.i386.aki.manifest.xml amazon available public i386 kernel IMAGE aki-9800e5f1 ec2-public-images/vmlinuz-2.6.18-xenU-ec2-v1.0.x86_64.aki.manifest.xml amazon available public x86_64 kernel IMAGE aki-a53adfcc ec2-public-images/vmlinuz-2.6.20-1.3002.fc6xen.aki.manifest.xml amazon available public x86_64 kernel
今回は例として、この中の"ec2-public-images/fedora-8-i386-base-v1.06.manifest.xml"ってのを使ってみることにします。
ので、AMI IDである"ami-f21aff9b"をメモっておきましょう。
ログインキーの設定
起動には、キーが必要となるため生成し、パーミッションを適切に変更しておきます。
# ec2-add-keypair rx7_server | sed -e "1d" > rx7_server.id # chmod 400 rx7_server.id
インスタンスの起動
では、いよいよインスタンス(仮想マシン)を起動します。以下のコマンドを実行してインスタンスを起動させましょう。
# ec2-run-instances ami-f51aff9c -k rx7_server RESERVATION r-5d17ef34 xxxxxxxxxxxx default INSTANCE i-7739fa1e ami-f51aff9c pending rx7_server 0 m1.small 2008-04-22T09:23:43+0000 us-east-1b aki-a71cf9ce ari-a51cf9cc
上の例では、何もオプションをつけていないため、最も小規模なsmallインスタンスで起動します。より大きいインスタンスで起動したい場合は"--instance-type"オプションを使いましょう。
尚、このタイミングから課金が発生します。
# ec2-describe-instances RESERVATION r-5d17ef34 xxxxxxxxxxxx default INSTANCE i-7739fa1e ami-f51aff9c ec2-75-101-214-247.compute-1.amazonaws.com domU-12-31-39-00-79-51.compute-1.internal running rx7_server 0 m1.small 2008-04-22T09:23:43+0000 us-east-1b aki-a71cf9ce ari-a51cf9cc
インスタンスの状態を見るには、上記のコマンドを使います。"running"となっているので、無事起動しているみたいです!
上記の例では、起動したインスタンスは"ec2-75-101-214-247.compute-1.amazonaws.com"というアドレスがついているので、メモっておきましょう。
ポートの設定
初期状態では、全てのポートが閉じられている状態のようです。
以下のコマンドでSSHとHTTPだけ通すように設定します。
# ec2-authorize default -p 22 GROUP default PERMISSION default ALLOWS tcp 22 22 FROM CIDR 0.0.0.0/0 # ec2-authorize default -p 80 GROUP default PERMISSION default ALLOWS tcp 80 80 FROM CIDR 0.0.0.0/0
では、早速アクセス!
あらかじめ作っておいたログインキーを使ってSSHでアクセスします。接続先は事前にメモっておいたアドレスを利用します。
# ssh -i rx7_server.id root@ec2-75-101-214-247.compute-1.amazonaws.com __| __|_ ) Fedora 8 _| ( / 32-bit ___|\___|___| Welcome to an EC2 Public Image :-) Base --[ see /etc/ec2/release-notes ]-- [root@domU-12-31-39-00-79-51 ~]#
上記のような感じでログインできたら成功です!
動かしてみて・・・考察
早速ではありますが、サービスが実用的に動かせるかどうか知りたったので、実験的にRedmineを動かしてみました。
使ったイメージ(AMI)には、rubyとrubygemsはインストールされていたので、yumでmysql-serverとruby-devパッケージを、gemでrailsとmongrelをインストールすることで、すぐに動かすことができました。
周りの人にも見てもらいましたが、Redmineを動かしている限りは、想像していたよりモッサリ感はなく、普通にサクサク動いている感じです。細かい画像がたくさんあるサイトなど多くのリクエストが発生しそうなページについては、試していませんが実用に十分耐えうると感じました。
何より、私が衝撃的だったのは、今日初めてAmazon EC2を体験した私が、手ぶらな状態からわずか1時間半でインターネット上でRedmineのサービスを稼動し始めたことです。
これは物凄いイノベーションだ。普通なら秋葉原までサーバ買いに行って帰ってくるだけで1時間半かかりそうです。
誰でも簡単に、しかもイニシャルコスト・ゼロ!で、迅速にサービスを立ち上げられる時代がきました!
スケーラビリティについても悩む必要はないです。リソースはどんどん提供してもらえるし、利用した分だけ課金されるだけなのです。
もう、サーバのセッティングして通電してOSインストールして、、、なんてやっている時代ではないのかもしれません。
これに全て置き換えられるわけではないことは承知していますが、少なくともSaaSを補完する存在はHaaSであり、その代表格がこのAmazon EC2であることを覚えておくべきです。
まとめ
クラウドAMAZON EC2/S3のすべて (ITpro BOOKs)
- 作者: 並河祐貴,安達輝雄,ITpro/日経SYSTEMS
- 出版社/メーカー: 日経BP社
- 発売日: 2009/11/05
- メディア: 単行本
- 購入: 4人 クリック: 372回
- この商品を含むブログ (18件) を見る