Hatena::ブログ(Diary)

leftovers... このページをアンテナに追加 RSSフィード

2010-03-07

Cloudtoolsを使ってEC2インスタンスを起動してwarをデプロイする.Maven編

Cloudtoolsを使ってEC2インスタンスを起動してwarをデプロイする。

今回は、CloudtoolsのMavenプラグインWebアプリケーションEC2デプロイする方法です。

Cloudtoolsとは、前のポストでも説明していますが。

CloudToolsプラグインでAmazon EC2 - leftovers...

Chris Richardson氏(POJOs in Actionの著者さん)が開発した、

EC2にJEEアプリケーションを簡単にデプロイするためのGroovyベースフレームワークEC2Deploy使用したツール群です。現在MavenプラグインGrailsプラグインがあります。AMIはCloudtools専用?のものが用意されています。

http://code.google.com/p/cloudtools

http://www.cloudfoundry.com/cloudtools.html



準備するもの

では開始!

デプロイしたいwarをS3にアップロード

S3にフォルダというかバケットを作成してその中にアップロード


aws.propertiesの設定

imageId.m1.small、imageId.m1.large、imageId.m1.xlargeは以下と同じように設定。

accountId、accessKey、secretKey、keyName、keyPairFile、sshDirを設定

imageId.m1.small=ami-6f2cc906
imageId.m1.large=ami-0129cc68
imageId.m1.xlarge=ami-0129cc68
accountId=0000-0000-0000な感じのAWSのID
accessKey=あなたのアクセスキー
secretKey=あなたのシークレットキー
keyName=キー名称キーペアの名前
keyPairFile=/Path/to/your/mykeypair.pem キーペアファイルへのパス
sshDir=/usr/bin sshのあるディレクト

pom.xmlの設定

<project>  <modelVersion>4.0.0</modelVersion>
  <groupId>ec2deploy</groupId>
  <artifactId>standalone-deployment</artifactId>
  <version>1.0</version>

  <repositories>
    <repository>
      <id>pia-repository</id>
      <url>http://www.pojosinaction.com/repository</url>;
    </repository>
  </repositories>

  <pluginRepositories>
    <pluginRepository>
      <id>pia-repository</id>
      <url>http://www.pojosinaction.com/repository</url>;
      <snapshots>
        <enabled>true</enabled>
      </snapshots>
    </pluginRepository>
  </pluginRepositories>

  <properties>
    <aws.properties>ここにaws.propertiesのパスを入れる</aws.properties>
    <s3.war>s3://保存先バケット名/myapp.war</s3.war>
  </properties>

  <build>
    <plugins>
      <plugin>
        <groupId>net.chrisrichardson</groupId>
        <artifactId>cloudtools-maven-plugin</artifactId>
        <configuration>
          <awsPropertiesFile>${aws.properties}</awsPropertiesFile>
          <schemaName>myschema</schemaName>
          <schemaUsers>
            <param>user1:user1</param>
          </schemaUsers>
          <warDirectory>${s3.war}</warDirectory>
          <!-- warの名前 -->
          <warName>myapp</warName>
          <numberOfMySqlSlaves>0</numberOfMySqlSlaves>
          <numberOfTomcats>1</numberOfTomcats>
          <topology>SingleInstanceTopology</topology>
          <catalinaOptsBuilder>
            <![CDATA[
              {builder, databasePrivateDnsName, slaves ->
                  builder.arg("-server")
                  builder.arg("-Xmx1000m")
                  builder.arg("-Xms1000m")
                  builder.prop("jdbc.db.server", databasePrivateDnsName)
              }
            ]]>
          </catalinaOptsBuilder>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>

ここまで設定がおわったら後は、コマンド実行

mvn cloudtools:deploy

インスタンスが起動します。もちろん時間かかります。そして課金が始まります。

起動が終了したら。ブラウザで動作確認。サーバアドレスはcloudtools:describeで情報をみるかAWS管理コンソールで確認しましょう!

mvn cloudtools:describe

インスタンス停止方法

mvn cloudtools:stop

Maven Goalは、

http://code.google.com/p/cloudtools/wiki/UsingTheCloudToolsMavenPlugin




EBS(Elastic Block Store)対応

http://code.google.com/p/cloudtools/wiki/UsingEBS

cloudtools:deployで新規デプロイの際に以下のオプション新規EBSも一緒に作成。

以下の例では、デバイス(cloudtools.ebs.device)が/dev/sdj で、サイズ(cloudtools.ebs.volume.size)10GB。

-Dcloudtools.ebs.device=/dev/sdj -Dcloudtools.ebs.volume.size=10

起動中EC2インスタンスMySQLデータを新規のEBSを作成して移動する事もできます。

以下の例だと2GBのEBSを新規に作成。

mvn cloudtools:enableebs -Dcloudtools.ebs.device=/dev/sdh -Dcloudtools.ebs.volume.size=2

トポロジー

pom.xmlの途中に設定できます。現在は2個だけっぽい。

<topology>SingleInstanceTopology</topology>

SingleInstanceTopology

シングルインスタンス上に、Apache,Tomcat,MySQLマスターを起動。0個以上のMySQLスレーブも同じインスタンスに起動可能。シングルTomcatインスタンス限定の一番安価な方法。

MultipleInstancesTopology

Apache,Tomcat,MySQLマスターMySQLスレーブをそれぞれのEC2インスタンスで起動。複数のEC2インスタンスを起動するので柔軟だがそれなりにコストがかかる。





簡単にサーバ構築とデプロイができ、そして課金されてしまう!おそろしい世の中です。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/mottsnite/20100307/1267977482