分类: 系统运维
2009-04-03 14:40:14
このEC2もHaaS(Hardware 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くらいでしょうか。のが""ということを考えると素敵ですよね。
んじゃ、早速使ってみることにします。
証明書の取得
EC2を動かすには、X.509証明書が必要となります。
のページの右部にある「Your Service Account」にを乗せ、上から2番目の「 Account Identifiers」をすると、以下のようなページに遷移します。
「X.509 Certificate」にある「Create 」をし、2つの「Private file」と「X.509 Certificate file」を生成し、手元にしておいてください。
EC2 -Line Tools
EC2のための操作が入った「 EC2 -Line Tools」を導入します。
以下先からして、した後、な場所に配置してください。
Developer Connection : EC2 -Line Tools
http://developer.amazonwebservices.com/connect/entry.jspa?categoryID=88&externalID=351
尚、ツールの実行にはが必要です。されていない方は、あわせてしてください。
配置が出来たら、次はの設定です。でしたら、以下の要領でを通しましょう。
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
※の場合は、setでの設定を行いましょう。
# ec2ver
1.3-19403 2008-02-01
設定が完了したら、上記のを実行し、番号が返ってきたらOKです。
()の選択
EC2で仮想を起動するためには、( )が必要となります。
これは、が提供しているもあれば、一般のが公開しているものもあります。
公開されている全てのを確認するには、以下のを実行します。
# ec2-describe-images -x all
全てのが表示されるかと思います。結構多いですよね。EC2 on のあたりが気になるところ。
今回は、にが提供してくれている公式を使ってみたいと思います。
が公開しているの一覧を見るには以下のを実行します。
# 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/-8---v1.06.manifest."ってのを使ってみることにします。
ので、 である"-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"というがついているので、っておきましょう。
の設定
初期状態では、全てのが閉じられている状態のようです。
以下のでとだけ通すように設定します。
# 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 -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 ~]#
上記のような感じでできたら成功です!
動かしてみて・・・
早速ではありますが、が実用的に動かせるかどうか知りたったので、的にを動かしてみました。
使った()には、とはされていたので、で-serverと-devを、でとをすることで、すぐに動かすことができました。
周りの人にも見てもらいましたが、を動かしている限りは、していたよりモッサリ感はなく、に動いている感じです。細かいがたくさんあるなど多くのが発生しそうなページについては、試していませんが実用に十分耐えうると感じました。
何より、私が衝撃的だったのは、初めて EC2を体験した私が、手ぶらな状態からわずか1半で上でのを稼動し始めたことです。
これは物凄いだ。ならまで買いに行って帰ってくるだけで1半かかりそうです。
誰でも簡単に、しかも・!で、迅速にを立ち上げられる時代がきました!
スケーリティについても悩む必要はないです。はどんどん提供してもらえるし、利用した分だけされるだけなのです。
もう、のセッティングして通電してして、、、なんてやっている時代ではないのかもしれません。
これに全て置き換えられるわけではないことは承知していますが、少なくともを補完するはHaaSであり、その代表格がこの EC2であることを覚えておくべきです。
EC2は素晴らしいなんだけど、いくつか制約事項があるよ、と書きました。
AMI作成
その制約事項の1つが、()を起動しているうちは問題ないけど、を停止させてしまうと、保存したの内容が失われてしまうというものです。
尚、のは問題ありません。の停止は、的にはの電源をOFFにするです。
しかし、解決策が無いわけではありません。
にはS3という素晴らしい大容量が備えられています。S3のに必要なを保存するようにすれば良いわけです。
しかも、EC2からS3への量はのようですので安心です。S3に保存している容量さえ気にしておけば大丈夫です。
というわけで、早速、自分でした()をS3へ保存する方法を書いてみます。
全ての場合にあてはまるわけではありませんが、前回、 EC2で提供されている公式()を選んだのですが、当然ながら国外で作られているなので、がになっていました。
あとは、インターネット上で稼動させるのであれば、のなんかもやっておくと良いですね。
yumを使っているディストリビューション(, ...)なら、以下のような感じ。
# yum update
を使っているディストリビューション(, ...)なら以下のような感じでしょうか。
# apt-get update
# apt-get upgrade
イメージの作成にはX.509証明書が必要です。
尚、イメージ化されるのは/dev/sda1のみです。/dev/sda2(/mnt)はイメージ化されないので注意が必要です。
# scp -i rx7_server.id *.pem root@ec2-75-101-214-247.compute-1.amazonaws.com:/mnt
上記のような感じで、EC2インスタンスのマシンへ証明書を転送します。
次にイメージファイルへと変換します。EC2上で実行してください。
ec2# cd /mnt/
ec2# ec2-bundle-vol -d /mnt --privatekey pk-xxxxx.pem --cert cert-xxxxx.pem --user xxxx-xxxx-xxxx
上記では、「--privatekey」と「--cert」の後ろにはした2つのpemを、「--」の後ろには、番号(Account )を指定します。
尚、番号は、のページの右部にある「Your Service Account」にを乗せ、上から1番目の「Account Activity」を後に遷移するページに記されています。
尚、化にはしばらくがかかります。今回、私は公式をそれほどしていない状態で試してみましたが、約10分程かかりました。
をS3へ保存するには、以下のを実行します。
ec2# ec2-upload-bundle --bucket ${アップ先のバケット名} --manifest image.manifest.xml --access-key ${Access Key ID} --secret-key ${Secret Access Key}
「--bucket」は所謂保存先(ット)です。ットの作成についてはコチラで。
例えば"rx7"というットを使っているとすると、あくまで例ですが"rx7/ec2_images/"とでもしておくと良いでしょう。
次に、先ほどアップしたを自分のに登録します。一度EC2から抜けて実行するようにしてください。
# ec2-register rx7/ec2_images/fedora/image.manifest.xml
IMAGE ami-be799cd7
上記の感じで、先程アップしたときに指定したットを、で指定するようにします。
# ec2-describe-images -o self
IMAGE ami-be799cd7 rx7/ec2_images/fedora/image.manifest.xml xxxxxxxxxxxx available private i386 machine aki-a71cf9ce ari-a51cf9cc
上記で、登録したを確認することが出来ます。
ちなみに参考にですが、登録したをしたくなったら、、、
# ec2-deregister ami-be799cd7
こんな感じです。"ec2-describe-images"で確認し、 を指定する形でします。
まず、先程登録したを確認し、" "をします。以下の例だと"-be799cd7"となります。
# ec2-describe-images -o self
IMAGE ami-be799cd7 rx7/ec2_images/fedora/image.manifest.xml xxxxxxxxxxxx available private i386 machine aki-a71cf9ce ari-a51cf9cc
では、以下のような感じで起動してみましょう。要領は で紹介したものと同じです。
# ec2-run-instances ami-be799cd7 -k rx7_server
起動後、にし確認してみましょう。前回の作成をしたまでの内容が残されていると思います。
このように、あらかじめ()を作ってしまえば、その状態から何個でもを起動することができます。技術のですね。
まだ、の停止方法を書いていなかったので紹介します。とはいっても一発なので簡単です。
まず、の状態を確認してみましょう。
# 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"と表示されているので、稼動している状態です。
落としたいの「」("i-"から始まる番号)をっておきます。上記の例だと"i-7739fa1e"となります。
# ec2-terminate-instances i-7739fa1e
INSTANCE i-7739fa1e running shutting-down
先程ったを指定してシャットダウンします。
# 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 shutting-down rx7_server 0 m1.small 2008-04-22T09:23:43+0000 us-east-1b aki-a71cf9ce ari-a51cf9cc
状態を確認すると、シャットダウン中は"shutting-down"と表示されていますね。
# ec2-describe-instances
RESERVATION r-5d17ef34 xxxxxxxxxxxx default
INSTANCE i-7739fa1e ami-f51aff9c terminated rx7_server 0 m1.small 2008-04-22T09:23:43+0000 aki-a71cf9ce ari-a51cf9cc
しばらくして、停止すると"terminated"と表示されていることが確認できるかと思います。
今回(2008/4/24時点)したと、の公式"ec2-public-images/-8---v1.06.manifest."について、を残しておきます。
ec2# cat /proc/version
Linux version 2.6.21.7-2.fc8xen (mockbuild@xenbuilder1.fedora.redhat.com) (gcc version 4.1.2 20070925 (Red Hat 4.1.2-33)) #1 SMP Fri Feb 15 12:39:36 EST 2008
2.6.21のです。
ec2# cat /proc/cpuinfo
processor : 0
vendor_id : AuthenticAMD
cpu family : 15
model : 65
model name : Dual-Core AMD Opteron(tm) Processor 2218 HE
stepping : 3
cpu MHz : 2600.000
cache size : 1024 KB
fdiv_bug : no
hlt_bug : no
f00f_bug : no
coma_bug : no
fpu : yes
fpu_exception : yes
cpuid level : 1
wp : yes
flags : fpu tsc msr pae mce cx8 apic mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt rdtscp lm 3dnowext 3dnow up pni cx16 lahf_lm cmp_legacy svm extapic cr8legacy ts fid vid ttp tm stc
bogomips : 6502.68
clflush size : 64
は、のの2000ですね。2.6GHzもの。
ec2# free
total used free shared buffers cached
Mem: 1747764 402560 1345204 0 52624 272184
-/+ buffers/cache: 77752 1670012
Swap: 917496 0 917496
当然ですが、も公表どおり1.7GBのっかっています。
ec2# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda1 10321208 1292032 8504888 14% /
/dev/sda2 153899044 192076 145889344 1% /mnt
none 873880 0 873880 0% /dev/shm
もまた公表どおり160GB使える状態です。まぁ、、、前述の通りを停止すると内容は失われてしまいますが。
ですが、先日ではあるものの、を停止してもを保存したままにしておけるが新たにされました。年内には正式に提供され始めるとか。期待できそうです!
それは、を停止し、再度起動するたびにが変更されてしまうことです。が変わってしまう可能性があることは、へ登録しているを書き直さなければいけない可能性があるため、その間は名前解決できなくなり、を公開する上では非常に不便です。
しかし、先月3/27にから「Elastic 」と呼ばれるが開始されました。"Elastic "は、 EC2のに割り当てられるのことを指します。
では、この"Elastic "の概要を簡単に説明した後、使い方を紹介します。
EC2では、はEC2用の内部セグメントで稼動しており、上位ので外部のとは1:1のになっているようです。で、このが動的に割り振られる(Public と呼ばれています)ため、普段はの停止・起動を行う度にが変更されるわけです。
まぁ、貴重なというを有効するというでは、妥当なやり方ではありますよね。
そこで、登場するのが、この"Elastic "、つまりです。簡単に言うと、の起動時に、動的なPublic ではなく、静的なElastic を割り当てる(の設定)ことで、を実現しているようです。なので、Elastic の実体は、でWAN側のをに振っているということになります。
"Elastic "に関して、いくつか注意点を箇条書きでまとめておきます
と、こんなところでしょうか。
では、を取得します。
尚、版以降の「 EC2 -Line Tools」が必要ですので、古いを使われている場合はしましょう。"ec2ver"で確認できます。
# ec2-allocate-address
ADDRESS 75.101.157.145
上記のを発行するたびに新しいが取得され、その分の費用が発生しますので注意してください。
次に、以下ので稼動しているに対して先ほど取得したを割り当てます。
# ec2-describe-instances
RESERVATION r-f845bd91 xxxxxxxxxxxx default
INSTANCE i-429a582b ami-be799cd7 ec2-75-101-198-23.compute-1.amazonaws.com domU-12-31-39-00-68-14.compute-1.internal running rx7_server 0 m1.small 2008-04-24T09:38:18+0000 us-east-1b aki-a71cf9ce ari-a51cf9cc
まず、割り当てるべきの""を確認します、上記の例だと"i-429a582b"となります。確認が出来たところで、に対してを割り当ててみます。
# ec2-associate-address -i i-429a582b 75.101.157.145
ADDRESS 75.101.157.145 i-429a582b
上記ので割り当て完了です。"ec2-describe-instances"でが変わっていることが確認できるかと思います。
尚、最初にも書いたとおり、注意点としては実際にが反映され、通信できるようになるまでには数分かかります。を公開している場合などには注意が必要です。
では、次はに割り当てているを引き剥がしてみましょう。
# ec2-describe-addresses
ADDRESS 75.101.157.145 i-429a582b
まずはしているで取得している一覧を確認し、割り当てられているを確認し、引き剥がすおよびを確認します。
# ec2-disassociate-address 75.101.157.145
ADDRESS 75.101.157.145
上記のでを引き剥がします。
# ec2-describe-addresses
ADDRESS 75.101.157.145
その後、もう一度、取得している一覧を確認するとに割り当てられていないことが確認できます。
尚、引き剥がした後、"Public "が振られることになりますが、こちらも実際に反映されるまでがかかります。
とまぁ、こんな感じで割と簡単にを割り当てることが可能です。
あとは、割り当ててから即座に反映されればなんですが、そこは今後のに期待しましょう。