第5章 负载均衡

news2024/12/26 23:17:43

第5章 负载均衡

5.1 proxy_pass详解

在nginx中配置proxy_pass代理转发时,如果在proxy_pass后面的url加/,表示绝对根路径;如果没有/,表示相对路径,把匹配的路径部分也给代理走。

假设下面四种情况分别用 http://192.168.1.1/proxy/test.html 进行访问。

第一种:

location /proxy/ {
	proxy_pass http://127.0.0.1/;
}

代理到URL:http://127.0.0.1/test.html

第二种(相对于第一种,最后少一个 / )

location /proxy/ {
	proxy_pass http://127.0.0.1;
}

代理到URL:http://127.0.0.1/proxy/test.html

第三种:

location /proxy/ {
	proxy_pass http://127.0.0.1/aaa/;
}

代理到URL:http://127.0.0.1/aaa/test.html

第四种(相对于第三种,最后少一个 / )

location /proxy/ {
	proxy_pass http://127.0.0.1/aaa;
}

代理到URL:http://127.0.0.1/aaatest.html

参照:https://www.jianshu.com/p/b010c9302cd0

5.1.1 应用

提示:https的web服务在<img>标签访问外部http协议的图片链接出现错误,因为会自动把图片的http升级为https,导致无法访问图片。https://blog.csdn.net/Ber_Bai/article/details/115144205

场景:

自己的web服务地址:https://www.aaa.com

外部链接图片地址:http://www.bbb.cn/HY_MDS/ProjectImage/20180116/平面图_20180116101228.png

解决方法,用nginx的反向代理解决:

1、首先我们需要把这个外部地址转换成我们服务的地址, 如下:

<img data-v-cb70158c=""src=“https://www.aaa.com/HY_MDS/ProjectImage/20180116/平面图_20180116101228.png”>

2、配置nginx,如下:

location /HY_MDS {
	proxy_pass http://www.bbb.cn/HY_MDS/;
}

此时访问https://www.aaa.com/HY_MDS/ProjectImage/20180116/平面图_20180116101228.png时会代理到http://www.bbb.cn/HY_MDS/ProjectImage/20180116/平面图_20180116101228.png

5.2 负载均衡概述

​ 在网站创立初期,我们一般都使用单台机器对外提供集中式服务。随着业务量的增大,我们一台服务器不够用,此时就会把多台机器组成一个集群对外提供服务,但是,我们网站对外提供的访问入口通常只有一个,比如 www.web.com。那么当用户在浏览器输入www.web.com进行访问的时候,如何将用户的请求分发到集群中不同的机器上呢,这就是负载均衡要做的事情。

​ 负载均衡通常是指将请求"均匀"分摊到集群中多个服务器节点上执行,这里的均匀是指在一个比较大的统计范围内是基本均匀的,并不是完全均匀。

5.3 负载均衡实现方式

5.3.1 硬件负载均衡

比如 F5、深信服、Array 等

​ 优点是有厂商专业的技术服务团队提供支持,性能稳定

​ 缺点是费用昂贵,对于规模较小的网络应用成本太高

5.3.2 软件负载均衡

比如 Nginx、LVS、HAProxy 等

​ 优点是免费开源,成本低廉

5.3.3 Nginx负载均衡

Nginx通过在nginx.conf文件进行配置即可实现负载均衡

(1) 原理图

img

(2) 配置如下:(配置2步即可)

A、 在http模块加上upstream配置

server外部配置:

upstream www.myweb.com { 
     	server  127.0.0.1:9100 weight=3; 
      	server  127.0.0.1:9200 weight=1;  
} 

其中weight=1表示权重,用于后端服务器性能不均的情况,访问比率约等于权重之比,权重越大访问机会越多

upstream是配置nginx与后端服务器负载均衡非常重要的一个模块,并且它还能对后端的服务器的健康状态进行检查,若后端服务器中的一台发生故障,则前端的请求不会转发到该故障的机器

B、 在server模块里添加location,并配置proxy_pass
location /myweb {
	proxy_pass http://www.myweb.com;
}

其中 www.myweb.com 字符串要和 upstream 后面的字符串相等

C、 效果

当访问localhost/myweb的时候回转发到127.0.0.1:9100或者127.0.0.1:9200服务器

(3) 案例:将resources/site中的myweb.war部署到两台不同的tomcat上,通过nginx实现负载均衡

A、 在linux服务器/usr/local目录下,拷贝两台新的tomcat

img

A、 将这两台tomcat服务器webapps目录下没用的项目删掉

img

img

B、 修改其中一台tomcat9100的端口号为9100

img

C、 修改tomcat9200的端口号为9200 ,因为需要同时启动两台,这里其它的端口号也要修改

img

img

img

D、 将myweb.war上传到两台tomcat服务器的webapps目录下

img

img

E、 启动两台tomcat

img

img

F、 浏览器直接访问两台tomcat,进行测试

img

img

但是我们网站一般对外之后提供一个入口地址,所以这个时候可以使用nginx进行负载。

G、 配置nginx

Ø 在http模块上加

img

Ø 在server模块加

img

H、 重启Nginx

img

I、 浏览器直接访问nginx进行测试

Ø 为了看到效果,在tomcat9100的index.jsp中加一个标记

img

Ø 这个时候可以看到,服务器的端口为80,是nginx服务器的默认端口

img

Ø 多访问几次,如果没有端口号,说明是tomcat9200被访问了

img

5.4 Nginx常用负载均衡策略

1.1.1 轮询(默认)

​ **注意:这里的轮询并不是每个请求轮流分配到不同的后端服务器,**与ip_hash类似,但是按照访问url的hash结果来分配请求,使得每个url定向到同一个后端服务器,主要应用于后端服务器为缓存时的场景下如果后端服务器down掉,将自动剔除

upstream backserver { 
  	server 127.0.0.1:8080; 
  	server 127.0.0.1:9090; 
} 

5.4.1 权重

每个请求按一定比例分发到不同的后端服务器,weight值越大访问的比例越大,用于后端服务器性能不均的情况

upstream backserver { 
  	server 192.168.0.14 weight=5; 
  	server 192.168.0.15 weight=2; 
} 

5.4.2 ip_hash

ip_hash也叫IP绑定,每个请求按访问ip的hash值分配,这样每个访问客户端会固定访问一个后端服务器,可以解决会话Session丢失的问题,其它三种会出现Session丢失问题。

缺点:1、当用户ip地址变了,也会出现Session丢失问题

算法:hash(“124.207.55.82”) % 2 = 0, 1 这种算法可能出现很多ip的Hash值求模后是同一个数,然后大量请求转发到同一个服务器

upstream backserver { 
  	ip_hash; 
  	server 127.0.0.1:8080; 
  	server 127.0.0.1:9090; 
}

5.4.3 最少连接

web请求会被转发到连接数最少的服务器上

upstream backserver { 
  	least_conn;#加上这个即表示会转发到最少连接数
  	server 127.0.0.1:8080; 
  	server 127.0.0.1:9090; 
}	

5.4.4 案例:将负载均衡策略修改为ip_hash进行测试

(1) 修改nginx.conf配置文件

img

(1) 重启nginx

img

(2) 浏览器访问测试,始终访问的是同一台tomcat服务器

不管刷新多少遍,始终访问的是同一台tomcat服务器

img

5.5 负载均衡其他几个配置

配置1:

upstream backserver { 
  	server 127.0.0.1:9100;
	#其它所有的非backup机器down的时候,才请求backup机器
  	server 127.0.0.1:9200 backup; 
} 

配置2:

upstream backserver { 
	server 127.0.0.1:9100;
	#down表示当前的server是down状态,不参与负载均衡
    server 127.0.0.1:9200 down; 
} 

一般在项目上线的时候,可以分配部署不同的服务器上,然后对Nginx重新reload。

reload不会影响用户的访问,或者可以给一个提示页面,系统正在升级…

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

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

相关文章

深度学习与文本聚类:一篇全面的介绍与实践指南

❤️觉得内容不错的话&#xff0c;欢迎点赞收藏加关注&#x1f60a;&#x1f60a;&#x1f60a;&#xff0c;后续会继续输入更多优质内容❤️ &#x1f449;有问题欢迎大家加关注私戳或者评论&#xff08;包括但不限于NLP算法相关&#xff0c;linux学习相关&#xff0c;读研读博…

vivado手写ROM改IP核

一、引言 手写了一个ROM&#xff0c;用于ADC或者DAC的寄存器配置。DAC出来的波形总是有两个对称的小肩膀&#xff0c;找不到原因。时序没有报错&#xff0c;但是有延迟。之前听同事说他们也遇到过这样的问题&#xff0c;是时序问题。所以&#xff0c;我也想试一下&#xff…

杂谈系列:唐高祖~开元通宝

唐高祖李渊&#xff08;566年12月 &#xff0d;635年6月 &#xff09;&#xff0c;字叔德。中国唐朝开国皇帝&#xff08;618年6月18日&#xff0d;626年9月4日在位&#xff09;。 作为唐朝开国的帝王&#xff0c;史学界对李渊的评价不一。有观点认为他优柔失断&#xff0c;赏罚…

源码级别讲解 redis 底层数据结构

redis 底层数据结构 Redis作为Key-Value存储系统&#xff0c;数据结构如下&#xff1a; Redis没有表的概念&#xff0c;Redis实例所对应的db以编号区分&#xff0c;db本身就是key的命名空间。 比如&#xff1a;user:1000作为key值&#xff0c;表示在user这个命名空间下id为10…

二叉树的层级遍历以及[NOIP2015 普及组] 扫雷游戏、有效时间的数目

一、二叉树的层级遍历 二叉树的层级遍历看着比其他遍历简单&#xff0c;但是我感觉实施起来却比其他遍历难&#xff0c;它主要是通过队列实现的 比如在这样的一颗二叉树中 我没先将a入队 队列&#xff1a;a 当a出队的时候就将它的左儿子和右儿子入队 队列&…

一图看懂 toml 模块:用于解析和创建TOML(Tom‘s Obvious, Minimal Language)的Python库, 资料整理+笔记(大全)

本文由 大侠(AhcaoZhu)原创&#xff0c;转载请声明。 链接: https://blog.csdn.net/Ahcao2008 [TOC](一图看懂 toml 模块&#xff1a;用于解析和创建TOML(Tom’s Obvious, Minimal Language)的Python库, 资料整理笔记&#xff08;大全&#xff09;) ☘️摘要 全文介绍系统内置…

leap模型重点关注技术,如:能源结构清洁转型、重点领域如工业、交通节能减排降耗、新能源发电系统及发电成本最优化、区域碳达峰碳中和实现路径设计及政策评估

模型简介&#xff1a; 中文名&#xff1a;LEAP模型 外文名&#xff1a;Long Range Energy Alternatives Planning System/ Low emission analysis platform 采用部门分析法建立的LEAP模型&#xff08;长期能源可替代规划模型&#xff09;是一种自下而上的能源-环境核算工具&a…

Spark大数据处理讲课笔记3.8 Spark RDD典型案例

文章目录 零、本节学习目标一、利用RDD计算总分与平均分&#xff08;一&#xff09;提出任务&#xff08;二&#xff09;准备工作1、启动HDFS服务2、启动Spark服务3、在本地创建成绩文件4、将成绩文件上传到HDFS &#xff08;三&#xff09;实现步骤1、打开RDD项目2、创建计算总…

FS2455高效率的同步降压DC-DC转换器5A输出电流

概述 FS2455是一种高效率的同步降压DC-DC转换器&#xff0c;具有5A输出电流。 FS2455在4.5V到30V的宽输入电压范围内工作&#xff0c; 集 成主开关和同步开关&#xff0c;具有非常低的RDS&#xff08;ON&#xff09;以最小化传导损失。 FS2455具有轻载时的应用和高效率。此外…

[GFCTF 2021]文件查看器(GZ、过滤器、phar) day4

打开界面直接一个登录界面&#xff0c;直接admin/admin登录进去 。 进来之后发现是一个文件查看器的功能 随便输入了点东西发现了报错&#xff0c;然后读取文件的功能&#xff0c;输入Files.classs.php发现读取不成功 换了个index.php <?phpfunction __autoload($classN…

无效的目标发行版: 11

背景&#xff1a;最近在研究es&#xff0c;想着弄一个连接es集群的springboot的工程&#xff0c;然后就在网上找到一个&#xff0c;结果弄到本地运行时&#xff0c;报错了“ 无效的目标发行版: 11 ” 看着报错就知道肯定是你导入的项目和你本地的JDK版本不匹配了&#xff0c;然…

手把手教你如何将安卓手机数据导入iPhone!【详解】

案例&#xff1a;安卓数据导入苹果手机 【大神们&#xff0c;刚换了新的苹果手机&#xff0c;原本的安卓手机数据怎么导入新手机&#xff1f;】 想要换用iPhone&#xff0c;但是又不想丢失安卓手机里的重要数据怎么办&#xff1f;如何将安卓手机数据导入iphone&#xff1f;本文…

如何学习5G网络优化才能拿高薪?我已摆烂,各位努力!

“内卷”和“躺平” 有的人卷成了麻花 有的人选择了躺下 毕竟只要躺得够平&#xff0c;就卷不到我 但是更多的人选择在“内卷”与“躺平”的徘徊抉择中 “躺”的核心是休息&#xff0c;“卷”的本质是提升 但是在优橙教育学习5G网络优化 大家学会将两者融合 学习的时候…

玩转ChatGPT:快速制作PPT

一、写在前面 首先还是让小Chat推销下自己&#xff1a; 你是否曾经为制作 PPT 而烦恼&#xff1f;现在有了 ChatGPT&#xff0c;再也不必担心灵感枯竭啦&#xff01;使用 ChatGPT 撰写 PPT 可以让你轻松地组织思路、快速得到内容&#xff0c;无需任何营销口号&#xff0c;Cha…

【算法与数据结构】队列

队列 队列&#xff1a;结构定义 队列是有一篇连续的存储区&#xff0c;其实连续性不重要&#xff0c;而是队列需要保持一个特性&#xff1a; 从队首出元素&#xff0c;从队尾入元素。这一点与顺序表不一样&#xff0c;元素加入的位置不一样 队列&#xff1a;只允许从尾部加入…

P1003 [NOIP2011 提高组] 铺地毯

题目提供者 CCF_NOI 难度 普及- 此篇必须看到底&#xff01; 题目描述 为了准备一个独特的颁奖典礼&#xff0c;组织者在会场的一片矩形区域&#xff08;可看做是平面直角坐标系的第一象限&#xff09;铺上一些矩形地毯。一共有 n 张地毯&#xff0c;编号从 1 到 n。现在…

电力物联网是什么?在智能配电系统中有什么作用?

摘要&#xff1a;在社会经济和科学技术不断发展中&#xff0c;配电网实现了角色转变&#xff0c;传统的单向供电服务形式已经被双向能流服务形式取代&#xff0c;社会多样化的用电需求也得以有效满足。随着物联网技术的发展&#xff0c;泛在电力物联网开始应用于当今的电力系统…

便携式挂钩型儿童椅 标准ASTMF1235测试项目周期多久?

便携式挂钩型儿童椅 适用于6 个 月至 3 岁之间的儿童&#xff0c;体重不超过 37 磅&#xff0c;并具 备自主协调坐姿的能力。 那么该类产品上亚马逊需要做下面的检测&#xff1a; 便携式儿童外出餐椅 ASTM F1235-18 和 CPSIA&#xff08;铅、邻苯二甲酸盐&#xff09; 亚马逊…

新手开始学【网络安全】要怎么入门?

前言&#xff1a;网络安全如何从零开始学习&#xff0c;少走弯路&#xff1f; 目录&#xff1a; 一&#xff0c;怎么入门&#xff1f; 1、Web 安全相关概念&#xff08;2 周&#xff09;2、熟悉渗透相关工具&#xff08;3 周&#xff09;3、渗透实战操作&#xff08;5 周&…

M304A-ZN-当贝纯净桌面-卡刷固件包-内有教程

M304A-ZN-当贝纯净桌面-卡刷固件包-内有教程 特点&#xff1a; 1、适用于对应型号的电视盒子刷机&#xff1b; 2、开放原厂固件屏蔽的市场安装和u盘安装apk&#xff1b; 3、修改dns&#xff0c;三网通用&#xff1b; 4、大量精简内置的没用的软件&#xff0c;运行速度提升…