Note: Please go to docs.rightscale.com to access the current RightScale documentation set. Also, feel free to Chat with us!
Home > jp > Clouds > Amazon Web Services (AWS) > 初心者向け実例 > Railsサーバ(1台構成)

Railsサーバ(1台構成)

 

目的

このチュートリアルでは、RightScale プラットフォームでキーとなる概念をいくつか紹介し、さらに Rails アプリケーションを EC2 で簡単に導入するための方法もご紹介します。すべての AWS アクティビティを設定、カスタマイズ、監視するには、RightScale Dashboard を使用します。

目次

  1. 1. 目的
  2. 2. 前提条件
  3. 3. 概要
  4. 4. 手順
    1. 4.1. ServerTemplate の概要
    2. 4.2. "トライアル" ServerTemplate を使用した EC2 でのサーバの起動
    3. 4.3. 実行中のサーバのプレビュー
    4. 4.4. "開発者" ServerTemplate を使用した EC2 でのサーバの起動
      1. 4.4.1. MySQL データベースダンプの作成
      2. 4.4.2. S3 へのデータベースダンプのアップロード
      3. 4.4.3. Rails "開発者" ServerTemplate の選択
      4. 4.4.4. ServerTemplate のクローン作成
      5. 4.4.5. ServerTemplate の入力の修正
      6. 4.4.6. ServerTemplate のコミット
      7. 4.4.7. サーバの起動
      8. 4.4.8. Rails アプリケーションのプレビュー
    5. 4.5. サーバの停止
  5. 5. See also

前提条件

このチュートリアルはどのタイプのアカウント (Free または Premium) でも完了することができます。

概要

いくつかのヘルプ画面はデフォルトで自動的に表示されます。ヘルプ画面を表示しない場合は、Hide Help ボタンをクリックしてください。

rails_diagram_v1 (1).gif

 

ServerTemplate は軽量 Linux インストール (以下の例では、CentOS) とイメージ構成のカスタマイズに役立ついくつかの RightScripts を含むベースイメージで構成されます。このチュートリアルでは、Rails オールインワン ServerTemplate のうち 1 つを使用して EC2 でサーバを起動し、Rails アプリケーションと MySQL データベースの両方のホスティングを行います。

RightScale は何種類かの Rails オールインワン ServerTemplate を提供しています。Design -> Library -> ServerTemplates に移動して、"rails all-in-one" を入力してください。

  • Rails all-in-one-trial - (全ユーザ)  この ServerTemplate で、RightScale Dashboard を使用した EC2 でのサーバの起動がいかに簡単かが分かります。これはデモ用途に最適です。データベースやアプリケーションを S3 にアップロードする必要がないため、"無料開発者" のユーザに適しています。データベースとアプリケーションは RightScript に添付ファイルとして含まれています。このチュートリアルではこの ServerTemplate を使用します。
  • Rails all-in-one-developer - (開発者/有料ユーザ)  この ServerTemplate は各自のニーズに合わせてカスタマイズできる点を除いては "トライアル" バージョンと似ています。S3 への自動バックアップを行うためにも設定されています。
  • メモ:  Chef の例もありますが、このチュートリアルでは取り上げません。

手順

ServerTemplate の概要

従来、サーバの起動方法は非常に面倒なものでした。

  1. 任意の OS をクリーンインストールする
  2. 必要なプログラムをインストールして設定する
  3. 起動し、エラーを見つけ、デバッグ。これを繰り返す

ありふれた手順ですね。しかし、クラウドコンピューティングでは、ボタン 1 つをクリックするだけで、仮想サーバを一度に起動することができるのです。

RightScale はこのプロセス全体を自動化するために、ServerTemplate を開発しました。これにより、ハードウェアには指一本触れることなく、サーバを自由に構成することができます。デプロイメントを追加した新しいサーバを含め、すべてのサーバが確実に同じように構成されます。

どの ServerTemplate も、あらゆるタイプのカスタム構成に合わせてクローンを作成し、修正することができます。

まず、ServerTemplate を使用したサーバの起動がいかに簡単かを見てみましょう。次に、目的に合わせた ServerTemplate のカスタマイズがいかに簡単かをご紹介します。

 

"トライアル" ServerTemplate を使用した EC2 でのサーバの起動

なんと、RightScale ならわずか数分で EC2 に新しいインスタンスを起動することができるのです。

  • Design -> Library -> ServerTemplates に移動します。
  • 最新バージョンの "Rails all-in-one-trial" ServerTemplate (RightScale が公開) を検索します。ServerTempate はクラウドを関知しないように設計されています。このチュートリアルでは、AWS US-East リージョンで Rails サーバを起動します。
  • ServerTemplate (名前のリンク、またはグレーの矢印) を選択します。説明、内容、リビジョン情報、レーティング、ディスカッション/投稿などが表示されます。
  • import アクションリンクを選択して、ServerTemplate をインポートします。インポートが成功したことを示すメッセージが届き、Rails オールインワン ServerTemplate に保存されます。インポートされた ServerTemplate は、'Local' ビューの下に表示されます。そのままの ServerTemplate でインスタンスが起動できるように、この ServerTemplate には必要な RightScript と入力パラメータがあらかじめ設定されています。(インポートされた ServerTemplate を変更する必要がある場合は、'Local' ビューに編集可能なバージョンを作成するため、最初にその ServerTemplate のクローンを作成する必要があります。)
  • Add To Deployment アクションボタンをクリックします。
    • AWS US-East クラウドリージョンを選択します。
    • Continue アクションボタンを選択します。下のような Add Server ダイアログが表示されます。

 

下のような Add Server ダイアログが表示されます。この例では、ServerTemplate と Cloud のフィールドはすでに入力してあります。

 

 screen-AddServer-v2.png

メモ:  VPC に対応したアカウントでは VPC Subnet フィールドも表示されます。

 

フィールドの説明:

  • Deployment - デプロイメントのコンテキストでは、必ず 1 台のサーバがあります。そのため、サーバを作成したら、サーバを追加するデプロイメントを指定する必要があります。それぞれの RightScale アカウントには、テストに最適な "Default" デプロイメントがあります。"Default" のデプロイメントか、もしくはすでに定義しているデプロイメントのどちらかを選択してください。
  • ServerTemplate - プルダウンメニューから、ServerTemplate の種類を選択します。ServerTemplate から直接起動する場合、このフィールドにはすでに決まっているものがダイアログボックスに表示されています。
    • Private - 個人ライブラリの ServerTemplate です。つまり、一から作成したか、インポートしてクローンを作成した ServerTemplate のことです。この ServerTemplate は各自のコピーとして自由にカスタマイズすることができます。関連付けは各自で更新されます。
    • Imported - ライブラリから直接インポートしたものすべてです (静的コピー)。また、予約しているすべての ServerTemplate も含まれます (HEAD バージョン。静的リビジョン以外は変更)。
    • 次に、もう一つのプルダウンメニューから、実際の ServerTemplate 名 (Simple Linux Server など) を選択します。
  • Cloud -  サーバを追加するクラウドのことです。サーバを追加する際、これは Select Cloud アクションボタンですでに選択されているため、このダイアログウィンドウで変更することはできません。単なる情報として表示されます。
  • MultiCloud Image* - 使用する MCI を選択するか、Inherit from the ServerTemplate のままにしておきます (デフォルト)。
  • Instance Type* - インスタンスタイプを選択するか(small、medium、large など)、Inherit from the MultiCloud Image のままにしておきます (デフォルト)。
  • Nickname - サーバの主要目的に関して説明する名前を入力します。
  • SSH Key - 使用する (以前作成した) SSH キーを指定します。
  • Security Group - セキュリティ目的で使用する (以前作成した) セキュリティグループ (複数可) を選択します。
  • Availability Zone - このサーバを配置する Availability Zone (EC2) を選択します。複数のゾーンをまたぐ場合はトラフィックに対して追加料金が発生することに注意してください。異なるゾーンでも高い可用性を必要とするデプロイメントでない限り、サーバは通常、同じゾーン内に置かれます。クラウドによっては複数のゾーンやリージョンが含まれる場合があります。
  • Elastic IP - サーバに使用する EIP、もしくは none を選択します。
  • Associate IP at launch - 通常は IP アドレスとサーバが起動時に関連付けられるように、デフォルト (チェックが入った状態) のままにしておきます。

*2010 年 4 月以降の Dashboard のリリースでは、ダイアログボックスに新しいフィールドが加わります。フィールドの追加は、ServerTemplate がサポート対象の一つの MCI から ServerTemplate ごとにサポートされる複数の MCI に拡張される際に行われます。

Add Server ダイアログを入力するための追加情報と推奨値は以下のとおりです。ほとんどはデフォルト値のままにすることができます。

  • Deployment - "Default" デプロイメントにサーバを追加します。
  • MultiCloud Image - デフォルト (Inherit from ServerTemplate) のままにしておきます。
  • Instance Type - デフォルト (Inherit from the MCI) のままにしておきます。
  • Nickname - 通常どおり、内容が分かるものを使用します。"My Rails Server" などです。
  • VPC Subnet - デフォルト (none) のままにしておきます。
  • SSH Key - デフォルトを使用することができます。Default-EC2-US
  • Security Group - デフォルトを使用することができます。
  • Availability Zone - us-east-1a
  • Elastic IP - none (デフォルト)
  • Associate IP at launch - チェックの入った状態にしておきます (デフォルト)。
  • Add ボタンをクリックします。

 

準備ができたらサーバの Launch ボタンを選択します。起動しようとしているサーバにあらかじめ定義された入力パラメータの一覧が表示されます。

サーバを起動するたびに、ServerTemplate 自体(または場合によってはデプロイメントレベルから)継承されている入力パラメータを好きなように変更することができます。必須パラメータに入力されていない場合は、赤で強調表示されます。凡例の色分けと入力のステータスとの関連付けを確認してください。

幸い、"トライアル" テンプレートは必要な入力がすべてあらかじめ設定されています。(重要mon_processes 入力を設定しなければならない場合があります。今のところは値を "httpd" に設定して Apache を監視するように設定します。)

準備ができたら、Launch アクションボタンを選択します。

おめでとうございます!  これで RightScale の ServerTemplate の 1 つを使用して、Amazon EC2 でサーバを構成し、起動しました。サーバがブートし、完全に機能するまでは数分間待つ必要がありますが、これも実に簡単です。

screen-SelectServer-v1.png
 

まだ信じられませんか?次の手順では、ブラウザウィンドウで Rails サーバをプレビューしてみましょう。

実行中のサーバのプレビュー

  • 新しいサーバに関する詳細情報を表示するには、ニックネームのリンク (例:My Rails Server) をクリックします。
  • Rails アプリケーションをプレビューするには、Public DNS name リンクをクリックします。

 

screen-PublicDNS-v1.png

新しい Rails サーバがブラウザウィンドウのページ上部に表示されます。

重要!   完了したら忘れずにインスタンスを停止してください (Manage -> Servers -> Terminate アクションボタンまたはボタン)

"開発者" ServerTemplate を使用した EC2 でのサーバの起動

メモ: このセクションは または Premium アカウントでしか完了できません。

これで ServerTemplate を使用したサーバの起動がいかに簡単かをお分かりいただいたことでしょう。次は、独自のカスタム構成に合わせて ServerTemplate を修正するのがいかに簡単かをご紹介します。

最初に、MySQL データベースの gzip 圧縮ダンプを作成する必要があります。MySQL ダンプのファイル名は指定したフォーマット (prefix-timestamp.gz) に従う必要があります。たとえば、myapp_prod_dump-20080416234.gz の場合、'myapp_prod_dump' がプレフィクスです。

このチュートリアルでは、アプリケーションリポジトリに SVN を使用していることを前提としています。後ほど、 SVN リポジトリの URL を指定する必要があります。

アプリケーションやデータベースがない場合は、以下のサンプルファイルを使用して、このチュートリアルの S3 へのデータベースダンプのアップロードのセクションにスキップすることができます。

MySQL データベースダンプの作成Edit section

リマインダ:  前の手順で指定したサンプルアプリケーションとダンプファイルを使用している場合は、このチュートリアルの S3 へのデータベースダンプのアップロードのセクションにスキップしてください。

独自のデータベースのダンプを作成している場合は、ダンプファイルを正しく作成することが重要です。適切なフォーマットと名前で作成されるように、以下のコマンドを使用することをお薦めします。ユーザ名パスワードスキーマ名のみを入力して、以下のコマンドを実行します。/tmp ディレクトリにダンプが作成されます。


USER=

PASSWD=

SCHEMA=

suffix=`date "+%Y%m%d%H%M"`

mysqldump --single-transaction -u $USER -p$PASSWD $SCHEMA | gzip -c > /tmp/myapp_prod_dump-$suffix.gz

 

S3 へのデータベースダンプのアップロード

データベースのダンプが作成されたら、S3 バケットを作成してダンプファイルをアップロードする必要があります。このバケットはデータベースバックアップのバケットの役割も果たします。(このテンプレートはデータベースの定期バックアップを取り、S3 に保存するように設計されています。)

  • Clouds -> AWS Global -> S3 Browser に移動します。
  • New Bucket アクションボタンをクリックします。

バケットに名前を付ける際は、S3 バケットの名前空間がグローバルであることを念頭に置き、各バケットには他で使用されていない完全に一意な名前が使用されるようにしてください。通常はプレフィクスとして自分のサイトの名前を使用し、各バケットのデフォルトの場所を使用します。

screen-SelectBucket-v1.png


次に、データベースのバケット (例:rightscale-db2) をクリックし、データベースのダンプファイルをアップロードします。

独自のダンプファイルを作成している場合は、/tmp ディレクトリに表示されます (/tmp/myapp_prod_dump-xxxxx.gz)。ファイルの権限は 'private' から 'public-read' に変更してください。

screen-BucketContents-v1.png

これで、データベースファイルが S3 バケットに置かれ、サーバの起動時に検索しやすくなります。後で、ServerTemplate の入力をカスタマイズする際にこのファイルの場所を指定して、新しいサーバの起動時にデータベースがロードできるようにします。

Rails "開発者" ServerTemplate の選択
  • Design -> Library -> ServerTemplates に戻ります。
  • 最新バージョンの Rails all-in-one-developer ServerTemplate を検索します。
    • メモ:  このチュートリアルでは Chef バージョンは使用しません。RightScript バージョン (v8 など) を選択してください。
  • Import ボタンをクリックします。インポート成功のメッセージが表示され、ServerTemplate が 'Local' ビューに表示されます。これでカスタマイズ可能なコピーがローカルのワークスペースに作成されます。ServerTemplate をインポートすると、インポート先に移動します。後で参照する場合は、Design -> ServerTemplates -> View Local からいつでも見つけることができます。
ServerTemplate のクローン作成

ServerTemplate は一から作成するよりも、既存の ServerTemplate のクローンを作成して修正する方法がはるかに簡単であるため、Dashboard では ServerTemplate と RightScript のクローンを作成することができます。ServerTemplate と RightScript のクローン作成機能は、コンポーネントの修正と再利用のためのとても強力なツールであり、アプリケーションを導入する際の時間と労力を節約することができます。

  • ServerTemplate の Clone アクションボタンをクリックして、'Local' ビューに編集可能なコピーを作成します。
  • ServerTemplate の名前をより分かりやすい名前に変更します (たとえば、"Rails all-in-one developer (Clone)" など)。
    • 名前を選択します
    • 新しい名前を入力します
    • Ok アクションボタンをクリックして新しい名前を保存します
ServerTemplate の入力の修正

これで、ServerTemplate の RightScript や入力パラメータなどを編集できるようになりました。ServerTemplate に共通する入力パラメータをいくつか定義してみましょう。

  • Inputs タブを選択してから Edit アクションボタンを押します。

この ServerTemplate でサーバを起動するには、以下の入力パラメータが必要です。必要に応じて修正してください。

 APPLICATION  テキスト Rails アプリケーションの名前を入力します
(例:rails_photo_site)。
 DB_BINLOG_PREFIX  テキスト バイナリログファイルに使用されるプレフィクスを入力します (例:/mnt/mysql-binlogs)
 DB_MYSQLDUMP_BUCKET   データベースのバックアップが保存される S3 バケットの名前を入力します
(例:rightscale-db2)
 DB_MYSQLDUMP_PREFIX  テキスト S3 バケットへのバックアップ MySQL ダンプファイルに名前を付けるために使用されるプレフィクスを入力します。これはプレフィクスがダンプのバックアップの名前と一致するため、重要です。たとえば、サンプルダンプファイル 'sample_mysql_backup-200804161345.gx' を使用している場合、正しいプレフィクスは 'sample_mysql_backup' になります。
 DB_SCHEMA_NAME  テキスト データベースのスキーマ名を入力します
(例:photo_demo_production)。
 DB_SERVER_USAGE  選択 "text: shared"  - これは "オールインワン" サーバであるため、この値には "shared" を設定する必要があります。設定しない場合、専用の DB サーバになります。
 OPT_SVN_CHECKOUT_MODE  選択

"text: checkout" - 開発に適しています。これを選択するとサーバ上でファイルを編集し、リポジトリに再度チェックインして戻すことができます。

"text: export" - 本稼動マシンに適しています。これを選択すると、SVN リポジトリからファイルの最新のコピーを取得することができます。

 OPT_SVN_PASSWORD  テキスト SVN リポジトリにアクセスするためのパスワードを入力します。このテンプレートをテスト目的以外にも使用する予定がある場合は、セキュリティ上の理由により SVN ユーザ名とパスワードに関する資格情報を作成する必要があります。Create a Credential を参照してください。
 OPT_SVN_USERNAME  テキスト SVN リポジトリにアクセスするためのパスワードを入力します。このテンプレートをテスト目的以外にも使用する予定がある場合は、セキュリティ上の理由により SVN ユーザ名とパスワードに関する資格情報を作成する必要があります。Create a Credential を参照してください。
 SVN_APP_REPOSITORY  テキスト アプリケーションコードが含まれる SVN リポジトリの URL を入力する必要があります
(例: http://svn.mysite.com/projects/rails/rel-0.7.3)

 

  • 完了したら、Save アクションボタンをクリックします。
ServerTemplate のコミット

テンプレートの RightScript や入力に変更を行うたびに ServerTemplate をコミットして、ServerTemplate の静的リビジョンを常に作成しておくのがベストプラクティスです。[HEAD] バージョンの ServerTemplate でサーバを起動する場合、その RightScript と入力は時間を経て変更されている可能性があるため、次に ServerTemplate を使用して新しいサーバが起動する際にフリーズしたサーバが発生する可能性があります。

  • Commit アクションボタンをクリックします。
  • ServerTemplate または RightScript をコミットする際に、変更に関する有用な説明を入力することができます。

 

サーバの起動

これでサーバを起動する準備ができました。

  • [rev1] バージョンの (HEAD バージョンではない) ServerTemplate を選択します。
  • Launch ボタンをクリックします。
  • EC2 US クラウドリージョン (例:AWS US-East) を選択します。準備ができたら Continue アクションボタンを選択します。

以下のような Add Server ダイアログウィンドウが表示されます。

 

 screen-AddServer-v2.png

メモ:  VPC に対応したアカウントでは VPC Subnet フィールドも表示されます。

以下はすべてのフィールドの定義説明です。その下には、サーバを起動する前に検討すべき有用かつ選択可能な推奨値に関する一覧があります。

 

フィールドの説明:

  • Deployment - デプロイメントのコンテキストでは、必ず 1 台のサーバがあります。そのため、サーバを作成したら、サーバを追加するデプロイメントを指定する必要があります。それぞれの RightScale アカウントには、テストに最適な "Default" デプロイメントがあります。"Default" のデプロイメントか、もしくはすでに定義しているデプロイメントのどちらかを選択してください。
  • ServerTemplate - プルダウンメニューから、ServerTemplate の種類を選択します。ServerTemplate から直接起動する場合、このフィールドにはすでに決まっているものがダイアログボックスに表示されています。
    • Private - 個人ライブラリの ServerTemplate です。つまり、一から作成したか、インポートしてクローンを作成した ServerTemplate のことです。この ServerTemplate は各自のコピーとして自由にカスタマイズすることができます。関連付けは各自で更新されます。
    • Imported - ライブラリから直接インポートしたものすべてです (静的コピー)。また、予約しているすべての ServerTemplate も含まれます (HEAD バージョン。静的リビジョン以外は変更)。
    • 次に、もう一つのプルダウンメニューから、実際の ServerTemplate 名 (Simple Linux Server など) を選択します。
  • Cloud -  サーバを追加するクラウドのことです。サーバを追加する際、これは Select Cloud アクションボタンですでに選択されているため、このダイアログウィンドウで変更することはできません。単なる情報として表示されます。
  • MultiCloud Image* - 使用する MCI を選択するか、Inherit from the ServerTemplate のままにしておきます (デフォルト)。
  • Instance Type* - インスタンスタイプを選択するか(small、medium、large など)、Inherit from the MultiCloud Image のままにしておきます (デフォルト)。
  • Nickname - サーバの主要目的に関して説明する名前を入力します。
  • SSH Key - 使用する (以前作成した) SSH キーを指定します。
  • Security Group - セキュリティ目的で使用する (以前作成した) セキュリティグループ (複数可) を選択します。
  • Availability Zone - このサーバを配置する Availability Zone (EC2) を選択します。複数のゾーンをまたぐ場合はトラフィックに対して追加料金が発生することに注意してください。異なるゾーンでも高い可用性を必要とするデプロイメントでない限り、サーバは通常、同じゾーン内に置かれます。クラウドによっては複数のゾーンやリージョンが含まれる場合があります。
  • Elastic IP - サーバに使用する EIP、もしくは none を選択します。
  • 通常は IP アドレスとサーバが起動時に関連付けられるように、デフォルト (チェックが入った状態) のままにしておきます。

*2010 年 4 月以降の Dashboard のリリースでは、ダイアログボックスに新しいフィールドが加わります。フィールドの追加は、ServerTemplate がサポート対象の一つの MCI から ServerTemplate ごとにサポートされる複数の MCI に拡張される際に行われます。

注意事項:

  • ServerTemplate に "rev1" を選択します (つまり、HEAD バージョンではないコミット済みのバージョン)
  • 以下はデフォルト値で問題ありません。
    • MultiCloud Image および Instance Type (これらは継承されます)
    • VPC subnet (表示されている場合)
    • Availability Zone
    • Elastic IP (none)
    • Associate IP at launch (チェックが入った状態)
  • それぞれのドロップダウンメニューから適切な SSH キーとセキュリティグループを選択します。
  • 準備ができたら Launch ボタンをクリックします。
  • 新しいサーバを起動して入力パラメータを検証するかどうかを確認します。この時点で入力を変更しても、この特定のサーバにしか有効になりません。ここの例では、設定を保持し、Launch ボタンをクリックします。

 

サーバを起動するたびに、ServerTemplate 自体(またはデプロイメントレベルから)継承されている入力パラメータを好きなように変更することができます。必須パラメータに入力されていない場合は、赤で強調表示されます。入力と色との関係について詳しくは、Edit Inputs Legend 参照情報を参照してください。

 

おめでとうございます!  これで ServerTemplate のカスタマイズが完了し、Amazon の EC2 で新しい Rail サーバが起動しました。数分後に独自の Rails アプリケーションが実行されたサーバが EC2 で完全に機能します。

Rails アプリケーションのプレビュー

ブラウザウィンドウで Rails アプリケーションを確認するには、サーバのニックネームのリンクをクリックして、Info タブの Public DNS name リンクをクリックします。

screen-PublicDNSDeveloper-v1.png

 

Rails "Welcome Aboard" ページが表示されます (手順 #2 の終わりに確認したページと同様)。

サーバの停止Edit section

不要な利用料金の発生を防ぐため、完了したら忘れずにサーバを停止してください (Manage -> Servers -> Active タブ)。

 
参照:
You must to post a comment.
Last modified
00:17, 17 May 2013

Tags

This page has no custom tags.

Classifications

This page has no classifications.

Announcements

None


© 2006-2014 RightScale, Inc. All rights reserved.
RightScale is a registered trademark of RightScale, Inc. All other products and services may be trademarks or servicemarks of their respective owners.