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

目录

1.Nginx负载均衡

1.1 负载均衡概念

1.2 负载均衡原理

1.3 Nginx配置反向代理

1.3.1 反向代理概念

1.3.2 反向代理主要参数

2.Nginx动静分离

2.1 动静分离的概念

2.2 Nginx 静态处理优势

2.3 动静分离原理

3. Nginx+Tomcat动静分离的实验设计

3.1 准备三台虚拟机

3.2 准备动态页面

3.3 配置Nginx服务器实现动静分离

3.4 浏览器验证

4.Nginx反向代理类型

4.1 七层反向代理

4.2 四层反向代理配置

4.2.1 准备虚拟机

4.2.2 配置另一台Nginx服务器实现动静分离

4.2.3 配置Nginx负载均衡器用作四层代理

4.2.4 浏览器验证

4.2.5 四层代理与七层代理总结


1.Nginx负载均衡

1.1 负载均衡概念

通过反向代理实现,还可以将nginx接收到的请求转发给多个后端应用服务器处理

1.2 负载均衡原理

Nginx实现负载均衡是通过反向代理实现Nginx服务器作为前端,Tomcat服务器作为后端,web页面请求由Nginx服务来进行转发。 但是不是把所有的web请求转发,而是将静态页面请求Nginx服务器自己来处理,动态页面请求,转发给后端的Tomcat服务器来处理。据了解,Tomcat是属于轻量级的应用服务器,可接受访问量可能会不足,所以我们需要多台Tomcat服务器。并且Tomcat并发量处理能力弱(约Nginx的六分之一),所以需要Nginx方向代理时,进行合理的调用分配。

1.3 Nginx配置反向代理

1.3.1 反向代理概念

将nginx接收到的请求转发给其他应用服务器处理

1.3.2 反向代理主要参数

  • upstream 服务池名 {   }
  • 作用:配置后端服务器池,以提供响应数据

upstream框架中,指令中涉及多个参数,各个参数含义说明如下:

参数含义
weight服务访问的权重,默认是1
max_connsserver的最大并发连接数,仅作用于单worker进程,默认是0,表示没有限制
max _fails在fail timeout时间段内,最大的失败次数,当达到最大失败时,会在failtimeout秒内这台server不允许再次被选择
fail timeout单位为秒,默认10秒
  • proxy_pass http:// 服务池名
  • 作用:配置将访问请求转发给后端服务器池的服务器处理

2.Nginx动静分离

2.1 动静分离的概念

静态页面请求由nginx自行处理并响应;动态页面请求由nginx通过反向代理转发给后端应用服务器处理。

2.2 Nginx 静态处理优势

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

2.3 动静分离原理

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

3. Nginx+Tomcat动静分离的实验设计

3.1 准备三台虚拟机

192.168.9.120做nginx服务器
192.168.9.210做tomcat服务器(内含tomcat:8080、tomcat2:8081、tomcat3:8082)
192.168.9.140做tomcat服务器(tomcat:8080)

3.2 准备动态页面

192.168.9.210服务器:


192.168.9.140服务器:

3.3 配置Nginx服务器实现动静分离

192.168.9.120服务器:

编写静态测试页面

3.4 浏览器验证

静态页面

动态页面(浏览器页面使用F5刷新切换)http://192.168.9.120/xy101/test.jsp



4.Nginx反向代理类型

4.1 七层反向代理

概念:基于http、https、mail等七层应用协议的代理转发(根据用户访问请求的URL路径来转发请求),通常用于动静分离应用场景。

配置总结:

1)在http配置块中使用upstream定义后端服务器列表名称和节点参数
http {upstream 服务器列表名称 {server IP1:PORT1 weight=1;server IP2:PORT2 weight=1;......}2)在server配置块中使用location匹配用户请求的动态页面的URL路径,使用 proxy_pass 基于协议代理转发server {......location ~ .*\.jsp$ {proxy_pass http://服务器列表名称;#用于为后端服务器获取真实的客户端地址proxy_set_header HOST $host;proxy_set_header X_Real_IP $remote_addr;proxy_set_header X_Forwarded_For $proxy_add_x_forwarded_for;}......}
......
}

4.2 四层反向代理配置

概念:基于IP和端口实现的代理转发(根据IP和端口来转发请求),通常用于做网关访问入口的负载均衡器等应用场景。

4.2.1 准备虚拟机

192.168.9.120做nginx服务器(用作七层代理)
192.168.9.150做nginx服务器(用作七层代理,本机为yum安装的nginx)
192.168.9.111做负载均衡器(用作四层代理)
192.168.9.210做tomcat服务器(内含tomcat:8080、tomcat2:8081、tomcat3:8082)
192.168.9.140做tomcat服务器(tomcat:8080)

4.2.2 配置另一台Nginx服务器实现动静分离

192.168.9.150nginx服务器
vim /etc/nginx/conf.d/default.conf

配置静态页面

网页测试

静态页面

动态页面


4.2.3 配置Nginx负载均衡器用作四层代理

为方便测试需关闭两个nginx服务器长连接

192.168.9.120
vim /usr/local/nginx/conf/nginx.conf

systemctl restart nginx

192.168.9.150
vim /etc/nginx/nginx.conf 

systemctl restart nginx

重新取一台虚拟机安装nginx作为负载均衡器

192.168.9.111虚拟机(使用yum安装nginx)

useradd -M -s /sbin/nologin nginx
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module --with-http_ssl_module --with-stream     #配置
make -j2 && make install   #编译安装

对负载均衡器进行配置

192.168.9.111虚拟机
vim /usr/local/nginx/conf/nginx.conf


4.2.4 浏览器验证

静态页面


动态页面


配置总结:

1)编译安装时需要添加 stream 四层代理模块  ./configure --with-stream2)在 http 配置块同层级,一般在 http 配置块上面添加 stream 配置块,在 stream 配置块里使用upstream定义后端服务器列表名称和节点参数以及使用server配置块定义监听端口和转发配置
stream {upstream 服务器列表名称 {server IP1:PORT1 weight=1;server IP2:PORT2 weight=1;......}server {listen IP:PORT;proxy_pass 服务器列表名称;}
}http {....}

4.2.5 四层代理与七层代理总结

四层反向代理比七层反向代理转发性能更高,七层反向代理比四层反向代理转发功能更多、更灵活。

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

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

相关文章

js 选择一个音频文件,绘制音频的波形,从右向左逐渐前进。

选择一个音频文件&#xff0c;绘制波形&#xff0c;从右向左逐渐前进。 完整代码&#xff1a; <template><div><input type"file" change"handleFileChange" accept"audio/*" /><button click"stopPlayback" :…

Typora编辑的markdown文档莫名其妙消失或未保存--解决方案【亲测可行】

由于误触键盘导致文件关闭&#xff0c;打开文件之后发现里面文字全没了~气死了&#xff01;&#xff01;&#xff01;&#xff01; 可以通过如下方法解决&#xff01; 一、打开typora 二、【文件】-【偏好设置】 三、点击恢复未保存的草稿&#xff0c;找到最近的文件复制粘贴…

django 内置 JSON 字段 使用场景

Django 内置的 JSON 字段&#xff08;JSONField&#xff09;是在 Django 3.1 版本中引入的&#xff0c;用于处理 JSON 格式的数据。JSONField 允许在数据库表中存储和查询 JSON 数据&#xff0c;并且在与 Python 代码交互时自动转换为合适的 Python 数据类型。以下是一些常见的…

2024050302-重学 Java 设计模式《实战享元模式》

重学 Java 设计模式&#xff1a;实战享元模式「基于Redis秒杀&#xff0c;提供活动与库存信息查询场景」 一、前言 程序员&#x1f468;‍&#x1f4bb;‍的上下文是什么&#xff1f; 很多时候一大部分编程开发的人员都只是关注于功能的实现&#xff0c;只要自己把这部分需求…

Facebook商城号怎么做?思路与操作分析

2016 年&#xff0c;Facebook打造了同名平台 Facebook Marketplace。通过利用 Facebook 现有的庞大客户群&#xff0c;该平台取得了立竿见影的成功&#xff0c;每月访问量将超过 10 亿。对于个人卖家和小企业来说&#xff0c;Facebook Marketplace是一个不错的销货渠道&#xf…

【二进制部署k8s-1.29.4】十一、metallb的安装部署

文章目录 简介 一.安装metallb二.配置metallb三.验证metallb 简介 本章节主要讲解安装metallb-v0.7.1的安装&#xff0c;metallb算是平民版的负载均衡&#xff0c;用于测试、访问量较小的情况还是比较不错的&#xff0c;但是对于请求量比较的时候&#xff0c;由于流量都集中在一…

猫熊超市管理系统

import java.util.Scanner;//增加商品类 //此类用来录入一个商品的所有属性&#xff0c;并作为结果对其返回 public class Add {public Goods add1() {Scanner scanner new Scanner(System.in);System.out.println("请输入商品名称");String name scanner.next();S…

dns域名解析服务和bond网卡

目录 dns域名解析服务 一、DNS 1、定义 2、以www.baidu.com为例 3、域名体系结构 4、DNS解析使用的协议和端口 5、dns域名解析的过程 6、dns解析的优先级 二、如何实现域名解析 1、域名解析 2、bind配置文件位置 &#xff08;一&#xff09;正向解析 &#xff08;…

每天CTF小练--ctfshow新手村

easy_base 密文&#xff1a;0XezFWZfNXafRjNlNXYit3dvh2cmR3Y 等号在前面&#xff0c;直接倒序后解码 ctfshow{base64_is_easy} 代码解&#xff1a; s 0XezFWZfNXafRjNlNXYit3dvh2cmR3Y print(s[::-1]) #翻转字符串 print(s[::-1]) #翻转字符串 print(s[::-1]) #翻转…

HarmonyOS(二十五)——Harmonyos通用事件之点击事件

组件被点击时触发的事件就是点击事件。 1.事件 名称支持冒泡功能描述onClick(event: (event?: ClickEvent) > void)否点击动作触发该回调&#xff0c;event返回值见ClickEvent对象说明。从API version 9开始&#xff0c;该接口支持在ArkTS卡片中使用。 2.ClickEvent对象…

C++ STL初阶(2):string 的模拟实现

此文的背景是自己实现库中的string&#xff0c;由于string的模版实现较为困难&#xff0c;我们只实现最简单char版本。 1.命名空间分割 为了避免与库中的string冲突&#xff0c;我们使用一个自己的命名空间中来分离并实现所有内容&#xff0c;并且将所有的声明和定义相分离&…

Etcd Raft架构设计和源码剖析1:宏观架构

Etcd Raft架构设计和源码剖析1&#xff1a;宏观架构 | Go语言充电站 序言 Etcd提供了一个样例contrib/raftexample&#xff0c;用来展示如何使用etcd raft。这篇文章通过raftexample介绍如何使用etcd raft。 raft服务 raftexample是一个分布式KV数据库&#xff0c;客户端可…

vivado BEL_PIN、CELL

BEL_PIN是BEL对象上的接点或连接点。 BEL_PIN是一个设备对象&#xff0c;与网表对象&#xff08;如逻辑上的PIN&#xff09;相关 CELL&#xff0c;它是NET的连接点。 相关对象 如图所示&#xff0c;BEL_PIN-对象与BEL和SITE设备资源相关&#xff0c;并且 PIN和NET网表对象。您可…

Nginx配置详细解释:(3)http模块及server模块,location模块

目录 环境概述&#xff1a; http模块中的全局模块 1. root配置主要是对主web页面的路径访问。 2.server虚拟主机 2.1基于IP&#xff1a; 2.2基于域名&#xff1a; 3.alias别名 4.location匹配 5.access模块&#xff1a; 6.验证模块 7.自定义错误页面 8.日志存放位置…

王道408数据结构CH3_栈、队列

概述 3.栈、队列和数组 3.1 栈 3.1.1 基本操作 3.1.2 顺序栈 #define Maxsize 50typedef struct{ElemType data[Maxsize];int top; }SqStack;3.1.3 链式栈 typedef struct LinkNode{ElemType data;struct LinkNode *next; }*LiStack;3.2 队列 3.2.1 基本操作 3.2.2 顺序存储…

【Intro】Cora数据集介绍

https://graphsandnetworks.com/the-cora-dataset/ Graph Convolutional Network (GCN) on the CORA citation dataset — StellarGraph 1.0.0rc1 documentation pytorch-GAT/The Annotated GAT (Cora).ipynb at main gordicaleksa/pytorch-GAT GitHub Cora数据集 Cora数据…

Windows上虚拟机安装OpenGaus22.03

在Windows上安装OpenGauss并不像在Linux上那么直接&#xff0c;因为OpenGauss主要面向OpenEuler系统设计。可以通过使用虚拟机或者Docker来在Windows上运行OpenGauss。虚拟机比Docker提供更完整的操作环境。以下是采用虚拟机的详细步骤&#xff1a; 通过虚拟机安装OpenGauss …

运放应用1 - 反相放大电路

1.前置知识 反相放大电路存在 负反馈电路 &#xff0c;工作在线性区&#xff0c;可以利用 虚短 概念来分析电路。 注&#xff1a;运放的 虚断 特性是一直存在的&#xff0c;虚短特性则需要运放工作在 线性区 有关运放的基础知识&#xff0c;可以参考我的另外一篇文章&#xff…

ASCE(美国土木工程师学会)文献校外去哪里查找下载

今天要讲的数据库是ASCE&#xff08;美国土木工程师学会&#xff09;&#xff0c;该数据库每年出版5万多页的专业期刊、杂志、会议录、专著、技术报告、实践手册和标准等。目前&#xff0c;ASCE数据库中包含35种期刊(1983年至今)、近700卷会议录( 1996年至今)、Civil Engineeri…

htb_solarlab

端口扫描 80,445 子域名扫描 木有 尝试使用smbclient连接445端口 Documents目录可查看 将Documents底下的文件下载到本地看看 xlsx文件里有一大串用户信息&#xff0c;包括username和password 先弄下来 不知道在哪登录&#xff0c;也没有子域名&#xff0c;于是返回进行全端…