Nginx+Tomcat负载均衡群集与动静分离

Tomcat应用概述

Tomcat概述

  Tomcat 服务器是一个开源的轻量级Web应用服务器,在中小型系统和并发量小的场合下被普遍使用,是开发和调试Servlet、JSP 程序的首选。

  • web服务器只能完成静态资源的请求;
  • web容器能够进行动态资源的请求;
  • tomcat就是一个最简单的web容器,是apache的jarkata项目的子项目。

Tomcat重要目录

Tomcat几个重要的目录如下:

  • bin:存放启动和关闭Tomcat脚本
  • conf:存放Tomcat不同的配置文件
  • doc:存放Tomcat文档
  • lib:存放Tomcat运行需要的库文件
  • logs:存放Tomcat执行时的LOG文件
  • src:存放Tomcat的源代码
  • webapps: Tomcat的主要Web发布目录
  • work:存放jsp编译后产生的class文件

Tomcat结构

Tomcat结构图如下:
在这里插入图片描述
  Tomcat主要组件:服务器Server,服务Service,连接器Connector、容器Container。连接器Connector和容器Container是Tomcat的核心。
  一个Container容器和一个或多个Connector组合在一起,加上其他一些支持的组件共同组成一个Service服务,有了Service服务便可以对外提供能力了,但是Service服务的生存需要一个环境,这个环境便是Server,Server组件为Service服务的正常使用提供了生存环境,Server组件可以同时管理一个或多个Service服务。

Nginx应用概述

nginx应用

Nginx是一款常优秀的HTTP服务器软件

  • 支持高达50 000个并发连接数的响应
  • 拥有强大的静态资源处理能力
  • 运行稳定
  • 内存、CPU等系统资源消耗非常低
    目前很多大型网站都应用Nginx服务器作为后端网站程序的反向代理及负载均衡器,提升整个站点的负载并发能力

nginx负载均衡

nginx负载均衡原理

nginx的负载均衡是通过反向代理实现的,示意图如下:
在这里插入图片描述
  客户端向反向代理发送请求,接着反向代理根据某种负载机制转发请求至目标服务器(这些服务器都运行着相同的应用),并把获得的内容返回给客户端,期中,代理请求可能根据配置被发往不同的服务器。

nginx负载均衡配置参数

Nginx配置反向代理的主要参数:
配置后端服务器池,以提供响应数据

  • upstream服务池名{}

配置将访问请求转发给后端服务器池的服务器处理

  • proxy_pass http://服务池名

upstream是基于四层转发

nginx动静分离

Nginx静态处理优势

  • Nginx处理静态页面的效率远高于Tomcat的处理能力
  • 若Tomcat的请求量为1000次,贝则Nginx的请求量为6000次
  • Tomcat每秒的吞吐量为0.6M,Nginx的每秒吞吐量为3.6M
  • Nginx处理静态资源的能力是Tomcat处理的6倍

nginx动静分离原理

  服务端接收来自客户端的请求中,既有静态资源也有动态资源,静态资源由Nginx提供服务,动态资源Nginx转发至后端
在这里插入图片描述

nginx动静分离配置参数

通过区别网页类型,通过 proxy_pass参数将相关请求转发至相应服务器

Nginx+Tomcat负载均衡群集与动静分离配置示例

案例环境

本案例中以一台Nginx作为前方负载均衡调度器,用来分配用户请求;两台Nginx作为后方web服务器处理用户请求;一台Tomcat做为动态资源网页的处理web服务器。

主机IP系统安装软件
Nginx调度器20.0.0.31/24centos7.6nginx-1.12.0.tar.gz
web服务器nginx0120.0.0.61/24centos7.6nginx-1.12.0.tar.gz
web服务器nginx0220.0.0.100/24centos7.6nginx-1.12.0.tar.gz
tomcat服务器20.0.0.110/24centos7.6apache-tomcat-8.5.16.tar.gz jdk-8u91-linux-x64.tar.gz
客户端20.0.0.40/24Windows 10浏览器

案例拓扑如下:
在这里插入图片描述

示例配置

调度Nginx服务器配置

防火墙设置

[root@localhost ~]#iptables -F
[root@localhost ~]#setenforce 0

nginx安装

[root@localhost ~]#yum -y install pcre-devel zlib-devel gcc gcc-c++
[root@localhost ~]#useradd -M -s /sbin/nologin nginx

[root@localhost ~]#tar zxvf nginx-1.12.0.tar.gz -C /usr/local/

[root@localhost ~]#cd /usr/local/nginx-1.12.0/
[root@localhost nginx-1.12.0]#./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module

[root@localhost nginx-1.12.0]#make && make install

[root@localhost nginx-1.12.0]#ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/

[root@localhost nginx-1.12.0]#nginx -t

[root@localhost nginx-1.12.0]#vim /etc/init.d/nginx
#!/bin/bash
#chkconfig:- 99 20
#description:Nginx Service Control Script
PROG="/usr/local/nginx/sbin/nginx"
PIDF="/usr/local/nginx/logs/nginx.pid"
case "$1" in
 start)
   $PROG
   ;;
 stop)
   kill -s QUIT $(cat $PIDF)
   ;;
 restart)
   $0 stop
   $0 start
   ;;
 reload)
   kill -s HUP $(cat $PIDF)
   ;;
 *)
   echo "Usage:$0 {start|stop|restart|reload}"
   exit 1
esac
exit 0

[root@localhost nginx-1.12.0]#chmod +x nginx
[root@localhost nginx-1.12.0]#chkconfig --add nginx 
[root@localhost nginx-1.12.0]#chkconfig --level 35 nginx on
[root@localhost nginx-1.12.0]#chkconfig --list 
[root@localhost nginx-1.12.0]#service nginx start

Nginx调度服务器的调度配置

[root@localhost nginx-1.12.0]#vim /usr/local/nginx/conf/nginx.conf
http {
#keepalived_timeout 0;
 keepalived_timeout 65;
#gzip on;
##在http模块加上一下配置
upstream nginx_server {
        server 20.0.0.61;
        server 20.0.0.100;
    }
##如果是用tomcat可以用以下语句
#upstream tomcat_server {
#server 20.0.0.61:8080 weight=1;
#server 20.0.0.100:8080 weight=1;
#}
server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   html;
            index  index.html index.htm;
            ##在server模块加入以下语句,调度到nginx01和nginx02下
            proxy_pass http://nginx_server;
        }
        ##这个是转给tomcat服务器处理的配置
        location ~.*.jsp$ {
         proxy_pass http://20.0.0.110:8080;
         proxy_set_header Host $host;
        }

服务启动

service nginx stop
service nginx start

动态页面处理的Tomcat

防火墙规制配置

[root@localhost ~]# iptables -F
[root@localhost ~]# setenforce 0

jdk环境

[root@localhost ~]# tar zxvf jdk-8u91-linux-x64.tar.gz -C /usr/local

[root@localhost ~]# vim /etc/profile

export JAVA_HOME=/usr/local/jdk1.8.0_91
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH

[root@localhost ~]# source /etc/profile

tomcat安装

[root@localhost ~]# tar zxvf apache-tomcat-8.5.16.tar.gz -C /usr/local/

[root@localhost ~]# cd /usr/local/
[root@localhost local]# mv apache-tomcat-8.5.16.tar.gz/ tomcat

[root@localhost local]#ln -s /usr/local/tomcat/bin/startup.sh /usr/local/bin
[root@localhost local]#ln -s /usr/local/tomcat/bin/shutdown.sh /usr/local/bin/

[root@localhost local]#startup.sh
[root@localhost local]#netstat -antp |grep 8080

[root@localhost local]#mkdir /usr/local/tomcat/webapps/test
[root@localhost local]#vim /usr/local/tomcat/webapps/test/index.jsp

Tomcat

测试tomcat的功能
在这里插入图片描述
在这里插入图片描述

后端web服务器nginx

在这里只配置一台另一台也是一样的最后一步要修改的在下面我已经标出来了
防火墙配置

[root@localhost ~]#iptables -F
[root@localhost ~]#setenforce 0

nginx安装

[root@localhost ~]#yum -y install pcre-devel zlib-devel gcc gcc-c++
[root@localhost ~]#useradd -M -s /sbin/nologin nginx

[root@localhost ~]#tar zxvf nginx-1.12.0.tar.gz -C /usr/local/

[root@localhost nginx-1.12.0]#cd /usr/local/nginx-1.12.0/
./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module

[root@localhost nginx-1.12.0]#make && make install

[root@localhost nginx-1.12.0]#ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/

[root@localhost nginx-1.12.0]#nginx -t

[root@localhost nginx-1.12.0]#vim /etc/init.d/nginx
#!/bin/bash
#chkconfig:- 99 20
#description:Nginx Service Control Script
PROG="/usr/local/nginx/sbin/nginx"
PIDF="/usr/local/nginx/logs/nginx.pid"
case "$1" in
 start)
   $PROG
   ;;
 stop)
   kill -s QUIT $(cat $PIDF)
   ;;
 restart)
   $0 stop
   $0 start
   ;;
 reload)
   kill -s HUP $(cat $PIDF)
   ;;
 *)
   echo "Usage:$0 {start|stop|restart|reload}"
   exit 1
esac
exit 0

[root@localhost nginx-1.12.0]#chmod +x nginx
[root@localhost nginx-1.12.0]#chkconfig --add nginx 
[root@localhost nginx-1.12.0]#chkconfig --level 35 nginx on
[root@localhost nginx-1.12.0]#chkconfig --list 
[root@localhost nginx-1.12.0]#service nginx start

[root@localhost nginx-1.12.0]#vim /usr/local/nginx/html/index.html
Nginx01      ##nginx另一台服务器改成Nginx02即可

nginx服务测试
在这里插入图片描述
在这里插入图片描述

动静资源混合场景

刚刚的配置中,当我们访问.jsp动态类型网页的时候,会将请求调度到Tomcat服务器上,若当jsp网页中包含静态资源
如一些图片,我们可以将其交给更适合处理静态资源的nginx服务器上
在Tomcat服务器上,网页内容加上一张图片

[root@localhost ~]#vim /usr/local/tomcat/webapps/test/index.jsp
 #加上
 <img src="Winnie.jpg">
保存退出

到nginx调度器上

[root@localhost ~]#vim /usr/local/nginx/conf/nginx.conf

 location ~.*\.(gif|jpg|jpeg|png|bmp|swf|css)$ {
    root html;
    expires 30d;
}
保存退出
[root@localhost ~]#cd /usr/local/nginx/html/
[root@localhost html]#mkdir test
把图片放在这里
[root@localhost test]# ls test/
Winnie.jpg

测试

负载均衡测试
在这里插入图片描述
在这里插入图片描述

动静分离测试
在这里插入图片描述

图片
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值