实操Nginx(4层代理+7层代理)+Tomcat多实例部署,实现负载均衡和动静分离

目录

前言

一、tomcat多实例部署

步骤一:先安装jdk,设置jdk的环境变量,验证是否安装完成(192.168.20.8)

步骤二:安装tomcat(192.168.20.18)

步骤三:安装tomcat多实例(192.168.20.8)

步骤四:测试三个页面请求,验证安装成功

步骤五:分别在三个tomcat服务上部署jsp的动态页面

二、nginx的七层代理,实现动静分离(192.168.20.30)

步骤一、安装nginx,并部署nginx基于协议的反向代理(七层代理)

步骤二、location配置,实现动静分离

步骤三:准备好静态页面,用于测试

步骤四:验证结果(另一台192.168.20.10一模一样的配置)

三、nginx的四层代理,实现负载均衡

步骤一:安装nginx,部署四层反向代理,也就是负载均衡器

步骤二:验证结果


前言

实验架构图如下,最终实现负载均衡和动静分离

一、tomcat多实例部署

步骤一:先安装jdk,设置jdk的环境变量,验证是否安装完成(192.168.20.8)

vim /etc/profile.d/java.sh
export 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

注意:这里的export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH 最后的$PATH一定要写最后 ,因为系统自带一个版本比较低的jdk,linux系统遵循最左原则,会先去读取左边先识别的命令

JDK :java development kit (java开发工具)
JRE :java runtime environment (java运行时环境)
JVM :java virtuak machine (java虚拟机),使java程序可以在多种平台上运行class文件。
CLASSPATH:告诉jvm要使用或执行的class放在什么路径上,便于JVM加载class文件。
tools.jar:是系统用来编译一个类的时候用到的,即执行javac的时候用到。
dt.jar:dt.jar是关于运行环境的类库,主要是swing包。

步骤二:安装tomcat(192.168.20.18)

安装的前提是 这台主机也完成了jdk部署

vim /usr/lib/systemd/system/tomcat.service
[Unit]
Description=tomcat server
Wants=network-online.target
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/tomcat/bin/startup.sh
ExecStop=/usr/local/tomcat/bin/shutdown.sh
Restart=on-failure
[Install]
WantedBy=multi-user.target

步骤三:安装tomcat多实例(192.168.20.8)

 tomcat2的部署,这个是跟tomcat1是一样的 

但是需要修改端口号,因为同一个ip地址的相同端口号只能给一个服务,所以这里选择是修改tomcat2的

 

<Server port="8006" shutdown="SHUTDOWN">		#22行,修改Server prot,默认为8005 -> 修改为8006
<Connector port="8081" protocol="HTTP/1.1"		#69行,修改Connector port,HTTP/1.1  默认为8080 -> 修改为8081
<Connector port="8010" protocol="AJP/1.3" redirectPort="8443" />	#116行,修改Connector port AJP/1.3,默认为8009 -> 修改为8010

 第一个连接器默认监听8080端口,负责建立HTTP连接。在通过浏览器访问Tomcat服务器的Web应用时,使用的就是这个连接器。
第二个连接器默认监听8443端口,是建立HTTPS协议的连接

第三个连接器默认监听8009端口,AJP端口,即容器使用,如Apache能通过AJP协议访问Tomcat的8009端口。

还有一个监听的8005端口,是用于接收 SHUTDOWN 命令的端口。当 Tomcat 启动时,它会在该端口监听来自本地机器的 SHUTDOWN 命令。这个 SHUTDOWN 命令用于优雅地关闭 Tomcat 服务器,即在关闭前允许正在进行的请求完成,而不是立即中断正在处理的请求。

步骤四:测试三个页面请求,验证安装成功

 

步骤五:分别在三个tomcat服务上部署jsp的动态页面

 

mkdir /usr/local/tomcat/webapps/test
vim /usr/local/tomcat/webapps/test/index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head>
<title>JSP test1 page</title>   #指定为 test1 页面
</head>
<body>
<% out.println("动态页面 1,http://www.test1.com");%>
</body>
</html>

测试一下

 

二、nginx的七层代理,实现动静分离(192.168.20.30)

步骤一、安装nginx,并部署nginx基于协议的反向代理(七层代理)

##七层代理的upstream配置在http模块内,server块前
http {
......#gzip on;#配置负载均衡的服务器列表,weight参数表示权重,权重越高,被分配到的概率越大upstream tomcat_server{server 192.168.20.8:8080 weight=1;server 192.168.20.8:8081 weight=1;server 192.168.20.18:8080 weight=1;
}
server {
......
}

步骤二、location配置,实现动静分离

 动静分离!!!

        location ~ .*\.jsp$ {proxy_pass http://tomcat_server;proxy_set_header HOST $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}#access_log  logs/host.access.log  main;location /static {root   html;index  index.html index.htm;}

步骤三:准备好静态页面,用于测试

[root@localhost html]#ls
50x.html  index.html  static
[root@localhost html]#ls -R static/
static/:
test.html  test.jpg
[root@localhost html]#cat static/test.html 
<html>
<body>
<h1>this is static web01</h1>
<img src="test.jpg"/>
</body>
</html>

步骤四:验证结果(另一台192.168.20.10一模一样的配置)

192.168.20.30的动静分离验证

静态:

动态:

 

 

 动态页面请求验证

192.168.20.10的动静分离验证

静态:

动态:

 

三、nginx的四层代理,实现负载均衡

步骤一:安装nginx,部署四层反向代理,也就是负载均衡器

这里是使用yum安装的,yum安装的 会自带Stream

stream {upstream nginx_server {server 192.168.20.30:80;server 192.168.20.10:80;}server {listen 9527;proxy_pass nginx_server;}
}

步骤二:验证结果

验证负载均衡

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

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

相关文章

快速上手linux | 一文秒懂Linux各种常用目录命令(上)

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏:《C语言初阶篇》 《C语言进阶篇》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 文章目录 一 、命令提示符和命令的基本格式1.1 如何查看主机名称及修改 二、命令基本格式2.1 命令格式示例2.2 参数的作用…

Spring Cloud gateway - CircuitBreaker GatewayFilte

前面学习Spring cloud gateway的时候&#xff0c;做测试的过程中我们发现&#xff0c;Spring Cloud Gateway不需要做多少配置就可以使用Spring Cloud LoadBalance的功能&#xff0c;比如&#xff1a; spring:application:name: spring-gatewaycloud:gateway:routes:- id: path…

java并发-ReentrantReadWriteLock读写锁

文章目录 介绍读写锁的获取规则示例源码解读ReentrantReadWriteLock核心变量ReentrantReadWriteLock相关属性和构造函数Sync静态内部类的核心属性tryAcquireShared方法tryAcquire方法锁降级 总结 介绍 读写锁就是将一个锁拆分为读锁和写锁两个锁。 读写锁的获取规则 如果有一…

33KB代码实现短网址(php+mysql) V2.0

查立得短网址 V2.0 请保留署名信息;请勿用于非法用途 系统简述&#xff1a;三五十KB代码实现短网址功能前后端都登陆,相对第一版代码已重构。 开发环境&#xff1a;宝塔:linux php Nginx 7.1/mysql5.6;建议环境&#xff1a;linux php 5.4-7.3; 空间域名&#xff1a;域名解析到对…

ELK简单介绍二

学习目标 能够部署kibana并连接elasticsearch集群能够通过kibana查看elasticsearch索引信息知道用filebeat收集日志相对于logstash的优点能够安装filebeat能够使用filebeat收集日志并传输给logstash kibana kibana介绍 Kibana是一个开源的可视化平台,可以为ElasticSearch集群…

电子取证中Chrome各版本解密Cookies、LoginData账号密码、历史记录

文章目录 1.前置知识点2.对于80.X以前版本的解密拿masterkey的几种方法方法一 直接在目标机器运行Mimikatz提取方法二 转储lsass.exe 进程从内存提取masterkey方法三 导出SAM注册表 提取user hash 解密masterkey文件&#xff08;有点麻烦不太推荐&#xff09;方法四 已知用户密…

插入算法(C语言)

#include<cstdio> #include<iostream> #define N 9 using namespace std; int main() {int arr[N1] { 1,4,7,13,16,19,22,25,280 }; int in,i,j;//要插入的数字//打印要插入数字的数组所有元素printf("插入前的数组: ");for ( i 0; i <N; i){print…

STM32G030C8T6:使用外部晶振配置LED灯闪烁

本专栏记录STM32开发各个功能的详细过程&#xff0c;方便自己后续查看&#xff0c;当然也供正在入门STM32单片机的兄弟们参考&#xff1b; 本小节的目标是&#xff0c;使用STM32G030C8T6单片机&#xff0c;通过STM32CubeMX软件&#xff0c;配置并使用外部8MHz晶振&#xff0c;实…

6. Service详解

6. Service详解 文章目录 6. Service详解6.1 Service介绍6.2 Service类型6.3 Service使用6.3.1 实验环境准备6.3.2 ClusterIP类型的Service6.3.3 HeadLess类型的Service6.3.3.1 deployment和statefulset区别6.3.3.2 statefulset deployment 区别 6.3.4 NodePort类型的Service6.…

联邦蒸馏领域中,有哪些有意思的工作

联邦蒸馏领域中&#xff0c;有哪些有意思的工作 王婆卖瓜&#xff0c;自卖自夸。这个博客&#xff0c;我简要向大家推荐一下自己近期在联邦蒸馏方面的研究工作&#xff0c;按照心目中创新度从高到低进行排序&#xff0c;与工作的扎实程度以及发表的会议期刊等级无关。如有不妥…

扩展操作码指令格式

指令 操作码地址码 \quad \quad 判断几地址指令 开头4位不是全1, 则表示是三地址指令 开头4位全1, 后面4位不是全1, 则为二地址指令 前面12全1, 则为零地址指令 当然啦这只是一种扩展方法, 如果想扩展更多, 可以将1110留作扩展操作码 较短的操作码, 我们对它的译码和分析的时间…

测试:HTTP请求中,请求头(Headers)

请求头字段及其用途 在HTTP请求中&#xff0c;请求头&#xff08;Headers&#xff09;是包含了关于客户端环境和请求本身的信息的数据结构&#xff0c;它在每次请求时都会被发送到服务器。 请求头的字段非常多样&#xff0c;以下是一些常见的请求头字段及其用途的详细说明&am…

点云几何 之 判断某一点是否在三角形的边上(3)

点云几何 之 判断某一点是否在三角形的边上&#xff08;3&#xff09; 一、算法介绍二、算法实现1.代码2.结果 总结 一、算法介绍 判断某一点是否在三角形的边上 之前已经介绍了点在三角形的内外判断方法&#xff0c;这里增加点恰好在三角形边上的判断方法 &#xff08;本质上…

节流防抖:提升前端性能的秘密武器(上)

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…

vue3使用mars3d实现地图轮播高亮,且每个区域颜色不一样

效果图(珙县就是轮播高亮的效果) 思路:初始化一张完整的地图&#xff0c;然后定时器去挨个生成每个县上的地图&#xff0c;并且覆盖在原来的位置&#xff0c;每到一定的时间&#xff0c;就清除之前生成高亮图并且生成下一张高亮图 如何引入地图 上篇文章已详细发过 略 父组…

【JavaWeb学习笔记】7 - Servlet入门开发

零、在线文档 Servlet 3.1 API Documentation - Apache Tomcat 8.0.53 一、Servlet基本介绍 1.为什么出现Servlet 提出需求:请用你现有的html css javascript&#xff0c;开发网站&#xff0c;比如可以让用户留言/购物/支付,你能搞定吗? 不能 这几个不能直接操作数据库 …

Java 语言关键字

Java关键字是电脑语言里事先定义的&#xff0c;有特别意义的标识符&#xff0c;有时又叫保留字&#xff0c;还有特别意义的变量。Java的关键字对Java的编译器有特殊的意义&#xff0c;他们用来表示一种数据类型&#xff0c;或者表示程序的结构等&#xff0c;关键字不能用作变量…

20231213给Ubuntu18.04.6LTS新加一块HDD机械硬盘

20231213给Ubuntu18.04.6LTS新加一块HDD机械硬盘 2023/12/13 22:50 rootrootrootroot-X99-Turbo:~$ cat /etc/issue Ubuntu 18.04.6 LTS \n \l sudo fdisk -l rootrootrootroot-X99-Turbo:~$ rootrootrootroot-X99-Turbo:~$ sudo fdisk -lu Disk /dev/sda: 2.7 TiB, 300059298…

【源码解析】flink sql执行源码概述:flink sql执行过程中有哪些阶段,这些阶段的源码大概位置在哪里

文章目录 一. sql执行流程源码分析1. Sql语句解析成语法树阶段&#xff08;SQL - > SqlNode&#xff09;2. SqlNode 验证&#xff08;SqlNode – >Operation&#xff09;3. 语义分析&#xff08;Operation - > RelNode&#xff09;4. 优化阶段&#xff08;RelNode - &…