高性能Web服务之Nginx+Tomcat实现负债均衡反向代理及动静分离

在实际生产中,Tomcat服务器一般不单独使用在项目中,对于静态资源的响应Nginx表现的比较好,另外由于nginx是专门用于反向代理的服务器,所以很容易实现将java的请求转发到后端交给tomcat容器处理,而本身用来处理静态资源。

通常tomcat前端是nginx或apache,后端都为tomcat,也就意味着无论前端是什么角色都是以代理的方式进行工作的;但是要注意的是如果基于nginx做反向代理,转发请求到tomcat的时候是基于http协议进行转发的;但注意的是tomcat的连接器有httpajp jk2 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实现负债均衡反向代理及动静分离内容

时间: 2024-10-13 10:34:32

高性能Web服务之Nginx+Tomcat实现负债均衡反向代理及动静分离的相关文章

高性能Web服务之Httpd+Tomcat实现负债均衡反向代理实现

httpd作为前端的反向代理,那有两种选择,一是利用"proxy_module"这个代理框架下的"proxy_http_module"与"proxy_ajp_module"这两个代理模块,这两个代理模块是独自工作的,二是利用"mod_jk"模块实现httpd的反向代理至后端tomcat. 下面通过以下架构部署httpd+tomcat实现方向代理: 反向代理系统架构规划如下: 服务器角色 服务器IP httpd eth0:172

高性能Web服务之haproxy应用详解及实现论坛的动静分离机制

HAProxy提供高可用性.负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费.快速并且可靠的一种解决方案.HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理.HAProxy运行在当前的硬件上,完全可以支持数以万计的并发连接.并且它的运行模式使得它可以很简单安全的整合进您当前的架构中, 同时可以保护你的web服务器不被暴露到网络上. 下面通过案例架构详解HAproxy应用,架构图如下所示: 以上架构实现过程如下: (1).在node1,node

Nginx+Tomcat实现反向代理及动静分离

通常tomcat部署结构 通常tomcat前端是nginx或apache,后端都为tomcat,也就意味着无论前端是什么角色都是以代理的方式进行工作的 但是要注意的是如果基于nginx做反向代理,转发请求到tomcat的时候是基于http协议进行转发的 但注意的是tomcat的连接器有httpajp jk2 jserv 而如果基于nginx做转发的话只支持http做转发 而如果apache做代理转发的话,几乎常用协议都支持 但常用的连接类型都是ajp协议,因为ajp协议可以工作在二进制模式下,而

Nginx + Tomcat + Ngx_cache_purge 实现高效反向代理

Nginx + Tomcat + Ngx_cache_purge 实现高效反向代理Nginx + Tomcat + Ngx_cache_purge 实现高效反向代理Nginx + Tomcat + Ngx_cache_purge 实现高效反向代理Nginx + Tomcat + Ngx_cache_purge 实现高效反向代理Nginx + Tomcat + Ngx_cache_purge 实现高效反向代理 bangumi.tv//group/topic/145491 bangumi.tv//g

haproxy实现的web反向代理,动静分离,以及基于keepalived实现的haproxy的高可用

   haproxy于Nginx一样都是做反向代理,但是与其相比,haproxy更专注于web代理.HAProxy是单进程多请求,也支持多进程,HAProxy运行在当前的硬件上,完全可以支持数以万计的并发连接.       haproxy功能的实现全部基于配置文件,所以我们需要了解很多的配置指令,玩转指令,再结合实际情况,我们就玩转了haproxy,其实haproxy的配置也很简单,下面我们一起简单认识和了解一些haproxy的基本功能和相关知识.         CentOS6.5自带的rpm

Nginx反向代理、动静分离、负载均衡及rewrite隐藏路径详解(Nginx Apache MySQL Redis)–第三部分

Nginx反向代理.动静分离.负载均衡及rewrite隐藏路径详解 (Nginx Apache MySQL Redis) 楓城浪子原创,转载请标明出处! 更多技术博文请见个人博客:https://fengchenglangzi.000webhostapp.com 微信bh19890922 QQ445718526.490425557 三.Nginx动静分离及负载均衡 3.1 Nginx安装 请参考:https://fengchenglangzi.000webhostapp.com/?p=511 亦

nginx反向代理(动静分离)

使用反向代理(动静分离)可以让nginx专注静态内容,把动态请求交给apache来处理,发挥各自的优势,而且整个架构更加清晰: 这里假设你已经搭建好了nginx环境; 为了简单起见,就不用源码编译安装了,直接使用apt方式安装,不影响说明: apt-get install apache2 -y apt-get install libapache2-mod-php7.0 #php版本随意 修改apache的配置文件,首先端口不能跟nginx重复: 采用apt方式安装的apache需要改如下两个配置

Nginx+Tomcat实现反向代理与动静分离

1. 什么是动静分离 所谓动静分离就是通过nginx(或apache等)来处理用户端请求的静态页面,tomcat(或weblogic)处理动态页面,从而达到动静页面访问时通过不同的容器来处理. 2. 为什么做动静分离 Nginx处理静态页面的效率远高于tomcat,所有我们只让tomcat干自己擅长的事情,以事实说话,我们通过ab进行对一个静态页面访问做压力测试.   www.2cto.com 1) 做动静分离后nginx处理静态页面的压力测试: # ab -n 1000 -c 200 http

搭建高性能web服务器之Nginx入门介绍(1.1)

<第1章研究Nginx前的准备工作,本章介绍了Nginx的特点以及在什么场景下需要使用Nginx,同时介绍了如何获取Nginx以及如何配置.编译.安装运行Nginx.本章还深入介绍了最为复杂的configure过程,这部分内容是学习本书第二部分和第三部分的基础.本节为大家介绍Nginx是什么>. 1.Nginx是什么,Nginx能帮我们做什么 2012年,Nginx荣获年度云计算开发奖(2012 Cloud Award for Developer of the Year),并成长为世界第二大W