Nginx + Tomcat 反向代理,负载均衡,动态分离

news2024/11/26 0:34:06

这里写目录标题

  • 一. Nginx的引入背景
    • 公司产品出现瓶颈?
  • 二 nginx 和 Tomcat 的关系
  • 三. 什么是Nginx ?
    • (1)Nginx 是什么?
    • (2) Nginx 特点:
  • 四. Nginx作用?
    • 1. `反向代理`:
    • 2. 负载均衡
    • 3. 动静分离
  • 五. Nginx 实战
    • 七层反向代理
      • 配置tomcat服务器和动态页面
      • 配置nginx七层代理
    • 四层代理配置
      • 两台服务器七层代理操作同上,tomcat操作也同上
      • 配置Nginx负载均衡服务器
      • 浏览器访问Nginx负载均衡服务器

一. Nginx的引入背景

公司产品出现瓶颈?

我们公司项目刚刚上线的时候,并发量小,用户使用的少,所以在低并发的情况下,一个jar包启动应用就够了,然后内部tomcat返回内容给用户。

  • 用户少,并发量少:
    在这里插入图片描述但是慢慢的,使用我们平台的用户越来越多了,并发量慢慢增大了,这时候一台服务器满足不了我们的需求了。

  • 用户多,并发量增大:
    在这里插入图片描述于是我们横向扩展,又增加了服务器。这个时候几个项目启动在不同的服务器上,用户要访问,就需要增加一个代理服务器了,通过代理服务器来帮我们转发和处理请求。

  • 横向扩展,增加服务器:
    在这里插入图片描述我们希望这个代理服务器可以帮助我们接收用户的请求,然后将用户的请求按照规则帮我们转发到不同的服务器节点之上。这个过程用户是无感知的,用户并不知道是哪个服务器返回的结果,我们还希望他可以按照服务器的性能提供不同的权重选择。保证最佳体验!所以我们使用了Nginx。

二 nginx 和 Tomcat 的关系

  • 反向代理:当我们的网站访问量越来越大,一台tomcat 服务器已经无法满足服务需求,需要加服务器,但是服务器直接无法实现session共享,需要加一层(nginx),来转发控制,反向代理到三台服务器中某台,实现数据共享。
  • 负载均衡:给服务器性能好的访问权重分配大,给服务性能差的分配流量少。

在这里插入图片描述

三. 什么是Nginx ?

(1)Nginx 是什么?

Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,第一个公开版本0.1.0发布于2004年10月4日。2011年6月1日,nginx 1.0.4发布。

(2) Nginx 特点:

占有内存少,处理并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。在全球活跃的网站中有12.18%的使用比率,大约为2220万个网站。

Nginx 是一个安装非常的简单、配置文件非常简洁(还能够支持perl语法)、Bug非常少的服务。Nginx 启动特别容易,并且几乎可以做到7*24不间断运行,即使运行数个月也不需要重新启动。你还能够不间断服务的情况下进行软件版本的升级。

Nginx代码完全用C语言从头写成。官方数据测试表明能够支持高达 50,000 个并发连接数的响应

四. Nginx作用?

1. 反向代理

  • Http代理,包含正向代理和反向代理,作为web服务器最常用的功能之一,尤其是反向代理。

(1) 正向代理:

  • 当我们的服务器直接访问外网(举例:美国服务器)的时候特别慢,使用vpn代理,通过vpn提供的代理服务器(举例:香港服务器)。
  • 我们请求代理服务器(香港服务器) --> 代理服务器请求外网(美国服务器);然后外网响应给代理服务器,代理服务器再把数据响应给我们的客户端服务器。
  • 正向代理:代理的是客户端,安装在客户端本机上
    • 正向代理类似一个跳板机,代理访问外部资源。
      正向代理的用途:
      ① 访问原来无法访问的资源,如google
      ② 可以做缓存,加速访问资源
      ③ 对客户端访问授权,上网进行认证
      ​ ④ 代理记录用户访问记录(上网行为管理),也可以对外网隐藏用户信息。
      【从外网的角度,只有代理服务器获取资源的时候有一次记录,当代理告服务器不告诉网站时,外网就不知道这个请求的用户信息】

在这里插入图片描述(2)反向代理:

-反向代理:代理的是服务端,让用户无感知地浏览服务器资源(无论动容增加了多少台服务器,用户都无法感知,用户访问的永远是域名),并且让服务器更好的部署上线。

  • 客户端是无感知代理服务器的存在的,访问者者并不知道自己访问的是一个代理。因为客户端不需要任何配置就可以访问

在这里插入图片描述

2. 负载均衡

  • Nginx提供的负载均衡策略有2种:内置策略和扩展策略

  • 内置策略为轮询,加权轮询,Ip hash。

  • 扩展策略,就天马行空,只有你想不到的没有他做不到的。

  • 轮询

  • 循环的意思
    在这里插入图片描述

  • 加权轮询
    在这里插入图片描述

  • iphash

  • 对客户端请求的ip进行hash操作,然后根据hash结果将同一个客户端ip的请求分发给同一台服务器进行处理,可以解决session不共享的问题

有n台 tomcat 服务器,则有n个 session,如何实现session共享?【实际开发使用的是redis】

  • nginx 提供的方法是:ip进行hash运行,从而固定的ip访问固定的某台服务器。

在这里插入图片描述

3. 动静分离

▪ 动静分离,在我们的软件开发中,有些请求是需要后台处理的,有些请求是不需要经过后台处理的(如:css、html、jpg、js等等文件),这些不需要经过后台处理的文件称为静态文件。
▪ 让动态网站里的动态网页根据一定规则把不变的资源和经常变的资源区分开来,动静资源做好了拆分以后,我们就可以根据静态资源的特点将其做缓存操作。提高资源响应的速度。

在这里插入图片描述目前,通过使用Nginx大大提高了我们网站的响应速度,优化了用户体验,让网站的健壮性更上一层楼!

五. Nginx 实战

七层反向代理

配置tomcat服务器和动态页面

(1) 安装JDK
在这里插入图片描述在这里插入图片描述在这里插入图片描述
(2)配置tomcat多实例

在这里插入图片描述
在这里插入图片描述在这里插入图片描述在这里插入图片描述
在这里插入图片描述修改各 tomcat 实例中的 startup.sh 和 shutdown.sh 文件,添加 tomcat 环境变量

在这里插入图片描述
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述配置动态页面

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

配置nginx七层代理

(1)下载nginx
(2)配置反向代理
在这里插入图片描述(3)配置静态页面
在这里插入图片描述
(4)重启服务进行网页测试

4

四层代理配置

准备四台服务器

  • Nginx 负载均衡服务器: 192.168.137.101
  • 两台Nginx 服务器七层代理服务器 192.168.137.102;192.168.137.103
  • 一台tomcat服务器 : 192.168.137.10

两台服务器七层代理操作同上,tomcat操作也同上

在这里插入图片描述所有的Nginx服务器配置文件长连接超时设置为0关闭

配置Nginx负载均衡服务器

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

浏览器访问Nginx负载均衡服务器

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

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

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

相关文章

TURTLEBOT3 Burger Waffle Pi 对比

TurtleBot3简介 TurtleBot3是TurtleBot系列中的第三代产品,它在二代的基础之上做了一些改进,并开发了一些新功能,以补充其前身缺乏的功能和满足用户的需求。 TurtleBot3采用机器人智能驱动器Dynamixel驱动,是一款小型的、可编程…

运维小白必学篇之基础篇第十八集:DNS和DHCP中继实验作业

DNS和DHCP中继实验作业 目录 DNS和DHCP中继实验作业 题1:实现DNS服务 服务器: 客户端: 题2:实现DHCP中继服务 服务端配置如下: 客户端配置: 服务端配置:(vmware11) 中继服务器端配置&…

能听懂语音的ChatGPT来了:10小时录音扔进去,想问什么问什么

类 ChatGPT 模型的输入框里可以粘贴语音文档了。 大型语言模型(LLM)正在改变每个行业的用户期望。然而,建立以人类语音为中心的生成式人工智能产品仍然很困难,因为音频文件对大型语言模型构成了挑战。 将 LLM 应用于音频文件的一…

SpringBoot入门程序以及启动方式 - 项目中切换服务器依赖

文章目录 SpringBootSpringBoot入门程序SpringBoot快速启动SpringBoot基本介绍SpringBoot切换服务器 SpringBoot SpringBoot入门程序 SpringBoot入门程序步骤如下: 创建新模块,选择Spring初始化,并配置模块相关基础信息 选择当前模块需要使用的技术集 …

你真的会写用例吗?自动化测试用例如何编写?看着资深测试的总结...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 Python自动化测试&…

Rocky9配置固定IP

vim /etc/NetworkManager/system-connections/enp4s0.nmconnection[ipv4] methodmanual # 子网掩码为 255.255.254.0 address1192.168.1.207/23,192.168.1.1 # 如果子网掩码为 255.255.255.0 则使用下面配置 # address1192.168.1.207/24,192.168.1.1 dns192.168.1.200;45.116.2…

Springcloud--异步通信RabbitMq

RabbitMQ 1.初识MQ 1.1.同步和异步通讯 微服务间通讯有同步和异步两种方式: 同步通讯:就像打电话,需要实时响应。 异步通讯:就像发邮件,不需要马上回复。 两种方式各有优劣,打电话可以立即得到响应&am…

全网对BGP团体属性讲的最透彻的一篇,附华为、思科、瞻博网络三厂商配置!

你好,这里是网络技术联盟站。 Border Gateway Protocol(边界网关协议,简称BGP)是一种广泛用于互联网的路由选择协议。BGP的设计目标是实现自治系统(AS)之间的路由选择和交换,它决定了网络中数据…

性能测试loadrunner

目录 基本概念 性能工具jemeter代码调试 loadrunner实战代码笔记 使用Loadrunner的步骤 性能指标分析结果 基本概念 一、什么是性能: 性能:是用来描述产品除功能外的所具有的速度,效率和能力的综合能力评价。 二、什么是性能测试&…

【马蹄集】第十四周作业

第十四周作业 目录 MT2134 泡泡MT2135 调整队伍MT2141 快排变形MT2142 逆序MT2143 线段树 MT2134 泡泡 难度:黄金    时间限制:1秒    占用内存:128M 题目描述 小码哥小时候喜欢吹泡泡,有一次他吹出了 n n n 个一样小的泡泡&…

工业无监督缺陷检测,提升缺陷检测能力,解决缺陷样品少、不平衡等问题

1. 简介 在工业生产中,质量保证是一个很重要的话题, 因此在生产中细小的缺陷需要被可靠的检出。工业异常检出旨在从正常的样本中检测异常的、有缺陷的情况。工业异常检测主要面临的挑战: 难以获取大量异常样本正常样本和异常样本差异较小异常的类型不能预先得知这些挑战使得…

Linux Tomcat服务 【Tomcat-JVM-系统内核】 优化

---------------------Tomcat 优化------------------------- Tomcat默认安装下的缺省配置并不适合生产环境,它可能会频繁出现假死现象需要重启,只有通过不断压测优化才能让它最高效率稳定的运行。优化主要包括三方面,分别为操作系统优化&…

智能电表价格比机械电表价格高那么多?为什么?

智能电表是一种电子式电表,采用微处理器进行数据处理和控制,具有远程监控、数据传输、电量显示等多种功能。而机械电表则是传统的机械式电表,采用旋转式或弹簧式机械结构进行计量。 智能电表的价格比机械电表高,这主要是由于以下几…

【每日挠头算法题(1)】——旋转字符串|亲密字符串

文章目录 一、旋转字符串思路1思路2 二、亲密字符串思路 总结 一、旋转字符串 点我直达终点~ 思路1 前提:如果s串和goal串长度不等,则goal串不可能是s串旋转得来,直接返回false; 通过观察,可以发现每旋转一次&#…

HCIA-流量管理方案

目录 ACL访问控制列表 ACL分类: ACL的工作原理: ACL的组成: 规则编号: 通配符 ACL的匹配机制 ACL的匹配位置 基本ACL的部署与配置 基本ACL的配置命令 基本ACL案列 高级ACL 高级ACL的创建命令 高级ACL案例 ACL访问控制列表…

安卓大作业:使用Android Studio开发天气预报APP(使用sqlite数据库)

使用Android Studio开发天气预报APP 今天我来分享一下如何使用Android Studio开发一个天气预报APP。在文中,我们将使用第三方接口获取实时天气数据,并显示在APP界面上。 步骤一:创建新项目 首先,打开Android Studio并创建一个新…

串口屏自制电脑机箱监控副屏-HF035

前言 如果程序员配电脑要干点什么酷酷的事情的话,那就自己DIY一个机箱监控副屏吧。监控副屏在某宝最便宜也要上百块,本文介绍了怎么使用成本几十块的串口屏模块从0开始完成一个酷炫的机箱监控副屏。主要是软件编程较多,仅涉及到一点硬件知识&…

在迷茫之中找到职业发展的方向!软件测试人员的迷茫

目录 出现迷茫或焦虑的原因是什么? 1、敏捷和DevOps开发模式的推行 2、测试的天花板比较低,自己上升的空间比较小 3、35岁是一个门槛,许多人也担心到了这个年龄 4、测试工作被机器人替代 如何走出迷茫? 1、坚守现在的测试岗位&am…

解决鞋业管理难题:低代码平台的应用与实践

如今,低代码平台正在逐渐发展成为一个重要的系统开发方式。与传统的编码方式相比,低代码平台更加注重“可视化”和“快速开发”。在这种情况下,低代码平台的应用范围也在不断拓展。在鞋业管理中,低代码平台也逐渐成为一种重要的技…

从小白到大神之路之学习运维第34天---第三阶段---mysql数据库之优化数据库、数据库备份、win10客户端连接

第三阶段基础 时 间:2023年6月6日 参加人:全班人员 内 容: Mysql数据库 目录 前提环境配置 优化 MySQL 数据库备份 Win10客户端连接 前提环境配置 关闭防火墙 (systemtl stop firewalld、iptables -F、setenforce 0)…