阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Tomcat反向代理+负载均衡的四种方法配置

190次阅读
没有评论

共计 10465 个字符,预计需要花费 27 分钟才能阅读完成。

环境拓扑

Tomcat 反向代理 + 负载均衡的四种方法配置

环境说明:

 IP 地址功能描述
nginx or httpd172.16.4.100代理服务器,将用户请求分发到后端的 Tomcat 服务器实现反向代理和负载均衡
Tomcat-01172.16.4.101后端实际提供服务的服务器
Tomcat-02172.16.4.102后端实际提供服务的服务器

系统环境都如下所示:

[root@nginx ~]# cat /etc/RedHat-release
CentOS release 6.6 (Final)
[root@bogon ~]# uname -rm
2.6.32-504.el6.x86_64 x86_64

此文章一共有四个实验:

1、使用 nginx 服务器实现反向代理 Tomcat 并实现负载均衡;

2、使用 httpd 的 mod_proxy_http 模块,实现 Tomcat 负载均衡;

3、使用 httpd 的 mod_proxy_ajp 模块,实现 Tomcat 负载均衡;

4、使用 httpd 的 mod_jk 模块,实现 Tomcat 的服务均衡。

后端 Tomcat 配置
四种反代 + 负载均衡都是使用此 Tomcat 部署。

Tomcat-01 部署
安装 jdk

[root@tomcat-1 ~]# rpm -ivh jdk-7u67-linux-x64.rpm

设置 Java 的环境变量

[root@tomcat-1 ~]# vim /etc/profile.d/java.sh
export JAVA_HOME=/usr/java/latest  #设置家目录
export PATH=$JAVA_HOME/bin:$PATH    #设置命令路径
[root@tomcat-1 ~]# . /etc/profile.d/java.sh

使用 -version 输出 Java 的版本号如果可以输出那么表示 Java 环境部署 ok

[root@tomcat-1 ~]# java -version
java version “1.7.0_67”
Java(TM) SE Runtime Environment (build1.7.0_67-b01)
Java HotSpot(TM) 64-Bit Server VM (build 24.65-b04,mixed mode)

安装 tomcat, 并添加一个应用程序实例

[root@tomcat-1 ~]#tar xf apache-tomcat-8.0.23.tar.gz -C /usr/local/
[root@tomcat-1 ~]#cd /usr/local/
[root@tomcat-1 local]# ln -s apache-tomcat-8.0.23/tomcat
[root@tomcat-1 local]# cd tomcat/
[root@tomcat-1 tomcat]# mkdir -p/usr/local/tomcat/webapps/testapp/{WEB-INF,classes,lib,META-INF}
[root@tomcat-1 tomcat]# vim/usr/local/tomcat/webapps/testapp/index.jsp
<%@ page language=”java” %>
<html>
 <head><title>TomcatA</title></head>
 <body>
  <h1><fontcolor=”red”>TomcatA.xmfb.com</font></h1>
    <tablealign=”centre” border=”1″>
    <tr>
      <td>Session ID</td>
    <%session.setAttribute(“xmfb.com”,”xmfb.com”); %>
      <td><%= session.getId() %></td>
    </tr>
    <tr>
      <td>Created on</td>
      <td><%= session.getCreationTime() %></td>
    </tr>
  </table>
 </body>
</html>

设置 tomcat 环境变量

[root@tomcat-1 tomcat]# vim /etc/profile.d/tomcat.sh
export CATALINA_HOME=/usr/local/tomcat
export PATH=$CATALINA_HOME/bin:$PATH
[root@tomcat-1 tomcat]# . /etc/profile.d/tomcat.sh

设置完成启动服务

[root@tomcat-1 tomcat]# catalina.sh start

访问 testapp 应用程序正常

Tomcat 反向代理 + 负载均衡的四种方法配置

Tomcat-02 部署
除了提供的测试页面不同之外,其他设置过程都一样

[root@tomcat-2 tomcat]# vim/usr/local/tomcat/webapps/testapp/index.jsp
<%@ page language=”java” %>
<html>
 <head><title>TomcatB</title></head>
 <body>
  <h1><font color=”blue”>TomcatB.xmfb.com</font></h1>
    <tablealign=”centre” border=”1″>
      <tr>
      <td>Session ID</td>
    <%session.setAttribute(“xmfb.com”,”xmfb.com”); %>
      <td><%= session.getId() %></td>
    </tr>
    <tr>
      <td>Created on</td>
      <td><%= session.getCreationTime() %></td>
    </tr>
  </table>
  </body>
</html>

设置完成访问结果如下

Tomcat 反向代理 + 负载均衡的四种方法配置

Nginx 反向代理 + 负载均衡 Tomcat
安装 nginx

[root@nginx ~]# yum -y install nginx

启动服务

[root@nginx ~]# service nginx start

访问 nginx 能否正常访问

Tomcat 反向代理 + 负载均衡的四种方法配置

在 http 字段定义 upstream,设置后端 Tomcat 主机和端口,并设置健康状态检查

[root@nginx ~]# vim /etc/nginx/nginx.conf
    upstreamupservers {
      server172.16.4.101:8080 max_fails=2 fail_timeout=1;
      server172.16.4.102:8080 max_fails=2 fail_timeout=1;
}

更多详情见请继续阅读下一页的精彩内容:http://www.linuxidc.com/Linux/2016-12/138747p2.htm

更多 Tomcat 相关教程见以下内容

CentOS 6.6 下安装配置 Tomcat 环境  http://www.linuxidc.com/Linux/2015-08/122234.htm

RedHat Linux 5.5 安装 JDK+Tomcat 并部署 Java 项目  http://www.linuxidc.com/Linux/2015-02/113528.htm 

Tomcat 权威指南(第二版)(中英高清 PDF 版 + 带书签)  http://www.linuxidc.com/Linux/2015-02/113062.htm 

Tomcat 安全配置与性能优化 http://www.linuxidc.com/Linux/2015-02/113060.htm 

Linux 下使用 Xshell 查看 Tomcat 实时日志中文乱码解决方案 http://www.linuxidc.com/Linux/2015-01/112395.htm 

CentOS 64-bit 下安装 JDK 和 Tomcat 并设置 Tomcat 开机启动操作步骤 http://www.linuxidc.com/Linux/2015-01/111485.htm 

CentOS 6.5 下安装 Tomcat  http://www.linuxidc.com/Linux/2015-01/111415.htm 

Tomcat 中 session 的管理机制  http://www.linuxidc.com/Linux/2016-09/135072.htm

转发设置将访问 nginx 的请求转发至 upstream

[root@nginx ~]# vim /etc/nginx/conf.d/default.conf
    location/ {
      #root  /usr/share/nginx/html;
      proxy_pass http://upservers/;
      index  index.jsp index.htmlindex.htm;
    }

设置完成之后,访问 nginx 服务器的地址,就会将请求转发到后端 Tomcat 服务器,并且实现负载均衡

Tomcat 反向代理 + 负载均衡的四种方法配置
Tomcat 反向代理 + 负载均衡的四种方法配置

动静分离设置方法:只需要将 jsp 和 do 结尾的文件转发到后端 Tomcat 服务器即可

location ~* \.(jsp|do)$ {
    proxy_passhttp://tomcat_host:port;
}

设置 nginx 设置完成之后,记得关闭 nginx 服务,以免影响下面的 httpd 测试

基于 httpd 实现反向代理 + 负载均衡
基于 mod_proxy 实现反向代理 + 负载均衡
修改 httpd 主配置文件注销中心主机

[root@httpd ~]# vim /etc/httpd/conf/httpd.conf
#DocumentRoot “/var/www/html”

设置负载均衡相关信息

[root@httpd ~]# vim /etc/httpd/conf.d/mod_proxy.conf
<Proxy balancer://tcsrvs>                 
 BalancerMember http://172.16.4.101:8080 loadfactor=1
 BalancerMember http://172.16.4.102:8080 loadfactor=1
</Proxy>
 
NameVirtualHost *:80
 
<VirtualHost *:80>
  ServerNamewww.a.com
  ProxyVia On
 ProxyRequests Off
 ProxyPreserveHost On
  <Proxy*>
    Orderdeny,allow
    Allowfrom all
 </Proxy>
  ProxyPass/status !
  ProxyPass /balancer://tcsrvs/
 ProxyPassReverse / balancer://tcsrvs/
 <Location />
    Orderdeny,allow
    Allowfrom all
 </Location>
</VirtualHost>

设置完成之后启动服务,访问 httpd 地址就会出现负载均衡效果

Tomcat 反向代理 + 负载均衡的四种方法配置

基于 ajp 协议实现负载均衡
只要修改访问后端服务器的协议为 ajp,端口为 8009 即可

[root@httpd~]# vim /etc/httpd/conf.d/mod_proxy.conf
<Proxy balancer://tcsrvs>
 BalancerMember ajp://172.16.4.101:8009 loadfactor=1
 BalancerMember ajp://172.16.4.102:8009 loadfactor=1
</Proxy>
 
NameVirtualHost *:80
 
<VirtualHost *:80>
  ServerNamewww.a.com
  ProxyVia On
 ProxyRequests Off
 ProxyPreserveHost On
  <Proxy*>
    Orderdeny,allow
    Allowfrom all
 </Proxy>
  ProxyPass/status !
  ProxyPass /balancer://tcsrvs/
 ProxyPassReverse / balancer://tcsrvs/
 <Location />
    Orderdeny,allow
    Allowfrom all
 </Location>
</VirtualHost>

设置完成重启 httpd,即可实现负载均衡效果

设置状态页面

[root@httpd~]# vim /etc/httpd/conf.d/mod_proxy.conf
<Proxy balancer://tcsrvs>
 BalancerMember ajp://172.16.4.101:8009 loadfactor=1
 BalancerMember ajp://172.16.4.102:8009 loadfactor=1
</Proxy>
 
NameVirtualHost *:80
 
<VirtualHost *:80>
  ServerNamewww.a.com
  ProxyVia On
  ProxyRequests Off
 ProxyPreserveHost On
  <Proxy*>
    Orderdeny,allow
    Allowfrom all
 </Proxy>
  ProxyPass/status !
  ProxyPass/balancer-manager !
  ProxyPass /balancer://tcsrvs/
 ProxyPassReverse / balancer://tcsrvs/
 <Location />
    Orderdeny,allow
    Allowfrom all
 </Location>
 <Location /balancer-manager>
  SetHandler balancer-manager
    Proxypass!
    OrderDeny,Allow
    Allowfrom all
 </Location>
</VirtualHost>

访问状态页面可以正常访问

基于 mod_jk 的负载均衡
编译 mod_jk 依赖 httpd 的开发包

[root@httpd ~]# yum -y install httpd-devel

编译安装 mod_jk

tar xf tomcat-connectors-1.2.40-src.tar.gz
cd tomcat-connectors-1.2.40-src/native/
whereis apxs
./configure –with-apxs=/usr/sbin/apxs
make && make install

说明:如果不知道 apxs 文件路径,可以使用 whereis 查找

[root@http native]# whereis apxs
apxs: /usr/sbin/apxs /usr/share/man/man8/apxs.8.gz

编译完成就有如下提示

1 chmod 755 /usr/lib64/httpd/modules/mod_jk.so

配置负载均衡
设置 tomcat 路由信息

[root@tomcat-1 ~]# vim/usr/local/tomcat/conf/server.xml
  <Engine name=”Catalina” defaultHost=”localhost” jvmRoute=”TomcatA”>
[root@tomcat-2 ~]# vim/usr/local/tomcat/conf/server.xml
  <Engine name=”Catalina” defaultHost=”localhost”jvmRoute=”TomcatB” >

修改前端 httpd 配置文件,设置 mod_jk 相关配置

[root@http conf.d]# cat mod_jk.conf
LoadModule jk_modulemodules/mod_jk.so   
JkWorkersFile/etc/httpd/conf.d/workers.properties
JkLogFilelogs/mod_jk.log
JkLogLevelinfo
JkMount/status !
JkMount /*tcsrvs    #表示将请求转发到 tcsrvs 列表
JkMount/status StatA

设置 workers.properties,定义负载均衡相关信息

[root@http conf.d]# cat workers.properties
worker.list=tcsrvs,StatA      #定义 tcsrvs 列表
worker.TomcatB.host=172.16.4.101
worker.TomcatB.port=8009
worker.TomcatB.type=ajp13
worker.TomcatB.lbfactor=1    #设置权重
worker.TomcatA.host=172.16.4.102
worker.TomcatA.port=8009
worker.TomcatA.type=ajp13
worker.TomcatA.lbfactor=1
worker.StatA.type=status
worker.tcsrvs.type=lb      #代理方式为 lb,也就是负载均衡
worker.tcsrvs.balance_workers=TomcatA,TomcatB  #说明 tcsrvs 列表包含,tomcatA 和 TomcatB
worker.tcsrvs.sticky_session=0  #关闭基于 session 的绑定,否则会一直定位到一台服务器,如果设置的值为 1,或者不设置表示开启绑定

访问测试即可实现负载均衡功能

访问状态页面也正常

Tomcat 反向代理 + 负载均衡的四种方法配置

本文永久更新链接地址:http://www.linuxidc.com/Linux/2016-12/138747.htm

环境拓扑

Tomcat 反向代理 + 负载均衡的四种方法配置

环境说明:

 IP 地址功能描述
nginx or httpd172.16.4.100代理服务器,将用户请求分发到后端的 Tomcat 服务器实现反向代理和负载均衡
Tomcat-01172.16.4.101后端实际提供服务的服务器
Tomcat-02172.16.4.102后端实际提供服务的服务器

系统环境都如下所示:

[root@nginx ~]# cat /etc/RedHat-release
CentOS release 6.6 (Final)
[root@bogon ~]# uname -rm
2.6.32-504.el6.x86_64 x86_64

此文章一共有四个实验:

1、使用 nginx 服务器实现反向代理 Tomcat 并实现负载均衡;

2、使用 httpd 的 mod_proxy_http 模块,实现 Tomcat 负载均衡;

3、使用 httpd 的 mod_proxy_ajp 模块,实现 Tomcat 负载均衡;

4、使用 httpd 的 mod_jk 模块,实现 Tomcat 的服务均衡。

后端 Tomcat 配置
四种反代 + 负载均衡都是使用此 Tomcat 部署。

Tomcat-01 部署
安装 jdk

[root@tomcat-1 ~]# rpm -ivh jdk-7u67-linux-x64.rpm

设置 Java 的环境变量

[root@tomcat-1 ~]# vim /etc/profile.d/java.sh
export JAVA_HOME=/usr/java/latest  #设置家目录
export PATH=$JAVA_HOME/bin:$PATH    #设置命令路径
[root@tomcat-1 ~]# . /etc/profile.d/java.sh

使用 -version 输出 Java 的版本号如果可以输出那么表示 Java 环境部署 ok

[root@tomcat-1 ~]# java -version
java version “1.7.0_67”
Java(TM) SE Runtime Environment (build1.7.0_67-b01)
Java HotSpot(TM) 64-Bit Server VM (build 24.65-b04,mixed mode)

安装 tomcat, 并添加一个应用程序实例

[root@tomcat-1 ~]#tar xf apache-tomcat-8.0.23.tar.gz -C /usr/local/
[root@tomcat-1 ~]#cd /usr/local/
[root@tomcat-1 local]# ln -s apache-tomcat-8.0.23/tomcat
[root@tomcat-1 local]# cd tomcat/
[root@tomcat-1 tomcat]# mkdir -p/usr/local/tomcat/webapps/testapp/{WEB-INF,classes,lib,META-INF}
[root@tomcat-1 tomcat]# vim/usr/local/tomcat/webapps/testapp/index.jsp
<%@ page language=”java” %>
<html>
 <head><title>TomcatA</title></head>
 <body>
  <h1><fontcolor=”red”>TomcatA.xmfb.com</font></h1>
    <tablealign=”centre” border=”1″>
    <tr>
      <td>Session ID</td>
    <%session.setAttribute(“xmfb.com”,”xmfb.com”); %>
      <td><%= session.getId() %></td>
    </tr>
    <tr>
      <td>Created on</td>
      <td><%= session.getCreationTime() %></td>
    </tr>
  </table>
 </body>
</html>

设置 tomcat 环境变量

[root@tomcat-1 tomcat]# vim /etc/profile.d/tomcat.sh
export CATALINA_HOME=/usr/local/tomcat
export PATH=$CATALINA_HOME/bin:$PATH
[root@tomcat-1 tomcat]# . /etc/profile.d/tomcat.sh

设置完成启动服务

[root@tomcat-1 tomcat]# catalina.sh start

访问 testapp 应用程序正常

Tomcat 反向代理 + 负载均衡的四种方法配置

Tomcat-02 部署
除了提供的测试页面不同之外,其他设置过程都一样

[root@tomcat-2 tomcat]# vim/usr/local/tomcat/webapps/testapp/index.jsp
<%@ page language=”java” %>
<html>
 <head><title>TomcatB</title></head>
 <body>
  <h1><font color=”blue”>TomcatB.xmfb.com</font></h1>
    <tablealign=”centre” border=”1″>
      <tr>
      <td>Session ID</td>
    <%session.setAttribute(“xmfb.com”,”xmfb.com”); %>
      <td><%= session.getId() %></td>
    </tr>
    <tr>
      <td>Created on</td>
      <td><%= session.getCreationTime() %></td>
    </tr>
  </table>
  </body>
</html>

设置完成访问结果如下

Tomcat 反向代理 + 负载均衡的四种方法配置

Nginx 反向代理 + 负载均衡 Tomcat
安装 nginx

[root@nginx ~]# yum -y install nginx

启动服务

[root@nginx ~]# service nginx start

访问 nginx 能否正常访问

Tomcat 反向代理 + 负载均衡的四种方法配置

在 http 字段定义 upstream,设置后端 Tomcat 主机和端口,并设置健康状态检查

[root@nginx ~]# vim /etc/nginx/nginx.conf
    upstreamupservers {
      server172.16.4.101:8080 max_fails=2 fail_timeout=1;
      server172.16.4.102:8080 max_fails=2 fail_timeout=1;
}

更多详情见请继续阅读下一页的精彩内容:http://www.linuxidc.com/Linux/2016-12/138747p2.htm

更多 Tomcat 相关教程见以下内容

CentOS 6.6 下安装配置 Tomcat 环境  http://www.linuxidc.com/Linux/2015-08/122234.htm

RedHat Linux 5.5 安装 JDK+Tomcat 并部署 Java 项目  http://www.linuxidc.com/Linux/2015-02/113528.htm 

Tomcat 权威指南(第二版)(中英高清 PDF 版 + 带书签)  http://www.linuxidc.com/Linux/2015-02/113062.htm 

Tomcat 安全配置与性能优化 http://www.linuxidc.com/Linux/2015-02/113060.htm 

Linux 下使用 Xshell 查看 Tomcat 实时日志中文乱码解决方案 http://www.linuxidc.com/Linux/2015-01/112395.htm 

CentOS 64-bit 下安装 JDK 和 Tomcat 并设置 Tomcat 开机启动操作步骤 http://www.linuxidc.com/Linux/2015-01/111485.htm 

CentOS 6.5 下安装 Tomcat  http://www.linuxidc.com/Linux/2015-01/111415.htm 

Tomcat 中 session 的管理机制  http://www.linuxidc.com/Linux/2016-09/135072.htm

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计10465字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中