Amazon EC2 で Windows サーバーを構築

価格は2014年7月現在のものです。現在 Amazon EC2 を利用しているので、コストのチェックを兼ねてこのページを時々更新しています。

Amazon EC2 は、クラウドの先駆者であり IaaS (Infrastructure as a Service) のサービスを提供しているので、自宅サーバーとほぼ同じ使い方をすることができる自由度の高いサービスです。Windows OS を利用する場合はリモートデスクトップを使って EC2 のサーバーの管理をおこないます。もちろん、DVD や USB を直接差し込んで使うことはできませんが、違いといえばそれぐらいで、自宅サーバーでの経験をそのまま生かすことができます。

Amazon EC2 の正式名は、Amazon Elastic Compute Cloud といいます。Elastic というのは弾力的に使えるというような意味です。好きなときに利用する事ができ1時間単位での課金なので、状況に応じた柔軟な利用が可能です。

1. 利用しての感想

Amazon EC2 を利用して感じたことは、Amazon EC2 は、VPS ではあるが単なる VPS ではなく、スケーラビリティや時間単位の課金という付加価値をつけているところが評価できると思いました。今までのようにサーバーを購入したりレンタルしたりする場合は、1台で100日のコストと100台で1日のコストでは大幅に違いましたが、Amazon EC2 ではコストが同じになります。100台を一度に使用するようなケースはそう多くはないと思いますが、そういう利用をしたい場合のコストが大幅に低くなりました。Amazon EC2 の素晴らしさは、そのような新しいビジネスチャンスを提供していることだと思います。

EC2 のデーターセンターは東京にもあります。東京リージョンは他のリージョンと比較するとやや割高ですが、伝送遅延の問題があるので、主として国内向けのWeb サーバーとして利用する場合には、海外サーバーは遅い?表示速度を測定してみたにメモをしたように東京リージョンを使用した方がいいと思っています。

「クラウド破産」というような言葉があって、日本ではクラウドの従量制が嫌われていますが、「3.コストについて」で計算しているので見ていただければわかるのですが、通常の使い方であればユーザーからのアクセスにより変動するデータ転送量等のコストはそれほど高くありません。自分が使っているケースだと1ヶ月で30万ページビューで約30GBの転送量なので500円程度です。これが10倍や100倍になれば、普通に管理していればすぐに気がつくと思うし、インスタンスには転送量等にアラームを設定することができるのでメールで知らせてくれるようにすることができます。転送量が増えた原因がユーザーからのアクセスの増加であれ喜ばしいことだし、原因によって、転送データの圧縮、Web サイトの停止、特定の IP アドレスからのアクセスの禁止等の対策を取るようにすればいいだけだと思います。

Amazon EC2 を利用する場合に最もメリットがあるのは、名前のとおり短期間の利用や時間、季節によって必要なリソースが大きく変動する場合です。例えば、平日のみ1日10時間しか使わない場合であれば、m3.large インスタンスが中度使用リザーブドインスタンスを利用して年1000ドルほどで利用できます。

2. Windows サーバーの構築について

Amazon EC2 で Windows サーバーを構築する場合、かなりの部分が自宅サーバーの場合と同じ操作で構築することができます。以下は、ASP.NET で Web サーバーを構築する場合の手順です。PHP、MySQL をインストールして動作させることも可能ですが、その場合は、自宅サーバーの方の PHPMySQL のページを参考にしてください。

  1. Amazon Web Service への登録
  2. EC2 で Windows 環境の構築 その1 リモートデスクトップで接続
  3. EC2 で Windows 環境の構築 その2 日本語 Windows、AMI の作成
  4. IIS のインストール
  5. FTP サーバーのインストール
  6. IIS マネージャーのリモート管理の設定
  7. SQL Server 2008 R2 Express のインストール

3. コストについて

3-1. 短時間利用について

ここでは、t2-small インスタンスを 東京リージョンで利用するとして計算しています。使用料が1時間あたり0.05ドル、EBC ボリューム使用料が1ヶ月1GBあたり0.08 ドル、EBS へのリクエスト使用料が100万回あたり0.08 ドル、帯域幅が1GBあたり発信で 0.201 ドル、受信は無料です。なお、EBS で SSD を利用することもでき、その場合は、1ヶ月1GBあたり0.12 ドルでEBS へのリクエスト使用料は不要です。

Windows Server を利用する場合は、既定では30GB のEBS ボリュームを利用するようになっています。ただし、システムディスクが 30GB の容量ではかなり厳しいので、起動の際に容量を拡張する場合が多いと思います。なお、t2-small インスタンスでは、メモリも厳しいいので、コストを節約しようと思えば Windows Server 2008 の32bit 版を利用した方がいいケースもあると思います。

1時間あたりの料金は6.8円ぐらいで、スポットインスタンスを利用するともっと安くなります。8時間借りても50円ぐらいで借りることができるので、クラウドは、Windows Server の短期間利用には最適です。

項目 東京
価格(ドル)
備考
インスタンス(small) 使用料 0.0500  
EBS ボリューム使用料 0.0067 60GB×0.08ドル/GB月/30日/24時間
EBS リクエスト分 0.0080 0.08ドル/100万回 10万リクエストと仮定
帯域幅(発信) 0.0000 0.201ドル/GB
帯域幅(受信) 0.0000 0ドル
0.0647 1$=105円として約6.8円(日本人が東京リージョンを使った場合は消費税が追加されます)

※上記以外に、OS を AMI 化(イメージ化)して保存するために、EBSスナップショット使用料が必要になりますが、圧縮されて保存されるので、データが特に多くなければ、1個につき1ヶ月で 1$ 以下です。

3-2. 長期間利用について

Web サーバーとして使用する場合のように長期間利用する場合は、一括払いをすれば、使用料が割引になるリザーブドインスタンスが利用できます。リザーブドインスタンスには、軽度、中度、重度という3種類の使用タイプがあり、軽度使用は一括払いの料金が安いが時間単価が高いため利用時間が短い場合に有利で、一方重度使用については一括払いの料金は高いが時間単価が安いため24時間常時稼働させているサーバー用に向いています。以下は、Web サーバーとして24時間動作させるので重度使用で計算しています。もし、昼間のみ2台で運用するのであれば、2台目では軽度使用や中度使用を利用することになります。

※重度使用の場合は、インスタンスを使用しなくても課金されるので注意が必要です。特に、t2 インスタンスの場合にはコスト差が少ないので重度使用を選択するかどうかは慎重に検討した方がいいと思います。

t2.small インスタンスの場合、1年で 192 ドルを前払いすると、使用料は、1時間あたり0.015 ドルになります。

以下では、Web サーバーとして利用すると仮定し、月100万ページビュー(micro インスタンスでは 50万ページビュー)、1ページビューで10リクエスト、帯域幅の発信側が30GB、受信側がその20 % と仮定して計算しています。

どの程度のコストになるかというと、1ヶ月にオンデマンドインスタンスで 5,200円、リザーブドインスタンス(一括払い)で約4,200円です。ページビューは100万ページビューで、帯域幅を30GBと仮定していますが、画像等が多いと帯域幅の消費が大きくなります。画像等の転送量が多くインスタンスを安定的に使用する場合には、通常の Windows VPS やさくらのクラウドを使用した方がコストが算出しやすく価格的にも有利になってきます。

小規模な Web サイトであれば micro インスタンスが利用できます。それだと月額使用料がリザーブドインスタンス(一括払い)で、2,250円程度なので、小規模なWebサイトでもリーズナブルなコストで利用できるのではないかと思います。なお、小規模といっても月に数十万ページビューぐらいまで対応できると思いますが、複雑なサイトになるとメモリが不足すると思います。

t2.small インスタンスの試算

項目 東京
価格(通常 $)
東京
価格(一括 $)
備考
()内が東京
インスタンス(small) 使用料 37.20 11.16 通常 $0.05×744時間
一括払 $0.015×744時間
〃一括払い1年   16.00 一括払 年192$÷12ヶ月
EBS ボリューム使用料 4.80 4.80 60GB×0.8ドル/GB月
EBS リクエスト分 0.80 0.80 100万×10回×0.08ドル/100万回
1ページビューで10リクエストが必要と仮定
EBSスナップショット使用料 0.95 0.95 10GB×0.095(0.1)ドル/GB月
帯域幅(発信) 6.03 6.03 1GB×30日×0.12(0.201)ドル/GB
帯域幅(受信) 0.00 0.00 0.2GB×30日×0ドル/GB
発信帯域幅の20%と仮定
49.78 39.74

1$=105円として、通常約5,227円、
一括払約4,173円

t2.micro インスタンスの試算

項目 東京
価格(通常 $)
東京
価格(一括 $)
備考
()内が東京
インスタンス(micro) 使用料 18.60 5.04 通常 $0.025×744時間
一括払 $0.018×744時間
〃 一括払い1年   7.67 一括払 年92$÷12ヶ月
EBS ボリューム使用料 4.00 4.00 50GB×0.08ドル/GB月
EBS リクエスト分 0.40 0.40 50万×10回×0.08ドル/100万回
1ページビューで10リクエストが必要と仮定
EBSスナップショット使用料 0.95 0.95 10GB×0.095ドル/GB月
帯域幅(発信) 1.81 1.81 0.3GB×30日×0.201ドル/GB
帯域幅(受信) 0.00 0.00 0.06GB×30日×0ドル/GB
発信帯域幅の20%と仮定
26.76 19.87 1$=105円として、通常約2,705円
一括払 約2,253円

4. 処理能力について

Amazon EC2 のsmall インスタンス及び micro インスタンスで Web サーバーとしてどの程度の処理ができるのかを調べてみました。まず、Apache に付属するベンチマークソフト ab を使って、実際に IIS の処理速度を計測してみました。ASP.NET+SQL Server 2008 R2 Express で作成したものを利用していますが、データベースへのアクセスは、1ページビューで3回程度です。結果の概要は、以下の「ab によるテスト結果の概要」のようになりました。

この結果で、おもしろいのは、small インスタンスよりも、micro インスタンスの方がいい結果になったということです。原因としては micro の方でCPU のバースト機能が有効に働いたということと、同一マシンを使っているユーザーの利用が少なかったということが考えられます。自宅サーバーの結果からみると、伝送に遅延があるため CPU がフルに動作することは少なく、CPU のバースト機能が有効に働いていると考えられますが、混雑時にどの程度の性能がでるのかは、長期間使ってみる必要があります。(注意:このテストは旧世代のc1-smallを使っています。現在はt2-smallを使えばバースト機能が利用できるようになっています。低価格帯では、CPUの能力を固定で提供されるよりも共用して能力が必要なときにバースト機能のような機能が使える方が処理能力は高くなります。)

以下の結果では、1秒間に約5件の処理ができますが、5 件の処理ができれば、どの程度のページビューのサイトに対応できるのかを計算すると、Web ページのアクセスは、ポアソン分布に従うと考えられるので、1秒間の処理が5件以内になる確率が99%以上になるようにするためには、1秒間に平均約 1.75 回のアクセスまでは大丈夫ということになります。それであれば、1時間で最大6000ページビューまで対応できるということになります。このサイトのアクセスの状況(早朝、土日祝祭日はアクセスが少ない)と同じような状態だとすると月間で約100万ページビューとなります。

4-1. small インスタンスについて

Windows ではありませんが、MOONGIFT がかって EC2 の small インスタンスを使用していたそうです( マイコミジャーナルの記事)。MOONGIFT は、月間80万ページビューで、その程度であれば small で十分対応できるということなので、テストの結果ともあっています。MOONGIFT は、Alexa ランキングでは、日本で約1000位となっていることを考えれば、重い処理をするのでなければ small インスタンスで、ほとんどすべての Web サーバーは対応できるということになります。

4-2. micro インスタンスについて

micro インスタンスについては、1分間に数十リクエスト程度のWebアプリのホスティングなどに向くとされており、テストの結果(1分間で100リクエスト)とほぼ一致しています。それであれば、月間数十万ページビューの Web サイトを処理できるのですが、micro インスタンスの場合には、CPU に負荷がかかるような処理だとその分処理できるページビューが減ってくると考えられます。例えば WordPress の場合であれば、キャッシュを使わない場合は 10分の1以下になると思います。また、メモリが 613 MB というのもかなり厳しい制約です。micro インスタンスを使用する場合は、できるだけスリムにするということが大事です。そうすれば、かなり安価に Windows VPS を利用することができます。また、CMS を利用したい場合は、Umbraco の利用をお奨めします。Umbraco は、シンプルで使いやすい画面のページを作成でき、キャッシュも良くできているので、CPU への負荷が少ないソフトです。

参考 Amazon EC2 ユーザーガイド  Micro Instance Concept

※ab によるテスト結果の概要

small インスタンス

Requests per second:    5.40 [#/sec] (mean)
Time per request:       1851.406 [ms] (mean)
Time per request:       185.141 [ms] (mean, across all concurrent requests)
Transfer rate:          114.76 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:      137  178  90.8    153     640
Processing:   585 1563 508.1   1401    2713
Waiting:      584 1164 510.2   1067    2688
Total:        745 1741 529.9   1552    2864

micro インスタンス

Requests per second:    6.18 [#/sec] (mean)
Time per request:       1617.093 [ms] (mean)
Time per request:       161.709 [ms] (mean, across all concurrent requests)
Transfer rate:          131.38 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:      128  155  61.2    141     587
Processing:   530 1358 408.8   1289    2683
Waiting:      529 1019 373.0    995    2543
Total:        669 1514 429.6   1430    2826

自宅サーバー

Requests per second:    29.28 [#/sec] (mean)
Time per request:       341.520 [ms] (mean)
Time per request:       34.152 [ms] (mean, across all concurrent requests)
Transfer rate:          622.10 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        9   32  12.1     29      75
Processing:   105  293  58.4    298     452
Waiting:       96  218  66.1    213     450
Total:        133  325  60.2    328     461

※ CPU は、Intel Atom の D510 を使用しています。