Nginx+Tomcat负载均衡,动静分离群集 原理加实验

tech2025-10-09  1

文章目录

Tomcat概述Tomcat简介:Tomcat重要目录 Nginx应用Nginx负载均衡实现原理Nginx动静分离实现原理 实验实验环境推荐步骤

Tomcat概述

Tomcat简介:

●最初是由Sun的软件构架师詹姆斯.邓肯.戴维森开发

●安装Tomcat后,安装路径下面的目录和文件,是使用或者配置Tomcat的重要文件

Tomcat重要目录

Bin:存放启动和关闭Tomcat脚本Conf:存放Tomcat不同的配置文件Doc:存放Tomcat文档Lib:存放Tomcat运行需要的库文件Logs:存放Tomcat执行时的LOG文件Src:存放Tomcat的源代码Webapps:Tomcat的主要Web发布目录Work:存放jsp编译后产生的class文件

Nginx应用

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

支持高达50000个并发连接数的响应拥有强大的静态资源处理能力运行稳定内存,CPU等系统资源消耗非常低

●目前很多大型网站都应用Nginx服务器作为后端网站程序的反向代理及负载均衡器,提升整个站点的负载并发能力

Nginx负载均衡实现原理

●Nginx实现负载均衡是通过反向代理实现

●反向代理原理 Nginx配置反向代理的主要参数 ●Upstream 服务池名{ }

配置后端服务器池,以提高响应数据

●Proxy_pass http://服务池名

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

Nginx动静分离实现原理

●动静分离原理

服务端接收来自客户端的请求中,既有静态资源也有动态资源,静态资源由Nginx提供服务,动态资源Nginx转发至后端

●Nginx静态处理优势

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

实验

实验环境

nginx虚拟机 192.168.148.135 nginx服务tomcat虚拟机 192.168.148.136 tomcat服务tomcat虚拟机 192.168.148.137 tomcat服务

Nginx+Tomcat动静分离实验

推荐步骤

这边做动静分离只需要其中两台虚拟机,一台ngxin虚拟机和一台tomcat虚拟机 ●一.先配置nginx虚拟机 1.将nginx软件包放到xhell连接器中,安装nginx

[root@localhost ~]# hostnamectl set-hostname nginx ##修改主机名方便区分 [root@nginx ~]# setenforce 0 ##关闭防护系统 [root@nginx ~]# iptables -F ##清空防火墙规则 [root@nginx ~]# useradd -M -s /sbin/nologin nginx ##建立管理用户 [root@nginx ~]# tar zxvf nginx-1.12.2.tar.gz ##解压文件 [root@nginx ~]# cd nginx-1.12.2/ [root@nginx ~]# ./configure \ --prefix=/usr/local/nginx \ ##指定路径 --user=nginx \ ##管理用户 --group=nginx ##管理属组 [root@web1 nginx-1.12.2]# make&&make install ##编译安装 [root@nginx nginx-1.12.2]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/ ####建立软链接方便管理 [root@nginx nginx-1.12.2]# cd /etc/init.d/ ##建立启动脚本添加使用service工具进行管理 [root@nginx init.d]# vim 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@nginx init.d]# chmod +x nginx ##增加执行权限 [root@nginx init.d]# chkconfig --add nginx [root@nginx init.d]# service nginx start

2.nginx配置完成后开始配置tomcat

[root@localhost ~]# hostnamectl set-hostname tomcat01 [root@localhost ~]# su [root@tomcat01 ~]# setenforce 0 [root@tomcat01 ~]# iptables -F [root@tomcat01 ~]# tar zxvf jdk-8u91-linux-x64.tar.gz -C /usr/local/ [root@tomcat01 ~]# vim /etc/profile ##修改环境变量 ....在底行加入 export JAVA_HOME=/usr/local/jdk1.8.0_91 ##家目录 export JRE_HOME=${JAVA_HOME}/jre ##JREhome export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib ##class文件 export PATH=${JAVA_HOME}/bin:$PATH ##系统环境变量 [root@tomcat01 ~]# source /etc/profile [root@tomcat01 ~]# tar zxvf apache-tomcat-8.5.16.tar.gz -C /usr/local/ ##解压tomcat软件包 [root@tomcat01 ~]# cd /usr/local/ [root@tomcat01 local]# mv apache-tomcat-8.5.16/ tomcat ##重命名Tomcat,方便管理 [root@tomcat01 local]# ln -s /usr/local/tomcat/bin/shutdown.sh /usr/local/bin ##创建脚本连接方便管理 [root@tomcat01 local]# ln -s /usr/local/tomcat/bin/startup.sh /usr/local/bin [root@tomcat01 local]# startup.sh ##开启服务

3.在nginx的虚拟机上配置动静分离,修改配置文件

[root@nginx init.d]# vim /usr/local/nginx/conf/nginx.conf #access_log logs/host.access.log main; location ~.*.jsp$ { proxy_pass http://192.168.148.136:8080; ##动态页面交给tomcat处理 proxy_set_header Host $host; } [root@nginx init.d]# nginx -t ##检查内容是否正确

4.在nginx中创建静态页面

[root@nginx html]# cd /usr/local/nginx/html/ [root@nginx html]# vim index.html ##写入静态页面信息 <!DOCTYPE html> <html> <head> <title>静态页面</title> <meta http-equiv="content-type" content="textml;charset=utf-8"> <style> body { width: 35em; margin: 0 auto; font-family: Tahoma, Verdana, Arial, sans-serif; } </style> </head> <body> <h1>静态网站</h1> <p>If you see this page, the nginx web server is successfully installed and working. Further configuration is required.</p> <p>For online documentation and support please refer to <a href="http://nginx.org/">nginx.org</a>.<br/> Commercial support is available at <a href="http://nginx.com/">nginx.com</a>.</p> <p><em>这是一个静态网页.</em></p> </body> </html>

5.在tomcat中创建动态页面

[root@tomcat01 webapps]# cd /usr/local/tomcat/webapps [root@tomcat01 webapps]# mkdir test ##创建一个test站点 [root@tomcat01 webapps]# cd test/ [root@tomcat01 test]# vim index.jsp <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <html> <head> <title>JSP test1 page</title> </head> <body> <% out.println("Welcome dongtai Web");%> </body> </html> [root@tomcat01 test]# shutdown.sh [root@tomcat01 test]# startup.sh

6.打开win10虚拟机做动静分离访问测试 Nginx处理静态图片,Tomcat处理动态页面

推荐步骤 1.在tomcat的虚拟机上配置

[root@tomcat01 test]# vim index.jsp <body> <% out.println("Welcome dongtai Web");%> <img src="test.jpg"/> ##创建图片信息,这边用的是相对路径,所以图片要放在nginx的test文件夹中 </body>

2.nginx虚拟机上配置,修改配置文件

[root@nginx conf]# vim /usr/local/nginx/conf/nginx.conf #access_log logs/host.access.log main; location ~.*\.(gif|jpg|jpeg|png|bmp|swf|css)$ { ##支持的图片格式 root html; expires 30d; ##支持缓存30}

3.在nginx中也要创建一个test文件夹和tomcat的站点位置对应起来

[root@nginx conf]# cd .. [root@nginx nginx]# cd html/ ##切换到nginx的站点 [root@nginx html]# mkdir test ##创建和tomcat相同的文件夹test用于存放图片 [root@nginx test]# ls 12382c7b85ff754752d97dbdd2d23fe9.jpg [root@nginx test]# mv 12382c7b85ff754752d97dbdd2d23fe9.jpg test.jpg ##修改图片名称 [root@nginx test]# ls test.jpg [root@nginx test]# service nginx restart ##重启服务

4.打开win10浏览器输入网址http://192.168.148.135/test/index.jsp测试

实验结果:发现nginx在处理静态图片,tomcat在处理动态页面

Nginx+tomcat负载均衡实验 推荐步骤: 1.先配置第三台虚拟机,相同的步骤安装tomcat,这边配置参考tomcat01

[root@tomcat02 local]# startup.sh ##启动服务 [root@tomcat02 tomcat]# cd /usr/local/tomcat/ [root@tomcat02 tomcat]# mkdir -pv /web/webapp1 ##创建站点 mkdir: 已创建目录 "/web" mkdir: 已创建目录 "/web/webapp1" [root@tomcat02 tomcat]# 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("Welcome tomcat02 Web");%> ##写入信息 </body> </html> [root@tomcat02 tomcat]# vim /usr/local/tomcat/conf/server.xml ##修改配置文件让其识别 ......148行处修改 <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"> <Context docBase="/web/webapp1" path="" reloadable="false"> ####添加此段站点信息 </Context> [root@tomcat02 tomcat]# shutdown.sh ##关闭服务 [root@tomcat02 tomcat]# startup.sh ##开启服务

2.配置tomcat01,其他的都一样,就是页面信息需要区分开来

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <html> <head> <title>JSP test1 page</title> </head> <body> <% out.println("Welcome tomcat01 Web");%> ##页面信息区分开来 </body> </html> [root@tomcat01 tomcat]# shutdown.sh ##关闭服务 [root@tomcat01 tomcat]# startup.sh ##开启服务

3.配置nginx负载均衡

[root@nginx test]# vim /usr/local/nginx/conf/nginx.conf ##修改配置文件 .......省略,添加 #keepalive_timeout 0; keepalive_timeout 65; #gzip on; upstream tomcat_server { ##添加节点服务器地址 server 192.168.148.136:8080 weight=1; server 192.168.148.137:8080 weight=1; } ......省略 location / { root html; index index.html index.htm; proxy_pass http://tomcat_server; } [root@nginx test]# service nginx restart ##修改完后,重启服务

4.打开win10做访问测试

最新回复(0)