高性能WebサービスのNginx+Tomcat負債均衡逆エージェントと動静分離を実現
4493 ワード
実際の生産では、Tomcatサーバはプロジェクトで単独では使用されないのが一般的であり、静的リソースに対する応答Nginxは比較的良好である.また、nginxは逆エージェント専用のサーバであるため、javaの要求をバックエンドに転送してtomcatコンテナに渡す処理を容易に実現し、それ自体が静的リソースを処理するために使用される.
通常tomcatフロントエンドはnginxまたはapacheであり、バックエンドはtomcatであり、つまりフロントエンドがどんな役割であってもエージェント方式で動作することを意味する.しかし、nginxに基づいて逆エージェントを行う場合、tomcatに転送要求するときはhttpプロトコルに基づいて転送されることに注意してください.しかし、tomcatのコネクタにはhttpajp jk 2 jservがあることに注意してください.nginxに基づいて転送を行うとhttpのみが転送をサポートします.apacheがエージェント転送を行うと、ほとんどの一般的なプロトコルがサポートされます.しかし、よく使われる接続タイプはajpプロトコルです.ajpプロトコルはバイナリモードで動作し、httpプロトコルはテキストモードで動作するため、ajpの効率はhttpよりも効率的です.そのためtomcatフロントエンドのwebサーバを配備するにはapacheを使用することが多い.
次に、nginx+tomcat実装方向エージェントを次のアーキテクチャで配置します.
リバース・エージェント・システム・アーキテクチャは、次のように計画されています.
サーバーの役割
サーバIP
Nginx
eth0:172.16.100.1/16 eth1:192.168.56.10/24
Tomcat1
eth0:192.168.56.11/24
Tomcat2
eth0:192.168.56.12/24
statichost(nginx)
eth0:192.168.56.13/24
構成手順は次のとおりです.
Tomcatサービスのインストール構成:
(1)JDK取付
(2)tomcatのインストール
nginxサーバの構成手順は次のとおりです.
アクセステストは次のとおりです.
jspダイナミックコンテンツは、192.168.56.13静的コンテンツホストに転送されています.次にstatichostホストを構成します.次のように構成します.
テストアクセスは次のとおりです.
以上はNginx+Tomcatが負債均衡の逆エージェントと動静分離を実現する内容である
通常tomcatフロントエンドはnginxまたはapacheであり、バックエンドはtomcatであり、つまりフロントエンドがどんな役割であってもエージェント方式で動作することを意味する.しかし、nginxに基づいて逆エージェントを行う場合、tomcatに転送要求するときはhttpプロトコルに基づいて転送されることに注意してください.しかし、tomcatのコネクタにはhttpajp jk 2 jservがあることに注意してください.nginxに基づいて転送を行うとhttpのみが転送をサポートします.apacheがエージェント転送を行うと、ほとんどの一般的なプロトコルがサポートされます.しかし、よく使われる接続タイプはajpプロトコルです.ajpプロトコルはバイナリモードで動作し、httpプロトコルはテキストモードで動作するため、ajpの効率はhttpよりも効率的です.そのためtomcatフロントエンドのwebサーバを配備するにはapacheを使用することが多い.
次に、nginx+tomcat実装方向エージェントを次のアーキテクチャで配置します.
リバース・エージェント・システム・アーキテクチャは、次のように計画されています.
サーバーの役割
サーバIP
Nginx
eth0:172.16.100.1/16 eth1:192.168.56.10/24
Tomcat1
eth0:192.168.56.11/24
Tomcat2
eth0:192.168.56.12/24
statichost(nginx)
eth0:192.168.56.13/24
構成手順は次のとおりです.
Tomcatサービスのインストール構成:
(1)JDK取付
# rpm -ivh jdk-7u9-linux-x64.rpm
-- JDK
# cd /usr/java/ ; ll
total 4
lrwxrwxrwx 1 root root 16 Sep 27 09:09 default -> /usr/java/latest
drwxr-xr-x 10 root root 4096 Sep 27 09:09 jdk1.7.0_09
lrwxrwxrwx 1 root root 21 Sep 27 09:09 latest -> /usr/java/jdk1.7.0_09
-- JDK
# vim /etc/profile.d/java.sh
export JAVA_HOME=/usr/java/jdk1.7.0_09
export PATH=$PATH:$JAVA_HOME/bin
--
# . /etc/profile.d/java.sh
-- :
# java -version
java version "1.7.0_45" --jdk
OpenJDK Runtime Environment (rhel-2.4.3.3.el6-x86_64 u45-b15)
OpenJDK 64-Bit Server VM (build 24.45-b08, mixed mode)
(2)tomcatのインストール
-- tomcat /usr/local
# tar xf apache-tomcat-7.0.67.tar.gz -C /usr/local/
# cd /usr/local/
# ln -sv apache-tomcat-7.0.67 tomcat
-- tomcat
# vim /etc/profile.d/tomcat.sh
export CATALINA_HOME=/usr/local/tomcat
export PATH=$PATH:$CATALINA_HOME/bin
# . /etc/profile.d/tomcat.sh
-- :
# catalina.sh version
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr/java/jdk1.7.0_09
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Server version: Apache Tomcat/7.0.67
Server built: Dec 7 2015 13:07:11 UTC
Server number: 7.0.67.0
OS Name: Linux
OS Version: 2.6.32-431.el6.x86_64
Architecture: amd64
JVM Version: 1.7.0_09-b05
JVM Vendor: Oracle Corporation
-- tomcat srv
# vim /etc/init.d/tomcat
#!/bin/sh
# Tomcat init script for Linux.
#
# chkconfig: 2345 96 14
# description: The Apache Tomcat servlet/JSP container.
# JAVA_OPTS='-Xms64m -Xmx128m'
JAVA_HOME=/usr/java/latest
CATALINA_HOME=/usr/local/tomcat
export JAVA_HOME CATALINA_HOME
case $1 in
start)
$CATALINA_HOME/bin/catalina.sh start;;
stop)
$CATALINA_HOME/bin/catalina.sh stop;;
restart)
$CATALINA_HOME/bin/catalina.sh stop
sleep 2
$CATALINA_HOME/bin/catalina.sh start;;
*)
echo "Usage: `basename $0` {start|stop|restart}"
exit 1
;;
esac
# chmod +x /etc/init.d/tomcat
# chkconfig --add tomcat
# service tomcat start
-- tomacat :
# ss -tunlp | grep java
tcp LISTEN 0 100 :::8080 :::* users:(("java",19525,42))
tcp LISTEN 0 1 ::ffff:127.0.0.1:8005 :::* users:(("java",19525,47))
tcp LISTEN 0 100 :::8009 :::* users:(("java",19525,43))
nginxサーバの構成手順は次のとおりです.
-- nginx.conf
http {
upstream tomcat { --
server 192.168.56.11:8080;
server 192.168.56.12:8080;
}
server {
listen 80;
server_name localhost;
location / {
root /usr/share/nginx/html;
index index.jsp index.html index.htm;
}
location ~* \.(jsp|do)$ { -- tomcat
proxy_pass http://tomcat;
}
location ~* \.(ico|css|jpg|jpeg|gif|png|pdf|doc|rar|exe|zip)$ { -- 192.168.56.13
proxy_pass http://192.168.56.13;
}
}
}
アクセステストは次のとおりです.
jspダイナミックコンテンツは、192.168.56.13静的コンテンツホストに転送されています.次にstatichostホストを構成します.次のように構成します.
-- nginx
-- tomcat statichost
# scp [email protected]:/usr/local/tomcat/webapps/ROOT/* /usr/share/nginx/html
テストアクセスは次のとおりです.
以上はNginx+Tomcatが負債均衡の逆エージェントと動静分離を実現する内容である