Tomcat服务器做为一个免费开放源代码的web应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是不少的场合下被广泛应用,是开发和调试JSP程序的首选,通常来讲,Tomcat虽然和Apache或者Nginx这些服务器同样,具备处理HTML页面的功能,而然因为其处理静态HTML的能力远远不及Apache或者Nginx,因此Tomcat一般是所为一个servlet和JSP容器,单独运行在后端。下图是Tomcat应用场景:
用户访问的永远是apache/Nginx服务器,而后由apache/Nginx服务器转交给Tomcat服务器处理,全部服务器都链接着共享存储服务器,以便使用户每次访问到数据是同样的,apache/Nginx是用来作调度的,也就是熟知的负载均衡,关于负载均衡很少解释了。。。html
一般状况下,一台Tomcat站点因为可能出现单点故障及没法应付过多的客户复杂多样的请求等问题,不能单独应用于生产环境下,因此须要使用负载均衡来解决这些问题。java
Nginx是一个很是优秀的http服务器软件,它可以支持高达50000个并发链接数的响应,拥有强大的静态资源处理能力,运行稳定,而且内存、CPU等系统资源消耗很是低。目前不少大型网站都应用Nginx服务器做为后端网站程序的反向代理及负载均衡器,来提高整个站点的负载并发能力。nginx
开始准备工做,搭建下面的环境,为了简化,就不部署共享存储服务器了,环境以下:
1、部署前准备:web
三台服务器均使用centos7来部署,部署过程当中所用到的软件以下:apache
centos7的系统映像;
Nginx和Tomcat源码包,可自行从官网下载,也可从我提供的连接下载(已打包为ISO映像文件):连接:连接: https://pan.baidu.com/s/1LgiBUuU5a1SQNh4qeqBODw
提取码: h9px
2、配置Tomcat服务器:
一、开始在192.168.1.1服务器上部署Tomcat(关于防火墙的配置这里就省略了,请自行配置防火墙以放行相关流量,我这里直接停掉了防火墙,Tomcat默认使用的端口号是8080;Nginx默认使用的端口号是80):vim
[root@localhost ~]# java -version #查看JDK是否安装,若没有,自行安装 openjdk version "1.8.0_161" OpenJDK Runtime Environment (build 1.8.0_161-b14) OpenJDK 64-Bit Server VM (build 25.161-b14, mixed mode) [root@localhost media]# tar zxf apache-tomcat-8.5.16.tar.gz -C /usr/src #解压Tomcat包 [root@localhost media]# cd /usr/src/ [root@localhost src]# mv apache-tomcat-8.5.16/ /usr/local/tomcat8 #Tomcat不用编译安装,解压后便可用 [root@localhost src]# mkdir -p /web/webapp1 #创建Java的web站点,用于存放网站文件 [root@localhost src]# vim /web/webapp1/index.jsp #创建一个index.jsp的测试页面 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <html> <head> <title>JSP test1 page</title> </head> <body> <% out.println("www.test1111.com");%> </body> </html> [root@localhost src]# vim /usr/local/tomcat8/conf/server.xml #修改Tomcat的主配置文件 ...................................... <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"> #定位到该行,而后添加下面两行内容 <Context docBase="/web/webapp1" path="" reloadable="false"> </Context> #docBase:web应用的文档默认目录; #path=""设置默认“类;” #reloadable设置监视“类”是否变化; [root@localhost ~]# /usr/local/tomcat8/bin/startup.sh #启动服务,中止服务的话,只需将startup.sh换为shutdown.sh便可。 Using CATALINA_BASE: /usr/local/tomcat8 Using CATALINA_HOME: /usr/local/tomcat8 Using CATALINA_TMPDIR: /usr/local/tomcat8/temp Using JRE_HOME: /usr Using CLASSPATH: /usr/local/tomcat8/bin/usr/local/tomcat8/bin/tomcat-juli.jar Tomcat started. [root@localhost src]# netstat -antp | grep 8080 #查看默认端口8080是否在监听状态 tcp6 0 0 :::8080 :::* LISTEN 13220/java
本机测试访问:192.168.1.1:8080,看到以下测试页面:
至此,192.168.1.1的Tomcat就已经配置完成了,另外一台Tomcat服务器192.168.1.2的配置和192.168.1.1的配置彻底同样,将上面的配置在192.168.1.2服务器上配置一遍便可,不过为了测试的时候能够看出负载均衡的效果,让咱们能够看出每次访问的服务器都不是同一台,须要将192.168.1.2的Tomcat服务器的测试页面和192.168.1.1的页面不同。
不过在实际生产环境中,两台Tomcat访问的必定是使用同一个共享存储服务器,不论是哪台服务器向用户提供服务,用户接受到的页面必定是同样的。后端
咱们在192.168.1.2的服务器上将上面的配置来一遍吧,将192.168.1.2服务器的测试页面内容更改一下,以下:centos
[root@localhost src]# vim /web/webapp1/index.jsp <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <html> <head> <title>JSP test1 page</title> </head> <body> <% out.println("www.test22222222222222.com");%> </body> </html>
3、配置Nginx服务器(IP:192.168.1.1):tomcat
一、安装Nginx:bash
[root@localhost ~]# yum -y install pcre-devel zlib-devel openssl-devel #安装依赖包 [root@localhost ~]# useradd www -s /bin/false #建立运行用户 [root@localhost media]# tar zxf nginx-1.12.0.tar.gz -C /usr/src #解包 [root@localhost media]# cd /usr/src/nginx-1.12.0/ #切换至该目录 [root@localhost nginx-1.12.0]# ./configure --prefix=/usr/local/nginx --user=www --group=www --with-file-aio --with-http_stub_status_module --with-http_gzip_static_module --with-http_flv_module && make && make install #编译安装 [root@localhost nginx-1.12.0]# vim /usr/local/nginx/conf/nginx.conf #编辑主配置文件 ............................. #gzip on; #定位到该行,写入下面四行 upstream tomcat_server { server 192.168.1.1:8080 weight=1; server 192.168.1.2:8080 weight=1; } #写到这里结束 #weight参数表示权重,权重越高,表示被分配到的几率越大。 #为了测试效果明显,这里将权重设置为同样 server { listen 80; server_name localhost; ...................... location / { root html; index index.html index.htm; proxy_pass http://tomcat_server; #定位到该{ }中,写入该行,“http://”后面的名字要和上面添加的upstream项后面的名字一致,才可实现调度。 }
二、优化Nginx的控制:
[root@localhost nginx-1.12.0]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/ 建立主程序的连接文件 [root@localhost ~]# vim /etc/init.d/nginx #编辑服务脚本 !/bin/bash chkconfig: - 99 20 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 ~]# chmod +x /etc/init.d/nginx #添加执行权限 [root@localhost ~]# chkconfig --add nginx #添加为系统服务 [root@localhost nginx-1.12.0]# nginx -t #检查主配置文件是否有误 nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful [root@localhost ~]# systemctl start nginx #启动Nginx服务,以确认脚本的正常运行 [root@localhost ~]# netstat -anpt | grep nginx #查看80端口是否处于监听状态 tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 90475/nginx: master
4、访问测试:
至此,部署工做已经完成,如今使用客户机访问Nginx服务器192.168.1.1测试,效果以下:
第一次访问将会看到以下界面:
刷新一下网页将会看到以下界面能够看到,咱们访问的是Nginx服务器,真正处理访问请求的是Tomcat服务器,并且每次访问请求都是不一样的Tomcat服务器来处理,这说明负载均衡群集搭建成功,已经能够在两个Tomcat server站点进行切换了。