概要
Apache Tomcatのスタンドアロンマルチインスタンス配備方式では、1つのサーバに1セットのマスターアプリケーションのみをインストールし、アプリケーションの複数のインスタンスを起動します。この方式は主に次のような場合に使用されます:
- 複数のTomcatマスターをコピーする必要がなくなり、ディスク容量を削減できます。
- Tomcatのバージョンをアップグレードする場合は、1セットのインスタンスだけをアップグレードする必要があります。
Tomcat 一般的な導入シナリオ
- 単一インスタンス単一アプリケーション: 最も一般的なデプロイオプションで、warパッケージをwebappsディレクトリにドロップするだけです。
- シングルインスタンス・マルチアプリケーション:複数の Web アプリケーションが複数の WAR パッケージを生成し、これらの WAR はすべて webapps ディレクトリにドロップされます。
- 1つのアプリケーションの複数のインスタンス:各インスタンスは1つのウェブアプリケーションのみでデプロイされ、各インスタンスは異なるポート番号を持ち、このソリューションはロードバランシングを達成するためにNginxと共に使用することができます。
- マルチインスタンス・マルチアプリケーション:インスタンスごとに少なくとも1つのアプリケーションを展開します。このソリューションでは、サーバーのリソース割り当てが限られている場合やサーバーの同時実行数が少ない場合に、同じサーバー上に複数のアプリケーションを展開し、リソースを最大限に活用することができます。
Tomcatディレクトリ構成
- bin スクリプトの実行
- conf 設定ファイル
- lib コア・ライブラリ・ファイル
- logs
- temp 一時ディレクトリ
- webapps アプリケーション・ディレクトリ
- work ランタイム・ディレクトリ
binとlibはTomcatのメイン・アプリケーション・ディレクトリとして使用され、複数のインスタンスで同じディレクトリを共有できます。各インスタンスにはconf、logs、temp、webapps、workディレクトリが必要です。
複数インスタンスの配置
マルチインスタンス展開のシナリオを完成させるためには、CATALINA_HOMEとCATALINA_BASEを利用するのが主な方法です:
- CATALINA_HOME:Tomcatのインストール・ディレクトリを示し、binとlibディレクトリを含むことができます。
CATALINAを使用する理由_BASE
デフォルトでは、CATALINA_HOMEとCATALINA_BASEは同じディレクトリを指します。Tomcatの複数のインスタンスを実行する場合は、主にCATALINA_BASEが各インスタンスのディレクトリを指すようにします。
インスタンスの配置
- Tomcatのダウンロード
$ wget -O /tomcat9.tar.gz https://../apache/tomcat/tomcat-9/..37/bin/apache-tomcat-....gz
- 解凍とインストール
$ mkdir /tomcat9
$ tar zxvf /tomcat9.tar.gz -C /tomcat9
- デーモンのインストール
Tomcatは、パブリック・デーモン内のデーモンとしてjsvcユーティリティを使用してLinuxプラットフォーム上で動作します。jsvcソース・パッケージはTomcatバイナリに含まれており、コンパイルする必要があります。
スクリプトを実行するときに、Java環境変数を設定する必要があります。または、スクリプトが呼び出されたときに、パラメータによってJava環境が設定されます。例えばJAVA_HOME./configure--with-java./configure --with-java=/usr/java
$ cd /tomcat9/bin
$ tar xvfz commons-daemon-native.tar.gz -C commons-daemon-native
$ cd commons-daemon-native commons-daemon-native
$ ./configure && make
$ cp jsvc ../..
- APRのインストール
APRは、複数のオペレーティング・システム・プラットフォームで使用可能な、上位層アプリケーションの基盤となるサポート・インターフェースのライブラリを提供します。
TomcatはAPRを使用することで、TomcatがオペレーティングシステムのAPIを直接呼び出すことができないという問題を解決し、より良いパフォーマンスをユーザーに提供することができます。
マストな環境:
- APR 1.2+ develoment headers(libapr1-dev package)
- OpenSSL 1.0.2+ development headers(libssl-dev package)
- JNI header from Java compatible JDK 1.4+
- GNU development environment(gcc, make)
$ yum install openssl -y
$ wget -O /apr.tar.gz https://../apache//apr/apr-....gz
$ wget -O /apr-util.tar.gz https://../apache//apr/apr-util-....gz
$ wget -O /apr-iconv.tar.gz https://../apache//apr/apr-iconv-....gz
$ tar zxvf apr.tar.gz -C /apr
$ tar zxvf apr-util.tar.gz -C /apr-util
$ tar zxvf apr-iconv.tar.gz -C /apr-iconv
$ NY /apr/configure --prefix=/usr/local/apr && NY /apr/make && NY /apr/make install
$ NY /apr-iconv/configure --prefix=/usr/local/apr-iconv --with-apr=/usr/local/apr && NY /apr-iconv/make && NY /apr-iconv/make install
$ NY /apr-util/configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr --with-apr-iconv=/usr/local/apr-iconv && NY /apr-util/make && NY /apr-util/make install
$ tar /tomcat9/bin/tomcat-native.tar.gz -C /tomcat9/bin/tomcat-native
$ NY /tomcat9/bin/tomcat-native/native/configure && NY /tomcat9/bin/tomcat-native/native/make && NY /tomcat9/bin/tomcat-native/native/make install
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443"/>APRを有効にするには、server.xmlファイルのプロトコルを次のように変更する必要があります。org.apache.coyote.http11.Http11AprProtocol
- Tomcatインスタンスの作成
Tomcatインスタンスを作成するには、CATALINA_HOMEとCATALINA_BASEの環境変数を操作して実現する必要があり、複数のTomcatインスタンスを作成するには、conf、logs、temp、webapps、これらの4つのコピーを何度も操作して実現する必要があり、今回は、2つのコピーをコピーするだけで実現します。
$ mkdir -p /tomcat9/instances/tomcat9_1
$ mv /tomcat9/conf /tomcat9/webapps /tomcat9/logs /tomcat9/temp -t /tomcat9/instances/tomcat9_1
$ cp /tomcat9/instances/tomcat9_1 /tomcat9/instances/tomcat9_2
/tomcat9/instances/tomcat9_1/conf/server.xml/tomcat9/instances/tomcat9_2/conf/server.xmlTomcatインスタンス・ポートの変更 以下のような異なるポートに変更します:
- Server ポート
- Connector ポート
- Tomcatインスタンス・サービスの書き込み
システム・サービス・スクリプトを作成し、システム・サービス・スクリプトに tomcat9_1.service と tomcat9_2.service という名前を付けます。
- tomcat9_1システム・サービスの
CATALINA_BASE=/tomcat9/instances/tomcat9_1 - tomcat9_2システム・サービスの
CATALINA_BASE=/tomcat9/instances/tomcat9_2
/var/lib/systemd/system/スクリプトは、以下の主な内容のファイルの下に置く必要があります:
[Unit]
Description=Apache Tomcat 9 Web Service,AS Coding4fun Service
After=network.target
[Service]
Type=forking
ExecStart=/tomcat9/bin/jsvc \
-java-home /jdk1.8.0_261 \
-classpath /tomcat9/bin/bootstrap.jar:/tomcat9/bin/tomcat-juli.jar \
-outfile /var/logs/catalina9_1.out \
-errfile /var/logs/catalina9_1.err \
-pidfile /var/run/tomcat9_1.pid \
-Djava.library.path=/usr/local/apr/lib \ # APR
-Dcatalina.home=/tomcat9 \
-Dcatalina.base=/tomcat9/instances/tomcat9_1 \
-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager \
-Djava.util.logging.config.file=/tomcat9/instances/tomcat9_1/conf/logging.properties \
org.apache.catalina.startup.Bootstrap
ExecStop=/tomcat9/bin/jsvc \
-pidfile /var/run/tomcat9_1.pid \
-stop \
org.apache.catalina.startup.Bootstrap
[Install]
WantedBy=multi-user.target
注意
tomcat9_2 インスタンスは、上記のスクリプトの tomcat9_1 をすべて tomcat9_2 に置き換える必要があります。
- システム・サービスの作成
$ systemctl enable tomcat9_1.service
$ systemctl enable tomcat9_2.service
- システム・サービスの起動
$ systemctl start tomcat9_1
$ systemctl start tomcat9_2
- システムサービスが正常に開始されたかどうかを確認します。
$ systemctl status tomcat9_1
$ systemctl status tomcat9_2





