文章目录
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/24 | centos7.6 | nginx-1.12.0.tar.gz |
web服务器nginx01 | 20.0.0.61/24 | centos7.6 | nginx-1.12.0.tar.gz |
web服务器nginx02 | 20.0.0.100/24 | centos7.6 | nginx-1.12.0.tar.gz |
tomcat服务器 | 20.0.0.110/24 | centos7.6 | apache-tomcat-8.5.16.tar.gz jdk-8u91-linux-x64.tar.gz |
客户端 | 20.0.0.40/24 | Windows 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
测试
负载均衡测试
动静分离测试
图片