前のセクション: AmazonWebServicesから移行するときにクラウドリソースをプロビジョニングする
この記事では、Apache®Tomcat®およびJava™ベースのSpring WebアプリケーションをAmazon®WebServices®(AWS)からRackspaceCloudに移行する方法を説明します。この例は、完了するまでに約30分かかります。
この例では、SpringPetClinicSampleApplicationを使用しています。
次の図は、アプリケーションのトポロジを示しています。

この記事の例に従うには、次の前提条件が必要です。
- ApacheTomcatでSpringWebアプリケーションを実行しているルートアクセスを備えたAWS上のAmazonElasticCompute Cloud(EC2)インスタンス。
- RackspaceCloudで有効で有効なアカウント。
演習の手順を実行する前に、次の手順を実行してください。
- アプリケーションやデータベースのリソースなど、移行するリソースを特定します。
- Springアプリケーションを除き、EC2インスタンスにインストールされている必要なすべてのソフトウェアパッケージのリストを作成します。
- アプリケーションが使用するすべての追加のAmazonサーバーのリストを作成します(たとえば、電子メールの場合はSimple Email Server(SES)、データベースの場合はRelational Database Service(RDS))。
- まだ作成していない場合は、CloudServerインスタンスとサポートするRackspaceCloudサービスを作成します。
次のソフトウェアパッケージをインストールします。
- Oracle®OpenJavaDevelopmentKit(OpenJDK™)
- Apache Tomcat
- OpenStack®Swift(オプション)
クラウドにOpenJDKをインストールするには、次の手順を実行します。
-
Secure Shell(SSH)を使用して、RackspacePublicNetURLとrootパスワードを使用してCloudServersインスタンスに接続します。
-
ログインするにはrootパスワードを入力してください。
-
次のコマンドを入力して、OpenJDK7をインストールします。
sudo yum install java-1.7.0-openjdk-devel
-
JAVA_HOME
の場所を特定します 次のコマンドを入力して:ll /etc/alternatives/java
次の出力例では、
JAVA_HOME
/usr/lib/jvm/jre-1.7.0-openjdk.x86_64
にあります。 :/etc/alternatives/java -> /usr/lib/jvm/jre-1.7.0-openjdk.x86_64/bin/java
次の手順を使用して、Tomcatをクラウドサーバーにインストールします。
-
使用するTomcatのバージョンをTomcat7SoftwareDownloadsページから右クリックし、
tar.gz
のURLをコピーします。 ファイル(たとえば、 https://www.us.apache.org/dist/tomcat/tomcat-7/v7.0.39/bin/apache-tomcat-7.0.39.tar.gz 。 -
次のコマンドを入力して、ディレクトリを
/usr/share
に変更します。 (または使用するディレクトリ)そしてバイナリファイルをダウンロードします:cd /usr/share sudo wget https://www.us.apache.org/dist/tomcat/tomcat-7/v7.0.39/bin/apache-tomcat-7.0.39.tar.gz
-
次のコマンドを入力して、権限を変更します。
sudo chmod 775 apache-tomcat-7.0.39.tar.gz
-
次のコマンドを入力して、ファイルの内容を抽出します。
sudo tar zxvf apache-tomcat-7.0.39.tar.gz
-
Tomcatを抽出した後、次のコマンドを使用して
tar.gz
を削除します。 ファイルと空き容量:sudo rm apache-tomcat-7.0.39.tar.gz
-
catalina.sh
で環境変数を設定します 次のコマンドを入力してファイルを作成します:cd /usr/share/apache-tomcat-7.0.39/bin sudo vi catalina.sh
-
次の行を
catalina.sh
に追加します\#!/bin/sh
の直後のファイル :JAVA_HOME=/usr/lib/jvm/jre-1.7.0-openjdk.x86_64
-
変更を保存してファイルを終了します。
-
次のコマンドを入力して、Tomcatの起動を自動化します。
cd /etc/init.d sudo vi tomcat
-
次の情報をファイルに追加します。
JAVA_HOME
であることを確認してください 、TOMCAT_HOME
、START_TOMCAT
、およびSTOP_TOMCAT
正しいディレクトリを参照してください:#!/bin/bash # chkconfig: 234 20 80 # description: Tomcat Server basic start/shutdown script # processname: tomcat JAVA_HOME=/usr/lib/jvm/jre-1.7.0-openjdk.x86_64 export JAVA_HOME TOMCAT_HOME=/usr/share/apache-tomcat-7.0.39/bin START_TOMCAT=/usr/share/apache-tomcat-7.0.39/bin/startup.sh STOP_TOMCAT=/usr/share/apache-tomcat-7.0.39/bin/shutdown.sh start() { echo -n "Starting tomcat: " cd $TOMCAT_HOME ${START_TOMCAT} echo "done." } stop() { echo -n "Shutting down tomcat: " cd $TOMCAT_HOME ${STOP_TOMCAT} echo "done." } case "$1" in start) start ;; stop) stop ;; restart) stop sleep 10 start ;; *) echo "Usage: $0 {start|stop|restart}" esac exit 0
-
変更を保存してファイルを終了します。
-
次のコマンドを入力して、ファイルのアクセス許可を設定し、Tomcatをシステムサービスとして設定し、設定をテストします。
sudo chmod 755 tomcat sudo /sbin/chkconfig --add tomcat sudo /sbin/chkconfig --level 234 tomcat on sudo /sbin/chkconfig --list tomcat
出力は次の例のようになります。
tomcat 0:off 1:off 2:on 3:on 4:on 5:off 6:off
-
Tomcatはポート8080で実行されているため、iptablesが接続に干渉しないことを確認する必要があります。
-
Tomcatをテストするには、クラウドコントロールパネルでCloudServerのインターネットプロトコル(IP)アドレスを検索し、ブラウザでURLを開きます(例:
https://<ipAddress>:8080/
)。 ApacheTomcatのランディングページが表示されます。注 :次のコマンドを使用して、Tomcatを停止および開始できます。
sudo /sbin/service tomcat stop sudo /sbin/service tomcat start
OpenStack Swiftのインストール(オプション)
Cloud Filesを使用してデータを転送する場合は、OpenStackSwiftを使用してサーバーからのアクセスを有効にする必要があります。このセクションの手順に従って、OpenStackSwiftをインストールおよび構成します。
-
次のコマンドを使用して、OpenStackSwiftクライアントをインストールします。
sudo yum install python-novaclient python-glanceclient swift
-
次のコマンドを実行し、Rackspace Cloudアカウントのユーザー名とAPIキーを置き換えて、必要な環境変数を設定します。
export ST_USER=<yourLoginUsername> export ST_KEY=<yourApiKey> export ST_AUTH=https://identity.api.rackspacecloud.com/v1.0/
これらの変数を
.bashrc
で定義することをお勧めします または.bash\_profile
ファイル。この手順を実行する場合は、次のsource
を使用してファイルをリロードする必要があります コマンド、.bash\_profile
に置き換えます for.bashrc
必要に応じて:source .bashrc
-
swift list
と入力します データを保持するために作成したコンテナが表示されることを確認してください。
AWSからRackspaceクラウドファイルにデータをバックアップ
AWSEC2からデータを取得します。次のいずれかの方法を使用してデータを転送できます。
- rsyncまたはSSHファイル転送プロトコル(SFTP)を使用してデータを直接転送します。
- OpenStackSwiftクライアントを使用してデータをCloudFilesに転送してから、CloudFilesからCloudServerにデータを転送します。
クラウドファイルを使用するには、次の準備手順を実行します。
-
SSHを使用してEC2インスタンスに接続するには、次のコマンドを使用します。
ssh -i yourPrivateKey.pem [email protected]
-
次のコマンドを使用して、データベースダンプを実行します。
mysqldump -h <rdsHostname> -u <rdsUsername> -p --triggers --routines --databases petclinic | gzip > ~/petclinic.sql.gz
-
次のコマンドを使用して、アプリケーションと、ログやその他のディレクトリなど、アプリケーションに必要なその他のリソースをバックアップします。
# Ensure that you have the correct tomcat7 directory sudo tar cvzf ~/tomcat.tar.gz /usr/share/tomcat7/webapps/*
-
クラウドファイルを使用してファイルを転送している場合は、次のいずれかの方法を使用して転送を実行します。 rsyncまたはSFTPを使用してファイルを直接転送する場合は、この記事の最後のセクションにスキップしてください。
-
次のコマンドを入力して、アーカイブをCloudFilesコンテナ(
Tomcat
)にアップロードします。 この例では)Swiftクライアントを使用して:swift upload Tomcat petclinic.sql.gz swift upload Tomcat tomcat.tar.gz
-
次の手順を使用して、クラウドコントロールパネルからクラウドファイルにデータをアップロードします。
-
製品の選択から ドロップダウンメニューで、RackspaceCloud>ストレージ>ファイル>containerNameを選択します コンテナを開きます。
-
ファイルのアップロードをクリックします 。
-
参照をクリックします 、アップロードする1つまたは複数のファイルを選択し、[開く]をクリックします。 、選択 、または選択 (使用しているブラウザとシステムによって異なります)。
-
ファイルのアップロードをクリックします 。
-
-
データをCloudFilesにアップロードした場合は、次の手順を使用してデータをCloudServerに転送します。
-
SSHを使用し、PublicNetURLとルートパスワードを使用してCloudServersインスタンスに接続します。
-
この記事の「ソフトウェアパッケージのインストール」セクションの手順に従って、Swiftコマンドラインインターフェイス(CLI)をインストールして構成します。
-
swift list
を実行できることを確認してください コマンドを実行して、結果で作成した新しいコンテナを確認します。 -
次のコマンドを使用して、この記事の「AWSからRackspaceクラウドファイルへのデータのバックアップ」セクションで取得したバックアップからデータベースダンプをダウンロードし、ローカルに復元します。
swift download Tomcat petclinic.sql.gz gunzip < petclinic.sql.gz | mysql -u <cloudDatabaseUsername> -p -h <cloudDatabaseHostname>
-
次のコマンドを使用して、Tomcatを停止し、アプリケーションファイルをダウンロードして抽出します。
sudo /sbin/service tomcat stop swift download Tomcat tomcat.tar.gz tar -zxvf tomcat.tar.gz
-
抽出したWebアプリケーションのコンテンツをローカルのTomcat
webapps
にコピーします ディレクトリを作成し、アプリケーションのプロパティを変更します(jdbc.url
を含む) 、データベースユーザー名、データベースパスワード、およびその他のプロパティ)。 -
Spring Framework Petclinicサンプルで、次のファイルをコメントアウトします。
petclinic/WEB-INF/classes/db/mysql/initDB.sql petclinic/WEB-INF/classes/db/mysql/populateDB.sql
-
次のコマンドを使用してTomcatを再起動します。
sudo /sbin/service tomcat start
https://<cloudServerIPAddress>:8080/petclinic
でブラウザのWebアプリケーションにアクセスします 。
アマゾンウェブサービスから移行する際の移行後の考慮事項
その他の移行シナリオについては、次の記事を参照してください。
- アマゾンウェブサービスから.NETアプリケーションを移行する
- Amazon WebServicesからBackbone.js、Node.js、MongoDBに基づいてアプリケーションを移行します