Tomcat多实例+Nginx动静分离、负载均衡

这里写目录标题

  • Tomcat多实例+动静分离、负载均衡
    • 一、Tomcat多实例部署
      • 1、安装JDK
      • 2、安装启动tomcat
    • 二、Nginx+Tomcat负载均衡、动静分离
      • 1、Nginx负载均衡实现原理
        • 1.1 原理
        • 1.2 Nginx配置反向代理的主要参数
      • 2、Nginx动静分离实现原理
        • 2.1 原理
        • 2.2 Nginx静态处理优势
      • 3、动静分离配置(七层代理)
        • 1)部署3台tomcat应用服务器
          • (1)安装JDK
          • (2)安装启动tomcat
        • 2)部署Nginx 负载均衡器
          • (1)安装nginx
          • (2)参数配置
          • (3)配置nginx处理动态页面请求
        • 3)动静分离配置
          • (1)配置tomcat动态页面
          • (2)配置Nginx静态页面
          • (3)测试动静分离效果
      • 4、负载均衡配置(四层代理)
        • 1)安装nginx服务器并配置动态和静态页面
        • 2)部署nginx负载均衡器
        • 3)配置反向代理的参数
        • 4)关掉长连接
        • 5)浏览器测试负载均衡效果

Tomcat多实例+动静分离、负载均衡

一、Tomcat多实例部署

1、安装JDK

7-4(192.168.210.104)
cd /opt
tar xf jdk-8u91-linux-x64.tar.gz
#解压
mv jdk1.8.0_91/ /usr/local/
#移到/usr/local/目录下

在这里插入图片描述

vim /etc/profile.d/java.sh
#配置环境变量
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:$JRE_HOME/bin:$PATH

在这里插入图片描述

source /etc/profile.d/java.sh
#刷新
java -version
#查看版本

在这里插入图片描述

2、安装启动tomcat

1)安装tomcat

cd /opt
tar xf apache-tomcat-8.5.16.tar.gz
cp -a apache-tomcat-8.5.16 /usr/local/tomcat1
#把apache-tomcat-8.5.16复制到tomcat1
cp -a apache-tomcat-8.5.16 /usr/local/tomcat2
#把apache-tomcat-8.5.16复制到tomcat2
cd /usr/local/
ls

在这里插入图片描述

2)修改 tomcat2 中的 server.xml 文件,要求各 tomcat 实例配置不能有重复的端口号

#修改tomcat2的端口号
vim /usr/local/tomcat2/conf/server.xml
#8005改成8006
#8080改成8081
#8009改成8010

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3)修改各 tomcat 实例中的 startup.sh 和 shutdown.sh 文件,添加 tomcat 环境变量

vim /usr/local/tomcat1/bin/startup.sh
# -----------------------------------------------------------------------------
# Start Script for the CATALINA Server
# -----------------------------------------------------------------------------
##添加以下内容
export CATALINA_BASE=/usr/local/tomcat1
export CATALINA_HOME=/usr/local/tomcat1
export TOMCAT_HOME=/usr/local/tomcat1

在这里插入图片描述

vim /usr/local/tomcat1/bin/shutdown.sh
# -----------------------------------------------------------------------------
# Stop script for the CATALINA Server
# -----------------------------------------------------------------------------
export CATALINA_BASE=/usr/local/tomcat1
export CATALINA_HOME=/usr/local/tomcat1
export TOMCAT_HOME=/usr/local/tomcat1

在这里插入图片描述

vim /usr/local/tomcat2/bin/startup.sh 
# -----------------------------------------------------------------------------
# Start Script for the CATALINA Server
# -----------------------------------------------------------------------------
export CATALINA_BASE=/usr/local/tomcat2
export CATALINA_HOME=/usr/local/tomcat2
export TOMCAT_HOME=/usr/local/tomcat2

在这里插入图片描述

vim /usr/local/tomcat2/bin/shutdown.sh
# -----------------------------------------------------------------------------
# Stop script for the CATALINA Server
# -----------------------------------------------------------------------------
export CATALINA_BASE=/usr/local/tomcat2
export CATALINA_HOME=/usr/local/tomcat2
export TOMCAT_HOME=/usr/local/tomcat2

在这里插入图片描述

4)启动各 tomcat 中的 /bin/startup.sh

/usr/local/tomcat1/bin/startup.sh 
/usr/local/tomcat2/bin/startup.sh

在这里插入图片描述

ss -lntp | grep java
#过滤java中开启的端口

在这里插入图片描述

5)浏览器访问测试

http://192.168.210.104:8080
http://192.168.210.104:8081

在这里插入图片描述

二、Nginx+Tomcat负载均衡、动静分离

1、Nginx负载均衡实现原理

1.1 原理
  • Nginx实现负载均衡是通过反向代理实现
  • 反向代理是原理
1.2 Nginx配置反向代理的主要参数
  • upstream 服务池名{}(配置后端服务器池,以提供响应数据)
  • proxy_pass http://服务池名(配置将访问请求转发给后端服务器池的服务器处理)

2、Nginx动静分离实现原理

2.1 原理

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

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

3、动静分离配置(七层代理)

在这里插入图片描述

1)部署3台tomcat应用服务器
(1)安装JDK
#tomcat1和tomcat2在上面tomcat多实例部署中已经部署过了,不再演示,现在部署tomcat3#
7-3(192.168.210.103)
cd /opt 
rpm -ivh jdk-8u201-linux-x64.rpm 
#安装JDK
java -version
#查看版本

在这里插入图片描述

设置JDK环境变量

vim /etc/profile.d/java.shexport JAVA_HOME=/usr/java/jdk1.8.0_201-amd64
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

在这里插入图片描述

source /etc/profile.d/java.sh
java -version
#版本发生变化,配置成功

在这里插入图片描述

使用文本工具编写java源代码Hello.java

vim Hello.javapublic class Hello {public static void main(String[] args){System.out.println("Hello World!");}
}

在这里插入图片描述

javac Hello.java
#生成字节码文件
java Hello
#运行字节码文件

在这里插入图片描述

(2)安装启动tomcat
cd /opt/
tar xf apache-tomcat-9.0.16.tar.gz
#解压软件包
mv apache-tomcat-9.0.16 /usr/local/tomcat
#把源码包目录移到/usr/local/tomcat目录下

在这里插入图片描述

cd /usr/local/tomcat/bin/
#切换到/usr/local/tomcat/bin/目录
ls
/usr/local/tomcat/bin/startup.sh
#启动
ss -lntp | grep :8080
#8080端口开启

在这里插入图片描述

http://192.168.210.103:8080
#在浏览器访问8080端口,tomcat部署完成

在这里插入图片描述

2)部署Nginx 负载均衡器
(1)安装nginx
#用yum安装的方式在192.168.210.105服务器上配置nginx
cd /etc/yum.repos.d/
mkdir bak
mv *.repo bak
vim nginx.repo[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=trueyum install nginx -y

在这里插入图片描述

(2)参数配置
vim /etc/nginx/nginx.conf
#修改主配置文件
http{
#配置负载均衡的服务器列表,weight参数表示权重,权重越高,被分配到的概率越大
upstream backend{server 192.168.210.104:8080 weight=1server 192.168.210.104:8081 weight=1server 192.168.210.103:8080 weight=1}
}

在这里插入图片描述

(3)配置nginx处理动态页面请求
vim /etc/nginx/conf.d/default.conf
#配置Nginx处理动态页面请求,将 .jsp文件请求转发到Tomcat 服务器处理
server{location ~* .*\.jsp$ {proxy_pass http://backend;#设置后端的Web服务器可以获取远程客户端的真实IP#设定后端的Web服务器接收到的请求访问的主机名(域名或IP、端口),默认HOST的值为proxy_pass指令设置的主机名。如果反向代理服务器不重写该请求头的话,那么后端真实服务器在处理时会认为所有的请求都来自反向代理服务器,如果后端有防攻击策略的话,那么机器就被封掉了proxy_set_header HOST $host;##把$remote_addr赋值给X-Real-IP,来获取源IPproxy_set_header X-Real-IP $remote_addr;##在nginx 作为代理服务器时,设置的IP列表,会把经过的机器ip,代理机器ip都记录下来proxy_set_header X-Forwarded-For   $proxy_add_x_forwarded_for;}
}

在这里插入图片描述

nginx -t
#检查语法
nginx -s reload
#刷新

在这里插入图片描述

3)动静分离配置
(1)配置tomcat动态页面
#192.168.210.103服务器
vim /usr/local/tomcat/webapps/wyx/test.jsp
#制作test.jsp动态页面3
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head>
<title>JSP tomcat3 page</title>  
</head>
<body>
<% out.println("动态页面 3,i love you");%>
</body>
</html>

在这里插入图片描述

#192.168.210.104服务器
cd /usr/local/tomcat1/webapps/
mkdir wyx
#建立wyx目录
cd wyx/
vim test.jsp
#编辑test.jsp动态页面1<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head>
<title>JSP tomcat1 page</title>  
</head>
<body>
<% out.println("动态页面 1,you like me");%>
</body>
</html>

在这里插入图片描述

#192.168.210.104服务器
cd /usr/local/tomcat2/webapps/
mkdir wyx
vim test.jsp
#编辑test.jsp动态页面2<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head>
<title>JSP tomcat2 page</title>  
</head>
<body>
<% out.println("动态页面 2,i love you and you like me");%>
</body>
</html>

在这里插入图片描述

在浏览器访问测试效果

http://192.168.210.103:8080/wyx/test.jsp
http://192.168.210.104:8080/wyx/test.jsp
http://192.168.210.104:8081/wyx/test.jsp

在这里插入图片描述

(2)配置Nginx静态页面
cd /usr/share/nginx/html/
#切换到网页根目录
echo '<h1>this is nginx static web1 page!</h1>' > test.html
#准备一个静态页面输入到test.html
systemctl start nginx
#开启nginx

在这里插入图片描述

mkdir /usr/share/nginx/html/wyx
#创建wyx目录
mv test.html wyx/
#把test.html移到wyx目录下

在这里插入图片描述

#在浏览器访问
http://192.168.210.105/wyx/test.html

在这里插入图片描述

(3)测试动静分离效果
http://192.168.210.105/wyx/test.html
#测试静态页面效果

在这里插入图片描述

192.168.210.105/wyx/test.jsp
#动态页面每刷新一次,就会出现不同的动态页面

在这里插入图片描述

4、负载均衡配置(四层代理)

在这里插入图片描述

1)安装nginx服务器并配置动态和静态页面
#192.168.210.105服务器
scp /etc/yum.repos.d/nginx.repo 192.168.210.106:`pwd`
#把nginx传给192.168.210.106服务器

在这里插入图片描述

#192.168.210.106服务器
systemctl stop firewalld
setenforce 0
#关闭防火墙
cd /etc/yum.repos.d/
ls
yum install nginx -y
#安装nginx

在这里插入图片描述

#192.168.210.105服务器
cd /etc/nginx/
scp -r conf.d/ nginx.conf 192.168.210.106:`pwd`
#把nginx下的conf.d目录和nginx.conf文件传给192.168.210.106服务器
cd /usr/share/nginx/html/
scp -r wyx/ 192.168.210.106:`pwd`
#把wyx目录传给192.168.210.106服务器

在这里插入图片描述
在这里插入图片描述

#192.168.210.106服务器
cd /usr/share/nginx/html/wyx/
vim test.html
#配置静态页面
<h1>this is nginx static web2 page!</h1>

在这里插入图片描述

cd /etc/nginx
vim nginx.conf
cd /etc/nginx/conf.d
vim default.conf
#查看一下nginx.conf和default.conf的配置
systemctl start nginx
#启动nginx

在这里插入图片描述
在这里插入图片描述

#在浏览器访问动态页面和静态页面
192.168.210.106/wyx/test.html
192.168.210.106/wyx/test.jsp

在这里插入图片描述

2)部署nginx负载均衡器
#192.168.210.107服务器
systemctl stop firewalld
setenforce 0
#关闭防火墙
#安装nginx
yum -y install gcc pcre-devel openssl-devel zlib-devel openssl  openssl-devel
#安装依赖包
cd /opt/
tar xf nginx-1.18.0.tar.gz 
#解压
cd nginx-1.18.0/./configure --prefix=/usr/local/nginx \
--with-http_ssl_module \
--with-http_v2_module \
--with-http_realip_module \
--with-http_stub_status_module \
--with-http_gzip_static_module \
--with-pcre \
--with-stream \
--with-stream_ssl_module \
--with-stream_realip_modulemake -j2 && make install
#编译安装
vim /usr/lib/systemd/system/nginx.service
#创建.service自启动文件
[Unit]
Description=nginx
After=network.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s TERM $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.targetsystemctl daemon-reload
systemctl start nginx
#启动nginx服务
3)配置反向代理的参数
cd /usr/local/nginx/conf/
vim nginx.confstream {upstream nginx_server {server 192.168.210.105:80;server 192.168.210.106:80;}server {listen 80;#如果已经有了80端口,把另一个80端口改掉,不能有两个80端口proxy_pass nginx_server;} }

在这里插入图片描述

nginx -t 
#检查语法格式
nginx -s reload
#刷新
ss -lntp | grep nginx
#过滤nginx端口号

在这里插入图片描述

4)关掉长连接
vim /usr/local/nginx/conf/nginx.conf
#为了保证实验的流畅性,把长连接关掉,其他两台nginx服务器也关掉
keepalive_timeout 0;
#keepalive_timeout 65;

在这里插入图片描述

5)浏览器测试负载均衡效果
#在浏览器访问
http://192.168.210.107/wyx/test.html
#每刷新一次,就会出现不同的静态页面,实现了负载均衡

在这里插入图片描述

http://192.168.210.107/wyx/test.jsp
#每刷新一次就会出现不同的静态页面,实现了负载均衡

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Visio——绘制倾斜线段

一、形状 -> 图表和数学图形 -> 多行 二、放置多行线&#xff0c;可以发现存在两个折点 三、选择多行线&#xff0c;右键选择删除点&#xff0c;即可得到倾斜线段

山西电力市场日前价格预测【2023-09-25】

日前价格预测 预测说明&#xff1a; 如上图所示&#xff0c;预测明日&#xff08;2023-09-25&#xff09;山西电力市场全天平均日前电价为442.30元/MWh。其中&#xff0c;最高日前电价为720.46元/MWh&#xff0c;预计出现在19: 00。最低日前电价为276.06元/MWh&#xff0c;预计…

Vis.js教程(一):基础教程

1、Vis.js是什么 一个动态的、基于浏览器的可视化库。 该库的设计易于使用&#xff0c;能够处理大量动态数据&#xff0c;并能够对数据进行操作和交互。 该库由 DataSet、Timeline、Network、Graph2d 和 Graph3d 组件组成。 Vis.js官网&#xff1a;https://visjs.org/ github…

Linux初识+环境部署

文章目录 版权声明Linux初识Linux的诞生Linux内核Linux发行版 环境部署vmcentosWSL-Ubuntu 版权声明 本博客的内容基于我个人学习黑马程序员课程的学习笔记整理而成。我特此声明&#xff0c;所有版权属于黑马程序员或相关权利人所有。本博客的目的仅为个人学习和交流之用&…

电脑计算机xinput1_3.dll丢失的解决方法分享,四种修复手段解决问题

日常生活中可能会遇到的问题——xinput1_3.dll丢失的解决方法。我相信&#xff0c;在座的很多朋友都曾遇到过这个问题&#xff0c;那么接下来&#xff0c;我将分享如何解决这个问题的解决方法。 首先&#xff0c;让我们来了解一下xinput1_3.dll文件。xinput1_3.dll是一个动态链…

“构建完善的用户认证与数据交互系统“

目录 引言1.ElementUI完成登录注册1. 登录页面设计与实现2. 注册页面设计与实现 2.axios之get请求3.axios之post请求4.跨域问题的解决方案5.总结 引言 在现代Web应用程序开发中&#xff0c;用户认证和数据交互是至关重要的功能。本文将介绍如何使用ElementUI、axios和解决跨域…

数量关系(刘文超)

解题技巧 代入排除法 数字特性法 整除特性 比例倍数特性&#xff08;找比例&#xff0c;比例不明显时找等式&#xff09; 看不懂式子时&#xff0c;把所有的信息像表格一样列出来 看不懂式子时&#xff0c;把所有的信息像表格一样列出来

代码随想录算法训练营 动态规划part06

一、完全背包 卡哥的总结&#xff0c;还挺全代码随想录 (programmercarl.com) 二、零钱兑换 II 518. 零钱兑换 II - 力扣&#xff08;LeetCode&#xff09; 被选物品之间不需要满足特定关系&#xff0c;只需要选择物品&#xff0c;以达到「全局最优」或者「特定状态」即可。 …

useCallBack

React.memo 保证了只有props发生变化时&#xff0c;该组件才会重新渲染 &#xff08;当然组件内部的state 和 context 变化也会导致组件重新渲染&#xff09;&#xff0c;但咱们只要将咱们的子组件包裹&#xff0c;便可以保证Child组件在props不变的情况下&#xff0c;不会重新…

【数据结构】什么是数据结构?

&#x1f984;个人主页:修修修也 &#x1f38f;所属专栏:数据结构 ⚙️操作环境:Visual Studio 2022 数据结构的定义 数据结构(Data Structure)是计算机存储,组织数据的方式,指相互之间存在一种或多种特定关系的数据元素的集合. 这么讲可能有些抽象,放一张图大家可能好理解一点…

动手吧,vue单独使用的复选框

单独使用的复选框可以用在两个状态之间的切换&#xff0c;如是否阅读协议、记住账号等场景。 效果&#xff1a; 1、template部分 <template><label class"v-checkbox-single"><span class"v-checkbox_input" :class"{ disabled }&qu…

CCNP-OSPFv3

现在在企业中&#xff0c;用的IPv4居多&#xff0c;在我们的手机上&#xff0c;数据中心&#xff0c;运营商以及一些大企业用的都是IPv6&#xff1b; 为啥用IPv6啊&#xff0c;因为IPv4地址不够用&#xff0c;IPv4地址只有32bit&#xff0c;而IPv6足足有128bit&#xff1b; 那…

帆软FineReport决策报表之页面布局

最近在用帆软决策报表绘制首页大屏&#xff0c;记录使用过程&#xff0c;方便查看。 版本&#xff1a;FineReport10.0 第一步、页面布局 页面布局其实就是组件的排列组合&#xff0c;决策报表主区域body有两种布局方式&#xff1a;自适应布局和绝对布局。 1&#xff09;自适应…

java面试题-学成在线项目

1、详细说说你的项目吧 从以下几个方面进行项目介绍&#xff1a; 1、项目的背景&#xff0c;包括&#xff1a;是自研还是外包、什么业务、服务的客户群是谁、谁去运营等问题。 2、项目的业务流程 3、项目的功能模块 4、项目的技术架构 5、个人工作职责 6、个人负责模块的详细说…

使用华为eNSP组网试验⑴-通过Vlan进行网络设备间通讯

在2019年学习网络的时候是从思科产品开始学的&#xff0c;那个时候接触了思科的6506、4506、3750、3550、2950&#xff0c;因为网络设备多&#xff0c;基本上是在多余的设备上直接操作&#xff0c;掌握后再上现场设备中去操作。当时使用了思科的模拟器CISCO Packet Tracer&…

华为云云耀云服务器L实例评测|轻量级应用服务器对决:基于 STREAM 深度测评华为云云耀云服务器L实例的内存性能

本文收录在专栏&#xff1a;#云计算入门与实践 - 华为云 专栏中&#xff0c;本系列博文还在更新中 相关华为云云耀云服务器L实例评测文章列表如下&#xff1a; 华为云云耀云服务器L实例评测 | 从零开始&#xff1a;云耀云服务器L实例的全面使用解析指南华为云云耀云服务器L实…

贴片电容耐压值选取和特性(包含实际电路和PCB)

一、一般电容的特性 ①容值大的电容&#xff0c;一般通低频率&#xff1b;  ②容值小的电容&#xff0c;一般通高频率。   注&#xff1a;详细请看这位博主的篇文章&#xff1a; 大电容为什么虑低频小电容为什么又虑高频?(个人整理) 二、贴片电容的耐压选取 ①贴片电容有2…

关于计算机找不到d3dx9_43.dll,无法继续执行代码修复方法

d3dx9_43.dll是一个动态链接库文件&#xff0c;它是DirectX的一个组件&#xff0c;主要用于处理游戏中的图形、声音等多媒体元素。当这个文件丢失时&#xff0c;可能会导致以下问题&#xff1a; 1. 游戏无法正常运行&#xff1a;由于d3dx9_43.dll负责处理游戏中的多媒体元素&a…

《Python趣味工具》——ppt的操作(1)

前面我们学习了如何利用turtle模块制作emoji&#xff0c;今天来看看PPT的相关操作&#xff1a; 文章目录 一、PPT的基础结构&#xff1a;二、PPT的相关操作&#xff1a;1. 导入pptx模块2. ppt的基本操作&#xff1a; 三、总结&#xff1a;四、 完整源码&#xff1a; 小L想要把 …

《从零开始的Java世界》01基本程序设计

《从零开始的Java世界》系列主要讲解Javase部分&#xff0c;从最简单的程序设计到面向对象编程&#xff0c;再到异常处理、常用API的使用&#xff0c;最后到注解、反射&#xff0c;涵盖Java基础所需的所有知识点。学习者应该从学会如何使用&#xff0c;到知道其实现原理全方位式…