2010年11月以来、Amazonは最小限のクラウドホスティングパッケージ
を無料で提供しています(1年間、新規ユーザーのみ)。 長い間、私はそれが何であるかを感じるつもりでした、そして、景品は最後のわらでした。 専用サーバー全体で、私は何もすることがありませんでした。 Ruby on Railsに興味があるため、ほんの数か月前にLinuxに移りました。好奇心urious盛なティーポットの参考例です。 この記事が私のようなダミーのクラウドへの理想的な入り口になることを願っています。
Amazon Web Servicesにサインアップするのは簡単なプロセスです。 インターネット用の支払いカードがある場合は、フォームに記入するだけです。 そうでない場合は、「Visa virtuon、e-card、internet card、banks、%your country name%」などのリクエストをグーグルで検索し、結果を読んだ後、銀行に行きます。 私の家に一番近いのはプラベックス銀行の支店で、インターネットバンキングはありませんが、その条件は十分に受け入れられます。 カードのメンテナンス費用は年間3ドルで、最低残高は5ドルです。 3日後にアクティベートしました。アカウントへのリンクに失敗した後、銀行のホットラインに電話して
CVV2なしで認証を
許可する必要がありました 。 5分後、最初のサーバーを起動しました。
AWSの第一印象-あまりにも多くのもの-それを理解することはありません! 多数のFAQ、マニュアル、タブ、新しいあいまいな用語。 何よりも、リンクにジャンプするのではなく、
このマニュアルの対角線に沿って読むことで助けられました。 269ページありますが、多くは最初にスキップできるので、心配しないでください。
AWSとは何か、またAWSの各パーツがどのように相互接続されているかを理解するための最も生産的なメタファーは、データセンターです。 アカウントコントロールパネルは、共有ホスティングまたはシェル専用サーバー管理者としてではなく、クラウドデータセンターではなく、通常の作業を自動化するソフトウェアとして最もよく想像されます。 つまり、管理者に電話してサーバーを再起動したり、同じ3つをインストールしたり、ハードウェアをアップグレードしたりする代わりに、ボタンをクリックすると、すべてが数時間または数日ではなく数分で自動的に行われます。
インスタンスはサーバーラックです。 AMIは、データセンターにインストールできるカスタマイズされたサーバーイメージです。 ボリューム-任意のサーバーに挿入できるネジ。 スナップショット-ネジのバックアップ。 セキュリティグループ-1つまたは複数のサーバーを非表示にできるファイアウォール。

どのように機能しますか? このすべてのクラウドの豊富さの中心的なオブジェクトは、Amazon Machine Image、またはAMIです。 AMIには、S3バックアップとEBSバックアップの2つのタイプがあります。 EBS-backedは、仮想ネジ
-EBSボリュームを備えた仮想マシンイメージです。 S3-backed-ネジのないマシン。AmazonにEBSがなく、すべてのファイルをS3に保存する必要があった時代の困難な遺産。 S3がサポートするサーバーは、夕方にオフ(停止)にすることはできません。また、翌日の午前中にオン(開始)にでき、破棄(終了)できます。必要に応じて、新しい(起動)を作成できます。 S3に保存されなかったデータはすべて失われます。 EBSに裏打ちされたAMIを使用する方がはるかに簡単であるため、これについて深く掘り下げることはしませんでした。ユーザーの観点からは、隣の部屋のどこかに立つ実際のマシンと違いはありません。
Amazonのサーバーには、あらゆる好みの数百のサーバーイメージが格納されており、ほとんどすべてのサーバーOSとプリインストールソフトウェアのオプションが多数あります。
ベアUbuntu Server 10.04の
公式イメージを選択しました。 技術的には、これらのAMIはすべて
XEN 準仮想マシンです。 原則として、このようなイメージを最初から自分で作成できますが、私にとってサーバーはRuby on Railsの単なるスタンドに過ぎないため、時間を無駄にしませんでした。 作業を開始する前に、ローカルマシンにec2-api-toolsパッケージをインストールする必要があります:
sudo apt-get install ec2-api-tools
サーバーはSSHによって制御され、ユーザー名はubuntu、外部IPアドレスとドメイン名はパネルまたはec2-describe-instancesコマンドの出力に表示されます。キーはAWSマネジメントコンソールで最も簡単に生成され、ローカルマシンに保存されます( 、ダミーが最も簡単であり、コマンドラインのJediはローカルでキーを使い慣れたコードを使用してAmazonにアップロードする方が簡単かもしれません。 ファイアウォール(セキュリティグループ)はデフォルトですべてを閉じるため、接続を試みる前に
22番目のポートを開く必要があります。 静的IPがある場合は、セキュリティを強化するために、ソース(IPまたはグループ)フィールドで指定できます。 SSHセッションを終了するときにマシンを停止するには、sudo poweroffを書き込むだけで、停止モードになります。 引き続き動作させたい場合は、exitを記述します。

すぐに注意する必要がある最初の落とし穴は、無料パッケージに10 GBのEBSボリュームが含まれており、標準のAmazon AMIにはデフォルトで
15ギガバイトのネジが搭載されていることです。 この場合、ベアシステムの所要時間は1G未満です。 インターネットには、EBSセクションを拡張する方法に関する記事がたくさんありますが、それを減らす方法に関する賢明な記事はありません。 原則として、ネジ全体を新しい小さなパーティションに再同期することをお勧めしますが、それ以降はシステムを起動できませんでした。 私
はいくつかのブログのコメントのどこかに解決策を見つけました。 そして、私はヘッドストックに乗りました! 実際、私は私の人生で初めて
ddを使用しました。 もちろん、ブロックサイズを指定するのを忘れました(デフォルトでは512バイトのみ)。 さらに、システムファイル+ 9.3ギガバイトのゼロが長時間コピーされることを理解するためのインテリジェンスがあり、ファイルシステムのサイズを1Gに削減しました。 しかし、ddにこれを通知するだけでは十分ではありません。 そして、彼はファイルシステムを気にせず、
10ギガバイトのパーティションが終了したときにのみ停止しました。 512バイト単位の10ギガバイトは冗談ではありませんが、EBSボリュームのI / O操作の無料の月間制限は1,000,000だけです。 さらに、2台目のサーバーを急いで起動したときに、標準AMI(m1.small、以下のようなものを参照)のデフォルト構成をt1.microに変更するのを忘れましたが、これも無料ではありません。 合計:ddあたり22セント、1時間あたり10セントのm1.smallインスタンス。
これらの操作の後、
10ギガバイトのネジでAMIの独自バージョンを保存しました(インスタンスのコンテキストメニューで1クリック)。 AMIを作成すると、システムのスナップショットが自動的に作成されます。 実際にはAMI-これはスナップショットであり、仮想マシンとしてのみ登録され、ami-xxxxxxxxという形式の識別子を持ちます。 EBSボリュームとは異なり、ファイルの実際の使用量に関係なく、全額に対して支払いが行われますが、スナップショットは圧縮形式で保存され、増分的に作成されます。 そのため、S3ではほとんどスペースを取りません。 1つのAMIから複数のインスタンスを実行でき、それぞれに独自のネジがあります。たとえば、MySQLデータベースなどのアプリケーションデータを保存するには、すぐに別のサーバーが必要になりますが、すでに費用がかかります。 Webサーバーとしてのマシン。 専用のデータベースサーバーの場合、チューニングに煩わされることさえありません;
Amazonには既製のものがあります。 もう一つの重要なポイント。 マシンが作成されると、EBSボリュームが作成され、破棄されると(つまり、停止ではなく終了します!)、デフォルトで破棄されます。 それは論理的です-彼らはサーバーをラックから投げ出し、ネジも残しました。 確かに、マシンの電源がオンになっているかどうかに関係なく、EBSのボリュームごとにお金が滴ります。 ただし、必要に応じて、サーバーからネジを
取り出して自宅に置いておくことができます。
次に、これらのm1.smallとt1.microの意味について詳しく説明します。 使用可能なすべての構成の
リストを次に示します。 t1.microには、
ma-a-a-a-a-a-lazyのニュアンスが1つあります。 他のすべてのタイプとは異なり、マイクロプロセッサのリソースは可変です。 触れるまではm1.smallの2倍ですが、負荷がかかるとすぐに疲れてベースボードの下に落ちます。 つまり、cronを悪用したり、ビデオを変換したり、毎分数十件以上の要求のピーク負荷でプロジェクトを維持しようとしたりしないでください。 最初の数秒間はスマートに機能しているように感じました-サイトへのリクエストや複数のリクエストを一度に処理するには十分ですが、Rubyインタープリターのコンパイルには非常に長い時間がかかりました。 Midnight Commanderや小さな宝石などの小さなパケットが超高速でインストールされると、WebサーバーはThinkPad X100eよりも3倍速く起動します。 私の意見では、これは非常に合理的な妥協案です。 ここで人々はテストを行いましたが、速度は低下しますが、お金のために
マイクロインスタンスはスモールインスタンスの1.5倍クールです。サーバーとシステムのハードウェアを処理した後、Ruby on Railsに進みます。 どういうわけか、
RVMとは関係がありませんでした。最初は長い間インストールできませんでしたが、いくつかのgemにバグがあったため、ローカルマシンのソースからRuby 1.9.2-p0をインストールしました。 だから私はここでやった。 同時に、ついに、Ubuntu 10.04にRails3 + Ruby 1.9.2 + MySQLをインストールするために必要なすべてが山積みになりました。
sudo apt-get install libxml2 libxml2-dev libxslt1-dev gcc g++ build-essential libssl-dev libreadline5-dev zlib1g-dev linux-headers-generic libsqlite3-dev mysql-server libmysqlclient-dev libmysql-ruby
wget ftp.ruby-lang.org//pub/ruby/1.9/ruby-1.9.2-p0.tar.gz
tar -xvzf ruby-1.9.2-p0.tar.gz
cd ruby-1.9.2-p0/
./configure —prefix=/usr/local/ruby
make && sudo make install
export PATH=$PATH:/usr/local/ruby/bin # .bashrc
sudo ln -s /usr/local/ruby/bin/ruby /usr/local/bin/ruby
sudo ln -s /usr/local/ruby/bin/gem /usr/bin/gem
echo «gem: —no-ri —no-rdoc» > $HOME/.gemrc
sudo gem install tzinfo builder memcache-client rack rack-test erubis mail text-format bundler thor i18n sqlite3-ruby mysql2 rack-mount rails
ruby -v
rails -v
私は本物の本番サーバーを持つというアイデアに触発され、Apach、Nginx、Lighttpd、そしてMongrelクラスターをSmart Railsの本に書かれているようにインストールする準備をしました。 WEBrickは、実際には、実際の実稼働サーバーでは動作しません! 苦しむ必要があります。 しかし、Phusion Passengerは、結局のところ、Apacheなどで旅行する単なる乗客ではありません。 スタンドアロンモードでは、nginxが含まれます。 実際、sudo gem install passengerを知っておく必要があります。 彼自身がアプリケーションの場所を見つけ、設定を選択せずにアプリケーションを起動します。
ユーザーマニュアルは、簡単に触れています。 ただし、DTSTTCPW!
結果は何ですか? 今、私は徐々にアマゾンウェブフェイスのリンクからec2-api-toolsに突っ込んでいます。 ここでは、原則として、複雑なものはありません-ec2-describe / run / start / stop / terminate-instances、ec2-describe / create / delete-volumesなど 指示では、すべてがインテリジェントに記述されています。 Amazonの
価格計算機は、無料のパッケージが支払われた場合、月に約20ドルかかることを示しています。 独自の専用サーバーに加えて、2ダースのサーバー、ファイアウォール、ロードバランサー、その他のグッズを備えたデータセンター全体で1ペニーを試すことができます。 数分でパブリックAMIの形で利用可能なOSをすべて上げて、それが生きていると感じる能力。 同じ数分で数十のコアと数百ギガバイトのメモリを備えたクラスターを持ち上げて駆動する機能-1時間あたりわずか数ドル。 要するに、私は満足しています!
upd:スナップショットからAMIを作成するときに、このような不具合がありました。インスタンスは起動しているように見えましたが、接続はありませんでした。 システムログの最後に、この種の行がいくつかありました。
modprobe: FATAL: Could not load /lib/modules/2.6.16-xenU/modules.dep: No such file
AMIを作成する場合、次のようなカーネルを明示的に指定する必要があることがわかります。
ec2-register -n image_name -d image_description --root-device-name /dev/sda1 -b /dev/sda1=snap-XXXXXXXX::false --kernel aki-XXXXXXXX
必要なカーネルイメージを見つける方法 サーバーの構築に基づいて、明らかに動作している元のパブリックインスタンスを実行し、ec2-describe-instancesコマンドでカーネルバージョンを確認します。