实操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.mfbz.cn/a/242410.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Python数据科学视频讲解:Python保留字与标识符

2.6 Python保留字与标识符 视频为《Python数据科学应用从入门到精通》张甜 杨维忠 清华大学出版社一书的随书赠送视频讲解2.6节内容。本书已正式出版上市&#xff0c;当当、京东、淘宝等平台热销中&#xff0c;搜索书名即可。内容涵盖数据科学应用的全流程&#xff0c;包括数据…

VPN 在网络安全中的应用

虚拟专用网络&#xff08;Virtual Private Network&#xff0c;VPN&#xff09;是指利用不安全的公共网络如 Internet 等作为传输媒介&#xff0c;通过一系列的安全技术处理&#xff0c;实现类似专用网络的安全性能&#xff0c;保证重要信息的安全传输的一种网络技术。 1&#…

【网络通信原理之套接字】

目录 概念 分类 数据报套接字&#xff1a;使用传输层UDP协议 流套接字&#xff1a;使用传输层TCP协议 原始套接字 Socket编程注意事项 前言&#xff1a;本文主要介绍了在什么是套接字及在Java中套接字是什么&#xff0c;和在套接字编程的注意事项。 概念 Socket套接…

轮转数组00

题目链接 轮转数组 题目描述 注意点 使用空间复杂度为 O(1) 的 原地 算法解决这个问题 解答思路 本题有多种思路&#xff0c;一种是复制nums数组&#xff0c;然后将k个位置后的值赋值给当前位置即可&#xff0c;但是空间复杂度为O(n)还有一种思路是先将整个数组进行翻转&a…

参数学习——糖果问题(人工智能期末复习)

之前看了好久都不知道这题咋写&#xff0c;后来看了这篇机器智能-高频问题&#xff1a;糖果问题&#xff0c;大概看明白了&#xff0c;其实主要围绕着这两个公式 光看公式也看不懂&#xff0c;还是要结合题目来 己知有草莓味和酸橙味两种类型的糖果&#xff0c;分别放入5种不同…

【FPGA/verilog -入门学习10】verilog 查表法实现正弦波形发生器

0&#xff0c;需求 用查找表设计实现一个正弦波形发生器 寻址的位宽是10位&#xff0c;数据量是1024个&#xff0c;输出的数据是16位 1&#xff0c;需求分析 数据量是1024个&#xff1a; x linspace(0,2*pi,1024) 输出数据是16位: y范围&#xff1a;0~2^16 -1 0~65535…

Docker部署Mysql5.7x和Myslq8.x

Docker部署Mysql5.7x和Myslq8.x 文章目录 1.部署mysql5.7.x2.部署mysql8.x3.创建用户授权及远程登录3.1 mysql5.7创建用户授权及远程登录3.2 mysql8创建用户授权及远程登录 4.总结 1.部署mysql5.7.x 在D盘下的mysql目录下新建如下目录&#xff1a; D:\mysql\conf\my.cnf内容如下…

8GB内存的 MacBook Pro够用吗?苹果高管回应:完全够用

苹果 2023 年 M3 芯片款 MacBook Pro 运行内存为 8GB 起步&#xff0c;因此招致了外界广泛的批评&#xff0c;外媒 MacRumors 日前评价了配备相关运行内存的 MacBook Pro&#xff0c;认为 8GB RAM 在“专业和创意工作中”不够用&#xff0c;只适合“网页浏览、文档编辑、播放影…

java实现局域网内视频投屏播放(四)投屏实现

代码链接​​​​​​​​​​​​​​​​​​​​​ 设备发现 上一篇文章说过&#xff0c;设备的发现有两种情况&#xff0c;主动和被动&#xff0c;下面我们来用java实现这两种模式 主动发现 构建一个UDP请求发送到239.255.255.250:1900获取设备信息&#xff0c;UDP包的…

对比学习学习记录1

对比学习学习记录 SimCLR Framework 关键在于定义正负样本判断异同相同的就是正例不同的就是负例让模型学到其中的规律 通过encoder对图像提取特征得到一个向量这里的encoder可以是resnet还需要定义相似度的函数计算正负样本之间的距离 对于上面的图片首先对图片进行两种随机的…

zabbix——实现高效网络监控

在当今的数字化时代&#xff0c;网络和服务器的健康状况对于企业的正常运营至关重要。为了及时发现和解决潜在的问题&#xff0c;许多企业选择使用网络监控工具来追踪服务器的性能和网络参数。其中&#xff0c;Zabbix是一个功能强大且开源的网络监控工具&#xff0c;被广泛应用…

环境搭建及源码运行_java环境搭建_mysql安装

1、介绍 MySQL是一个关系型数据库管理系统&#xff0c;由瑞典MySQL AB 公司开发&#xff0c;属于 Oracle旗下产品。MySQL是最流行的关系型数据库管理系统之一 1、源码中涉及到的表&#xff1a;mysql 表&#xff1a;订单、意见反馈、用户基础信息、商品、购物车等表 2、订单属于…

虚拟现实三维电子沙盘数字沙盘开发教程第5课

虚拟现实三维电子沙盘数字沙盘无人机倾斜摄影全景建模开发教程第5课 设置system.ini 如下内容 Server122.112.229.220 userGisTest Passwordchinamtouch.com 该数据库中只提供 成都市火车南站附近的数据请注意&#xff0c;104.0648,30.61658 在鼠标指定的位置增加自己的UI对象&…

Java听潮阁(SpringCloud项目)

一、简介 本网站是不凉域网络技术工作室的后台管理网站和旗下的网站&#xff08;目前只有Java听潮阁&#xff09;&#xff0c;后台管理网站具有统计旗下所有网站的数据功能&#xff0c;并且能直接对旗下所有网站进行管理。 Java听潮阁网站是一个Java书籍网站&#xff0c;名字…

力扣40. 组合总和 II(java 回溯法)

Problem: 40. 组合总和 II 文章目录 题目描述思路解题方法复杂度Code 题目描述 思路 在使用回溯之前我们首先可以明确该题目也是一种元素存在重复但不可复用的组合类型问题。而此题目可以参考下面一题的大体处理思路&#xff1a; Problem: 90. 子集 II 具体的&#xff1a; 1.首…

2023-12-13 树的层次遍历和树的反转以及树的对称

二叉树的层次遍历、翻转二叉树和对称二叉树 102. 二叉树的层序遍历 核心&#xff1a;BFS广度优先遍历&#xff0c;就是维护一对队列去遍历&#xff01;队列先进先出&#xff0c;符合一层一层遍历的逻辑。 # Definition for a binary tree node. # class TreeNode: # def …

四、编写第一个 Shell 脚本

一、编写 Shell 脚本内容 打开文本编辑器&#xff08;可以使用 vi/vim 命令来创建文件&#xff09;&#xff0c;新建一个文件 chaoqing.sh&#xff0c;扩展名为 sh &#xff08;sh 表示 shell&#xff09;&#xff0c;扩展名不影响脚本的运行。 输入一些代码&#xff0c;如下…

配置本地端口镜像示例(1:1)

本地端口镜像简介 本地端口镜像是指观察端口与监控设备直接相连&#xff0c;观察端口直接将镜像端口复制来的报文转发到与其相连的监控设备进行故障定位和业务监测。 配置注意事项 观察端口专门用于镜像报文的转发&#xff0c;因此不要在上面配置其他业务&#xff0c;防止镜像…

zxjy008- 项目集成Swagger

Swagger可以生成在线文档&#xff0c;还可以进行接口测试。 1、创建common模块(maven类型) 为了让所有的微服务子子模块都可以使用&#xff0c;可以在guli_parent父工程下面创建公共模块 1.1 在guli_parent父工程下面创建公共模块 配置&#xff1a; groupId&#xff1a;com…

HTML---表单

文章目录 前言一、pandas是什么&#xff1f;二、使用步骤 1.引入库2.读入数据总结 一.表单概念 HTML表单是网页上用于收集用户输入信息的一种元素。它由一系列输入字段&#xff08;input&#xff09;、选择字段&#xff08;select&#xff09;、文本区域&#xff08;textarea&a…
最新文章