Tomcat负载均衡、动静分离

目录

引言

实验图解 

1.实验环境搭建 

2.部署Nginx服务器及配置静态页面Web服务

3.部署Tomcat服务及配置动态页面Web服务

4.实验验收

动态页面

静态页面


引言

tomcat服务既可以处理动态页面,也可以处理静态页面;但其处理静态页面的速度远远不如nginx和apache服务,但ngingx和apache服务无法直接处理动态页面,下文就讲述了nginx和tomcat组合使用,实现动静分离和负载均衡;目前很多大型网站都应用Nginx服务器作为后端网站程序的反向代理及负载均衡器,提升整个站点的负载并发能力。

  • standalone模式,Tomcat单独运行,直接接受用户的请求,不推荐。

    反向代理,单机运行,提供了一个Nginx作为反向代理,可以做到静态由nginx提供响应,动态jsp代理给Tomcat

  • LNMT:Linux + Nginx + MySQL + Tomcat

    LAMT:Linux + Apache(Httpd)+ MySQL + Tomcat

    前置一台Nginx,给多台Tomcat实例做反向代理和负载均衡调度,Tomcat上部署的纯动态页面更适合

    LNMT:Linux + Nginx + MySQL + Tomcat

  • 多级代理

    LNNMT:Linux + Nginx + Nginx + MySQL + Tomcat

动态服务器的问题,往往就是并发能力太弱,往往需要多台动态服务器一起提供服务。如何把并发的压力分摊,这就需要调度,采用一定的调度策略,将请求分发给不同的服务器,这就是Load Balance负载均衡。当单机Tomcat,演化出多机多级部署的时候,一个问题便凸显出来,这就是Session。而这个问题的由来,都是由于HTTP协议在设计之初没有想到未来的发展。

实验图解 

在部署Tomcat之前,要部署好环境(JDK),因为JDK是Tomcat运行的必要环境

1.实验环境搭建 

根据实验环境,客户端可以用真机模拟,此实验需要五台虚拟机,Centos7-1Nginx代理服务器,Centos7-2和Centos7-3作为负载均衡第一分支的后端服务器,Centos7-4和Centos7-6作为负载均衡第二分支的后端服务器;Centos7-2和Centos7-4作为处理静态资源的服务器,需要搭建Nginx服务;Centos7-3和Centos7-6作为处理动态资源的服务器,需要搭建Tomcat服务

五台虚拟机统一关闭防火墙

2.部署Nginx服务器及配置静态页面Web服务

Centos7-1、Centos7-2、Centos7-4都要部署Nginx服务

[root@7-1 opt]#yum -y install pcre-devel zlib-devel openssl-devel gcc gcc-c++ make
#安装依赖关系包
[root@7-1 opt]#useradd -M -s /sbin/nologin nginx
#新建Nginx用户 方便管理
[root@7-1 opt]#yum install nginx -y
[root@7-1 opt]#systemctl start nginx
[root@7-1 opt]#systemctl status nginx
● nginx.service - The nginx HTTP and reverse proxy serverLoaded: loaded (/usr/lib/systemd/system/nginx.service; disabled; vendor preset: disabled)Active: active (running) since 六 2024-03-02 13:40:43 CST; 3s agoProcess: 2436 ExecStart=/usr/sbin/nginx (code=exited, status=0/SUCCESS)Process: 2433 ExecStartPre=/usr/sbin/nginx -t (code=exited, status=0/SUCCESS)Process: 2429 ExecStartPre=/usr/bin/rm -f /run/nginx.pid (code=exited, status=0/SUCCESS)Main PID: 2438 (nginx)CGroup: /system.slice/nginx.service├─2438 nginx: master process /usr/sbin/nginx├─2439 nginx: worker process└─2440 nginx: worker process3月 02 13:40:42 7-1 systemd[1]: Starting The nginx HTTP and reverse prox.....
3月 02 13:40:43 7-1 nginx[2433]: nginx: the configuration file /etc/ngin...ok
3月 02 13:40:43 7-1 nginx[2433]: nginx: configuration file /etc/nginx/ng...ul
3月 02 13:40:43 7-1 systemd[1]: Started The nginx HTTP and reverse proxy...r.
Hint: Some lines were ellipsized, use -l to show in full.

 

[root@7-2 ~]#yum -y install pcre-devel zlib-devel openssl-devel gcc gcc-c++ make
#安装依赖关系包
[root@7-2 ~]#useradd -M -s /sbin/nologin nginx
#新建Nginx用户  方便管理
[root@7-2 ~]#systemctl start nginx
[root@7-2 ~]#systemctl status nginx
● nginx.service - The nginx HTTP and reverse proxy serverLoaded: loaded (/usr/lib/systemd/system/nginx.service; static; vendor preset: disabled)Active: active (running) since Sat 2024-03-02 00:32:49 EST; 5s agoProcess: 1986 ExecStart=/usr/local/nginx/sbin/nginx (code=exited, status=0/SUCCESS)Process: 1983 ExecStartPre=/usr/local/nginx/sbin/nginx -t (code=exited, status=0/SUCCESS)Main PID: 1988 (nginx)CGroup: /system.slice/nginx.service├─1988 nginx: master process /usr/local/nginx/sbin/nginx└─1989 nginx: worker processMar 02 00:32:49 node2.localdomain systemd[1]: Starting The nginx HTTP and ....
Mar 02 00:32:49 node2.localdomain nginx[1983]: nginx: the configuration fi...k
Mar 02 00:32:49 node2.localdomain nginx[1983]: nginx: configuration file /...l
Mar 02 00:32:49 node2.localdomain systemd[1]: Failed to read PID from file...t
Mar 02 00:32:49 node2.localdomain systemd[1]: Started The nginx HTTP and r....
Hint: Some lines were ellipsized, use -l to show in full.
[root@7-2 ~]#cd /usr/local/nginx/
[root@7-2 nginx]#ls
client_body_temp  fastcgi_temp  logs        sbin       uwsgi_temp
conf              html          proxy_temp  scgi_temp
[root@7-2 nginx]#cd html/
[root@7-2 html]#ls
50x.html  index.html
[root@7-2 html]#mkdir /usr/local/nginx/html/static
[root@7-2 html]#ls
50x.html  index.html  static
[root@7-2 html]#cd static/
[root@7-2 static]#rz -E
rz waiting to receive.
[root@7-2 static]#ls
f32b966ddaf1002dfa4b2f6c556e57f0.jpg
[root@7-2 static]#mv f32b966ddaf1002dfa4b2f6c556e57f0.jpg nginx.jpg
[root@7-2 static]#ls
nginx.jpg
[root@7-2 static]#vim /usr/local/nginx/conf/nginx.conf

静态要加jpg,路径要修改为/usr/local/nginx/html/static 

[root@7-4 ~]#yum -y install pcre-devel zlib-devel openssl-devel gcc gcc-c++ make
#安装依赖关系包
[root@7-4 ~]#useradd -M -s /sbin/nologin nginx
#新建Nginx用户 方便管理
[root@7-4 ~]#systemctl start nginx
[root@7-4 ~]#systemctl status nginx
● nginx.service - The nginx HTTP and reverse proxy serverLoaded: loaded (/usr/lib/systemd/system/nginx.service; static; vendor preset: disabled)Active: active (running) since 六 2024-03-02 13:33:00 CST; 12s agoProcess: 1962 ExecStart=/usr/local/nginx/sbin/nginx (code=exited, status=0/SUCCESS)Process: 1960 ExecStartPre=/usr/local/nginx/sbin/nginx -t (code=exited, status=0/SUCCESS)Main PID: 1964 (nginx)CGroup: /system.slice/nginx.service├─1964 nginx: master process /usr/local/nginx/sbin/nginx└─1965 nginx: worker process3月 02 13:32:59 G.D systemd[1]: Starting The nginx HTTP and reverse prox.....
3月 02 13:33:00 G.D nginx[1960]: nginx: the configuration file /usr/loca...ok
3月 02 13:33:00 G.D nginx[1960]: nginx: configuration file /usr/local/ng...ul
3月 02 13:33:00 G.D systemd[1]: Started The nginx HTTP and reverse proxy...r.
Hint: Some lines were ellipsized, use -l to show in full.
[root@7-4 ~]#cd /usr/local/nginx/html/
[root@7-4 html]#ls
50x.html  index.html
[root@7-4 html]#mkdir static
[root@7-4 html]#cd static/
[root@7-4 static]#ls
[root@7-4 static]#rz -E
rz waiting to receive.
[root@7-4 static]#ls
f32b966ddaf1002dfa4b2f6c556e57f0.jpg
[root@7-4 static]#mv f32b966ddaf1002dfa4b2f6c556e57f0.jpg nginx.jpg
[root@7-4 static]#ls
nginx.jpg

3.部署Tomcat服务及配置动态页面Web服务

Centos7-3和Centos7-6需要部署Tomcat服务

[root@7-3 ~]#cd /opt
[root@7-3 opt]#rz -E
rz waiting to receive.
[root@7-3 opt]#ls
jdk-8u291-linux-x64.tar.gz
[root@7-3 opt]#tar xf jdk-8u291-linux-x64.tar.gz 
[root@7-3 opt]#ls
jdk1.8.0_291  jdk-8u291-linux-x64.tar.gz
[root@7-3 opt]#java -version
openjdk version "1.8.0_131"
OpenJDK Runtime Environment (build 1.8.0_131-b12)
OpenJDK 64-Bit Server VM (build 25.131-b12, mixed mode)
[root@7-3 opt]#mv jdk1.8.0_291/ /usr/local/
[root@7-3 opt]#cd /usr/local/
[root@7-3 local]#ls
bin  games    jdk1.8.0_291  lib64    nginx  share
etc  include  lib           libexec  sbin   src
[root@7-3 local]#vim /etc/profile.d/jdk.sh 
[root@7-3 local]#cat /etc/profile.d/jdk.sh 
export JAVA_HOME=/usr/local/jdk
export PATH=$JAVA_HOME/bin:$PATH
export JRE_HOME=$JAVA_HOME/jre 
export CLASSPATH=$JAVA_HOME/lib/:$JRE_HOME/lib/
[root@7-3 local]#source /etc/profile.d/jdk.sh 
[root@7-3 local]#echo $PATH
/usr/local/jdk1.8.0_91/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[root@7-3 local]#ln -s jdk1.8.0_291/ jdk
[root@7-3 ~]#java -version
java version "1.8.0_291"
Java(TM) SE Runtime Environment (build 1.8.0_291-b10)
Java HotSpot(TM) 64-Bit Server VM (build 25.291-b10, mixed mode)
[root@7-3 opt]#cd /opt
[root@7-3 opt]#ls
jdk-8u291-linux-x64.tar.gz
[root@7-3 opt]#rz -E
rz waiting to receive.
[root@7-3 opt]#ls
apache-tomcat-9.0.16.tar.gz  jdk-8u291-linux-x64.tar.gz
[root@7-3 opt]#tar xf apache-tomcat-9.0.16.tar.gz 
[root@7-3 opt]#ls
apache-tomcat-9.0.16  apache-tomcat-9.0.16.tar.gz  jdk-8u291-linux-x64.tar.gz
[root@7-3 opt]#cp -r apache-tomcat-9.0.16 /usr/local/
[root@7-3 opt]#cd /usr/local/
[root@7-3 local]#ls
apache-tomcat-9.0.16  etc    include       lib    libexec  sbin   src
bin                   games  jdk1.8.0_291  lib64  nginx    share
[root@7-3 local]#ln -s apache-tomcat-9.0.16/ tomcat
[root@7-3 local]#ls
apache-tomcat-9.0.16  etc    include       lib    libexec  sbin   src
bin                   games  jdk1.8.0_291  lib64  nginx    share  tomcat
[root@7-3 ~]#ss -natp |grep 8080
LISTEN     0      100         :::8080                    :::*                   users:(("java",pid=3237,fd=57))
[root@7-3 ~]#cd /usr/local/tomcat/webapps/
[root@7-3 webapps]#ls
docs  examples  host-manager  manager  ROOT
[root@7-3 webapps]#mkdir test
[root@7-3 webapps]#ls
docs  examples  host-manager  manager  ROOT  test
[root@7-3 webapps]#cd test/
[root@7-3 test]#ls
[root@7-3 test]#vim index.jsp
[root@7-3 test]#cat index.jsp 
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html><head><tile>JSP test1 page </title></head><boby><% out.println("动态页面1,http://www.test1.com");%></boby>
</html>
[root@7-3 test]#vim /usr/local/tomcat/conf/server.xml 
[root@7-3 test]#/usr/local/tomcat/bin/startup.sh 
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr/local/jdk/jre
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.
[root@7-4 static]#vim /usr/local/nginx/conf/nginx.conf

[root@7-6 ~]#cd /opt
[root@7-6 opt]#rz -E
rz waiting to receive.
[root@7-6 opt]#ls
jdk-8u291-linux-x64.tar.gz
[root@7-6 opt]#tar xf jdk-8u291-linux-x64.tar.gz 
[root@7-6 opt]#ls
jdk1.8.0_291  jdk-8u291-linux-x64.tar.gz
[root@7-6 opt]#java -version
openjdk version "1.8.0_131"
OpenJDK Runtime Environment (build 1.8.0_131-b12)
OpenJDK 64-Bit Server VM (build 25.131-b12, mixed mode)
[root@7-6 opt]#mv jdk1.8.0_291/ /usr/local/
[root@7-6 opt]#cd /usr/local/
[root@7-6 local]#ls
bin  games    jdk1.8.0_291  lib64    nginx  share
etc  include  lib           libexec  sbin   src
[root@7-6 local]#ln -s jdk1.8.0_291/ jdk
[root@7-6 local]#vim /etc/profile.d/jdk.sh 
[root@7-6 local]#cat /etc/profile.d/jdk.sh 
export JAVA_HOME=/usr/local/jdk
export PATH=$JAVA_HOME/bin:$PATH
export JRE_HOME=$JAVA_HOME/jre 
export CLASSPATH=$JAVA_HOME/lib/:$JRE_HOME/lib/
[root@7-6 local]#source /etc/profile.d/jdk.sh 
[root@7-6 ~]#java -version
java version "1.8.0_291"
Java(TM) SE Runtime Environment (build 1.8.0_291-b10)
Java HotSpot(TM) 64-Bit Server VM (build 25.291-b10, mixed mode)
[root@7-6 local]#cd /opt/
[root@7-6 opt]#ls
jdk-8u291-linux-x64.tar.gz
[root@7-6 opt]#rz -E
rz waiting to receive.
[root@7-6 opt]#ls
apache-tomcat-9.0.16.tar.gz  jdk-8u291-linux-x64.tar.gz
[root@7-6 opt]#tar xf apache-tomcat-9.0.16.tar.gz 
[root@7-6 opt]#cp -r apache-tomcat-9.0.16 /usr/local/
[root@7-6 opt]#cd /usr/local/
[root@7-6 local]#ls
apache-tomcat-9.0.16  etc    include       lib    libexec  sbin   src
bin                   games  jdk1.8.0_291  lib64  nginx    share
[root@7-6 local]#ln -s apache-tomcat-9.0.16/ tomcat
[root@7-6 local]#ls
apache-tomcat-9.0.16  etc    include       lib    libexec  sbin   src
bin                   games  jdk1.8.0_291  lib64  nginx    share  tomcat
[root@7-6 ~]#/usr/local/tomcat/bin/startup.sh 
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr/local/jdk/jre
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.
[root@7-6 ~]#ss -natp|grep 8080
LISTEN     0      100         :::8080                    :::*                   users:(("java",pid=2811,fd=57))
[root@7-6 ~]#cd /usr/local/tomcat/webapps/
[root@7-6 webapps]#ls
docs  examples  host-manager  manager  ROOT
[root@7-6 webapps]#mkdir test
[root@7-6 webapps]#ls
docs  examples  host-manager  manager  ROOT  test
[root@7-6 webapps]#cd test/
[root@7-6 test]#ls
[root@7-6 test]#vim index.jsp
[root@7-6 test]#cat index.jsp 
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html><head><tile>JSP test2 page </title></head><boby><% out.println("动态页面2,http://www.test2.com");%></boby>
</html>
[root@7-6 test]#vim /usr/local/tomcat/conf/server.xml 
[root@7-6 test]#/usr/local/tomcat/bin/startup.sh 
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr/local/jdk/jre
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.

4.实验验收

动态页面

[root@7-1 opt]#tail -f /var/log/nginx/access.log 

静态页面

[root@7-1 opt]#tail -f /var/log/nginx/access.log 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/506023.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

您的计算机已被pings勒索病毒感染?恢复您的数据的方法在这里!

导言&#xff1a; 在数字时代&#xff0c;数据是企业和个人生活中不可或缺的一部分。然而&#xff0c;随着勒索病毒的不断进化和传播&#xff0c;我们的数据面临着前所未有的威胁。其中&#xff0c;.pings 勒索病毒是最新一轮威胁之一&#xff0c;它以其独特的加密算法和无情的…

LeetCode 刷题 [C++] 第45题.跳跃游戏 II

题目描述 给定一个长度为 n 的 0 索引整数数组 nums。初始位置为 nums[0]。 每个元素 nums[i] 表示从索引 i 向前跳转的最大长度。换句话说&#xff0c;如果你在 nums[i] 处&#xff0c;你可以跳转到任意 nums[i j] 处: 0 < j < nums[i]i j < n 返回到达 nums[n …

Maven【5】在IDEA环境中配置和使用Maven

文章目录 【1】创建父工程1.创建 Project2.开启自动导入 【2】配置 Maven 信息【3】创建 Java 模块工程1.创建2.maven命令操作 【4】创建 Web 模块工程1.创建模块2.Web设定 【1】创建父工程 1.创建 Project 按照idea工程的布局&#xff0c;project相当于父工程&#xff0c;里…

力扣hot100题解(python版44-47题)

44、二叉搜索树中第K小的元素 给定一个二叉搜索树的根节点 root &#xff0c;和一个整数 k &#xff0c;请你设计一个算法查找其中第 k 个最小元素&#xff08;从 1 开始计数&#xff09;。 示例 1&#xff1a; 输入&#xff1a;root [3,1,4,null,2], k 1 输出&#xff1a;…

【UEFI实战】BIOS中的openssl

BIOS中的openssl openssl是一个密码库或者密码工具&#xff0c;在密码学基础_hex string is too short, padding with zero bytes t-CSDN博客介绍了基本的密码学概念已经openssl工具的使用&#xff0c;而这里将介绍BIOS下如何使用openssl。 在开源的BIOS代码库EDK中包含一个C…

(一)Python数据分析体系--九五小庞

课程地址&#xff1a;https://space.bilibili.com/387143299/channel/collectiondetail?sid554734 主要内容 知识体系 分析什么样的数据 为什么使用Python做数据分析 Python近几年的发展势头是有目共睹的&#xff0c;尤其是在科学计算&#xff0c;数据处理&#xff0c;A方面…

字符函数和字符串函数(下)

个人主页&#xff08;找往期文章包括但不限于本期文章中不懂的知识点&#xff09;&#xff1a;我要学编程(ಥ_ಥ)-CSDN博客 目录 strncpy函数的使用 函数原型&#xff1a; strncpy的使用 strncat函数的使用 函数原型&#xff1a; strncat的使用 strncmp函数的使用 函…

Github配置SSH免密认证

以Ubuntu Server为例 生成SSH ssh-keygen -t ed25519 -C "your_emailexample.com" 如果系统不支持Ed25519算法&#xff0c;使用旧的命令&#xff1a; ssh-keygen -t rsa -b 4096 -C "your_emailexample.com" 根据提示生成公私钥文件&#xff0c;记下位置…

【探索AI】十七 深度学习之第3周:卷积神经网络(CNN)(一)-CNN的基本原理与结构

第3周&#xff1a;卷积神经网络&#xff08;CNN&#xff09; CNN的基本原理与结构 常见的卷积层、池化层与全连接层 LeNet、AlexNet等经典CNN模型 实践&#xff1a;使用CNN进行图像分类任务 CNN的基本原理与结构 引言与背景介绍 卷积神经网络&#xff08;CNN&#xff09;是…

云轴科技ZStack与华东师范大学共建产教融合基地

近日&#xff0c;上海云轴信息科技有限公司&#xff08;云轴科技ZStack&#xff09;与华东师范大学上海国际首席技术官学院宣布&#xff0c;共同打造产教融合基地&#xff0c;以促进人才培养与产业需求的全方位融合。这一举措旨在深化教育与产业的合作关系&#xff0c;培养更多…

[HackMyVM] 靶场 Wave

kali:192.168.56.104 主机发现 arp-scan -l # arp-scan -l Interface: eth0, type: EN10MB, MAC: 00:0c:29:d2:e0:49, IPv4: 192.168.56.104 Starting arp-scan 1.10.0 with 256 hosts (https://github.com/royhills/arp-scan) 192.168.56.1 0a:00:27:00:00:05 (Un…

JavaScript闭包漏洞与修补措施

请先看下面一段代码 var obj (function () {var sonObj {a: 1,b: 2}return {get: function (v) {return sonObj[v]}}})()可以看出,这是一段很典型的js闭包代码,可以通过obj调用get方法传一个参数,如果传的是a就可以得到闭包内的对象sonObj.a var obj (function () {var sonO…