Tomcat 服务器是一个开源的轻量级Web应用服务器,在中小型系统和并发量小的场合下被普遍使用,是开发和调试Servlet、JSP 程序的首选。
Tomcat几个重要的目录如下:
Tomcat结构图如下:
Tomcat主要组件:服务器Server,服务Service,连接器Connector、容器Container。连接器Connector和容器Container是Tomcat的核心。
一个Container容器和一个或多个Connector组合在一起,加上其他一些支持的组件共同组成一个Service服务,有了Service服务便可以对外提供能力了,但是Service服务的生存需要一个环境,这个环境便是Server,Server组件为Service服务的正常使用提供了生存环境,Server组件可以同时管理一个或多个Service服务。
Nginx是一款常优秀的HTTP服务器软件
nginx的负载均衡是通过反向代理实现的,示意图如下:
客户端向反向代理发送请求,接着反向代理根据某种负载机制转发请求至目标服务器(这些服务器都运行着相同的应用),并把获得的内容返回给客户端,期中,代理请求可能根据配置被发往不同的服务器。
Nginx配置反向代理的主要参数:
配置后端服务器池,以提供响应数据
配置将访问请求转发给后端服务器池的服务器处理
upstream是基于四层转发
Nginx静态处理优势
服务端接收来自客户端的请求中,既有静态资源也有动态资源,静态资源由Nginx提供服务,动态资源Nginx转发至后端
通过区别网页类型,通过 proxy_pass参数将相关请求转发至相应服务器
本案例中以一台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 | 浏览器 |
防火墙设置
[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
防火墙规制配置
[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
在这里只配置一台另一台也是一样的最后一步要修改的在下面我已经标出来了
防火墙配置
[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即可
刚刚的配置中,当我们访问.jsp动态类型网页的时候,会将请求调度到Tomcat服务器上,若当jsp网页中包含静态资源
如一些图片,我们可以将其交给更适合处理静态资源的nginx服务器上
在Tomcat服务器上,网页内容加上一张图片
[root@localhost ~]#vim /usr/local/tomcat/webapps/test/index.jsp
#加上
保存退出
到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