

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# IBM WebSphere アプリケーションサーバーから Amazon EC2 上の Apache Tomcat への自動スケーリングによる移行
<a name="migrate-from-ibm-websphere-application-server-to-apache-tomcat-on-amazon-ec2-with-auto-scaling"></a>

*Amazon Web Services、Kevin Yung、Afroz Khan*

## 概要
<a name="migrate-from-ibm-websphere-application-server-to-apache-tomcat-on-amazon-ec2-with-auto-scaling-summary"></a>

このパターンは、Amazon EC2 Auto Scaling が有効になっている Amazon Elastic Compute Cloud (Amazon EC2) インスタンスで Java アプリケーションを IBM WebSphere アプリケーションサーバーから Apache Tomcat に移行するためのガイダンスを提供します。 

このパターンを使用すると、以下を実現できます。
+ IBM のライセンスコストの削減
+ 高可用性を重視したマルチ AZ 配置
+ Amazon EC2 Auto Scaling によるアプリケーションの耐障害性の向上

## 前提条件と制限事項
<a name="migrate-from-ibm-websphere-application-server-to-apache-tomcat-on-amazon-ec2-with-auto-scaling-prerequisites-and-limitations"></a>

**前提条件**
+ Java アプリケーション (バージョン 7.*x* または8.*x*) は LAMP スタックで開発する必要があります。
+ ターゲット状態は、Linux ホストで Java アプリケーションをホストすることです。このパターンは Red Hat Enterprise Linux (RHEL) 7 環境で正常に実装されました。他の Linux ディストリビューションでもこのパターンに従うことができますが、Apache Tomcat ディストリビューションの構成を参照する必要があります。
+ Java アプリケーションの依存関係を理解しておく必要があります。
+ 変更を加えるには、Java アプリケーションのソースコードへのアクセスが必要です。

**制限事項とリプラットフォームに関する変更**
+ エンタープライズアーカイブ (EAR) コンポーネントについて理解し、すべてのライブラリがウェブコンポーネント WAR ファイルにパッケージ化されていることを確認してください。[Apache Maven WAR プラグイン](https://maven.apache.org/plugins/maven-war-plugin/)を構成し、WAR ファイルのアーティファクトを生成する必要があります。
+ Apache Tomcat 8 を使用する場合、servlet-api.jar とアプリケーションパッケージの組み込み jar ファイルとの間に競合が発生することが知られています。この問題を解決するには、アプリケーションパッケージから servlet-api.jar を削除します。
+ [Apache Tomcat 構成](https://tomcat.apache.org/tomcat-8.0-doc/class-loader-howto.html)の*クラスパス*にある WEB-INF/リソースを構成する必要があります。デフォルトでは、JAR ライブラリはディレクトリにロードされません。または、すべてのリソースを src/main/resources の下にデプロイすることもできます*。*
+ Java アプリケーション内にハードコーディングされたコンテキストルートがあるかどうかを確認し、[Apache Tomcat の新しいコンテキストルート](https://tomcat.apache.org/tomcat-8.0-doc/config/context.html#Defining_a_context)を更新します。
+ JVM ランタイムオプションを構成するには、Apache Tomcat の bin フォルダに JAVA\_OPTS、JAVA\_HOME ****などの構成ファイル setenv.sh を作成します。 
+ 認証はコンテナレベルで構成され、Apache Tomcat 構成のレルムとしてセットアップされます。認証は次の 3 つのレルムのいずれかで確立されます。 
  + [JDBC データベースレルム](https://tomcat.apache.org/tomcat-8.0-doc/config/realm.html#JDBC_Database_Realm_-_org.apache.catalina.realm.JDBCRealm)は、JDBC ドライバーがアクセスするリレーショナルデータベース内のユーザーを検索します。
  + [DataSource データベースレルム](https://tomcat.apache.org/tomcat-8.0-doc/config/realm.html#DataSource_Database_Realm_-_org.apache.catalina.realm.DataSourceRealm)は、JNDI がアクセスするデータベース内のユーザーを検索します。
  + [JNDI ディレクトリレルム](https://tomcat.apache.org/tomcat-8.0-doc/config/realm.html#JNDI_Directory_Realm_-_org.apache.catalina.realm.JNDIRealm)は、JNDI プロバイダーがアクセスする Lightweight Directory Access Protocol (LDAP) ディレクトリ内のユーザーを検索します。検索には以下が必要です。 
    + LDAP 接続の詳細: ユーザー検索ベース、検索フィルター、ロールベース、ロールフィルター 
    + 主要な JNDI ディレクトリレルム: LDAP に接続し、ユーザーを認証し、ユーザーがメンバーとなっているすべてのグループを取得します。
+ 権限: web.xml 内の権限制約をチェックするロールベースの権限を持つコンテナの場合、ウェブリソースを定義し、制約で定義されたロールと比較する必要があります。LDAP にグループロールマッピングがない場合は、web.xml で属性 <security-role-ref> を設定してグループロールマッピングを行う必要があります。構成ドキュメントの例については、[Oracle ドキュメント](https://docs.oracle.com/cd/E19226-01/820-7627/bncav/index.html)を参照してください。 
+ データベース接続: Amazon Relational Database Service (Amazon RDS) のエンドポイント URL と接続の詳細を使用して Apache Tomcat でリソース定義を作成します。JNDI 検索を使用して DataSource を参照するようにアプリケーションコードを更新します。WebSphere で定義されている既存の DB 接続は、WebSphere の JNDI 名を使用するため機能しません。JNDI 名と DataSource タイプの定義を含む <resource-ref> エントリを web.xml に追加できます。サンプル構成ドキュメントを見るには、[Apache Tomcat ドキュメント](https://tomcat.apache.org/tomcat-8.0-doc/jndi-resources-howto.html#JDBC_Data_Sources)を参照してください。
+ ロギング: デフォルトでは、Apache Tomcat はコンソールまたはログファイルにログを記録します。*logging.properties* を更新することでレルムレベルのトレースを有効にできます (「[Tomcat でロギングする](https://tomcat.apache.org/tomcat-8.0-doc/logging.html)」を参照)。Apache Log4j を使用してログをファイルに追加する場合は、tomcat-juli をダウンロードして*クラスパス*に追加する必要があります。
+ セッション管理: アプリケーションの負荷分散とセッション管理用に IBM WebSEAL をそのまま使用する場合は、変更は必要ありません。AWS の Application Load Balancer または Network Load Balancer を使用して IBM WebSEAL コンポーネントを置き換える場合は、Memcached クラスターで Amazon ElastiCache インスタンスを使用してセッション管理を設定し、[オープンソースのセッション管理](https://github.com/magro/memcached-session-manager)を使用できるように Apache Tomcat をセットアップする必要があります。 
+ IBM WebSEAL フォワードプロキシを使用している場合は、AWS に新しい Network Load Balancer をセットアップする必要があります。WebSEAL ジャンクション構成には、Network Load Balancer が提供する IP を使用してください。
+ SSL 構成: エンドツーエンドの通信にはセキュアソケットレイヤー (SSL) を使用することをお勧めします。Apache Tomcat で SSL サーバー構成をセットアップするには、[Apache Tomcat ドキュメント](https://tomcat.apache.org/tomcat-8.0-doc/ssl-howto.html)に記載されている指示に従ってください。 

## アーキテクチャ
<a name="migrate-from-ibm-websphere-application-server-to-apache-tomcat-on-amazon-ec2-with-auto-scaling-architecture"></a>

**ソーステクノロジースタック**
+ IBM WebSphere アプリケーション

 

**ターゲットテクノロジースタック**
+ [アーキテクチャは Elastic Load Balancing (バージョン 2](https://docs.aws.amazon.com/elasticloadbalancing/)) を使用しています。アイデンティティ管理と負荷分散に IBM WebSEAL を使用している場合は、AWS 上のNetwork Load Balancer を選択して IBM WebSEAL リバースプロキシと統合できます。
+ Java アプリケーションは、[Amazon EC2 Auto Scaling](https://docs.aws.amazon.com/autoscaling/ec2/userguide/AutoScalingGroup.html) グループの EC2 インスタンスで実行されている Apache Tomcat アプリケーションサーバーにデプロイされます。CPU 使用率などの Amazon CloudWatch メトリクスに基づいて[スケーリングポリシー](https://docs.aws.amazon.com/autoscaling/ec2/userguide/scaling_plan.html)を設定できます。 
+ 負荷分散のための IBM WebSEAL の使用を廃止する場合は、[Amazon ElastiCache for Memcached](https://docs.aws.amazon.com/AmazonElastiCache/latest/mem-ug/WhatIs.html) をセッション管理に使用できます。
+ バックエンドデータベースでは [High Availability (Multi-AZ) for Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.MultiAZ.html) をデプロイし、データベースエンジンタイプを選択できます。

 

**ターゲットアーキテクチャ**

![](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/52b91dab-7b3b-4751-abe2-25e7c7cd8d89/images/25125023-9a81-452a-9ada-184e2416cc02.png)


## ツール
<a name="migrate-from-ibm-websphere-application-server-to-apache-tomcat-on-amazon-ec2-with-auto-scaling-tools"></a>
+ [ CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)
+ [AWS コマンドラインインターフェイス (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html)
+ Apache Tomcat (バージョン 7.*x* または 8.*x*)
+ RHEL 7 or Centos 7
+ [Amazon RDS マルチ AZ デプロイ](https://aws.amazon.com/rds/details/multi-az/)
+ [Amazon ElastiCache for Memcached](https://docs.aws.amazon.com/AmazonElastiCache/latest/mem-ug/WhatIs.html) (オプション)

## エピック
<a name="migrate-from-ibm-websphere-application-server-to-apache-tomcat-on-amazon-ec2-with-auto-scaling-epics"></a>

### VPC をセットアップする
<a name="set-up-the-vpc"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| 仮想プライベートクラウド (VPC) を作成します。 |  |  | 
| サブネットを作成します。 |  |  | 
| 必要に応じてルートテーブルを作成する。 |  |  | 
| ネットワークアクセスコントロールリスト (ACL) |  |  | 
| AWS Direct Connect または会社の VPN 接続をセットアップする。 |  |  | 

### アプリケーションをリプラットフォームする
<a name="replatform-the-application"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| アプリケーションビルド Maven 構成をリファクタリングして WAR アーティファクトを生成する。 |  |  | 
| Apache Tomcat のアプリケーション依存関係データソースをリファクタリングする。 |  |  | 
| Apache Tomcat の JNDI 名を使用するようにアプリケーションのソースコードをリファクタリングする。 |  |  | 
| WAR アーティファクトを Apache Tomcat にデプロイする。 |  |  | 
| アプリケーションの検証とテストを完了する。 |  |  | 

### ネットワークを構成する
<a name="configure-the-network"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| 依存関係サービスへの接続を許可するように会社ファイアウォールを構成する。 |  |  | 
| エンドユーザーが AWS の Elastic Load Balancing にアクセスできるように企業ファイアウォールを構成する。 |  |  | 

### アプリケーションインフラストラクチャを作成する
<a name="create-the-application-infrastructure"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| EC2 インスタンスにアプリケーションを作成してデプロイする。 |  |  | 
| セッション管理用の Amazon ElastiCache for Memcached クラスターを作成する。 |  |  | 
| バックエンドデータベース用の Amazon RDS マルチ AZ インスタンスを作成する。 |  |  | 
| AWS Certificate Manager (ACM) を使用して SSL 証明書を作成し、インポートします。 |  |  | 
| SSL 証明書をロードバランサーにインストールする。 |  |  | 
| SSL 証明書を Apache Tomcat サーバーにインストールする。 |  |  | 
| アプリケーションの検証とテストを完了する。 |  |  | 

### カットオーバー
<a name="cut-over"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| 既存のインフラストラクチャをシャットダウンする。 |  |  | 
| データベースを本番環境から Amazon RDS に復元する。。 |  |  | 
| DNS を変更してアプリケーションを切り離す。 |  |  | 

## 関連リソース
<a name="migrate-from-ibm-websphere-application-server-to-apache-tomcat-on-amazon-ec2-with-auto-scaling-related-resources"></a>

**リファレンス**
+ [Apache Tomcat 7.0 ドキュメント](https://tomcat.apache.org/tomcat-7.0-doc/realm-howto.html)
+ [Apache Tomcat 7.0 インストールガイド](https://tomcat.apache.org/tomcat-7.0-doc/appdev/installation.html)
+ [Apache Tomcat JNDI ドキュメント](https://tomcat.apache.org/tomcat-7.0-doc/jndi-datasource-examples-howto.html)
+ [Amazon RDS マルチ AZ 配置](https://aws.amazon.com/rds/details/multi-az/)
+ [Amazon ElastiCache for Memcached](https://docs.aws.amazon.com/AmazonElastiCache/latest/mem-ug/WhatIs.html)

**チュートリアルと動画**
+ 「[Amazon RDS の開始方法](https://aws.amazon.com/rds/getting-started/)」