nginx 一个请求发给多台机器_配置Nginx实现负载均衡

2fc3e505788b095bdcce73ebe08ea55f.png

企业在解决高并发问题时,一般有两个方向的处理策略,软件、硬件,硬件上添加负载均衡器分发大量请求,软件上可在高并发瓶颈处:数据库+web服务器两处添加解决方案,其中web服务器前面一层最常用的的添加负载方案就是使用nginx实现负载均衡。

 一、负载均衡的作用

1、转发功能

按照一定的算法【权重、轮询】,将客户端请求转发到不同应用服务器上,减轻单个服务器压力,提高系统并发量。

2、故障移除

通过心跳检测的方式,判断应用服务器当前是否可以正常工作,如果服务器期宕掉,自动将请求发送到其他应用服务器。

3、恢复添加

如检测到发生故障的应用服务器恢复工作,自动将其添加到处理用户请求队伍中。

c91665c720b3a71f79ec054d7893d2be.png

二、Nginx实现负载均衡

同样使用两个tomcat模拟两台应用服务器,端口号分别为8080 和8081。

1、Nginx的负载分发策略

Nginx 的 upstream目前支持的分配算法: 

  • 轮询 ——1:1 轮流处理请求(默认)

每个请求按时间顺序逐一分配到不同的应用服务器,如果应用服务器down掉,自动剔除,剩下的继续轮询。 

  • 权重 ——you can you up

通过配置权重,指定轮询几率,权重和访问比率成正比,用于应用服务器性能不均的情况。 

  • ip_哈希算法

每个请求按访问ip的hash结果分配,这样每个访客固定访问一个应用服务器,可以解决session共享的问题。 

2、配置Nginx的负载均衡与分发策略

通过在upstream参数中添加的应用服务器IP后添加指定参数即可实现,如:

upstream tomcatserver1 {    server 192.168.72.49:8080 weight=3;    server 192.168.72.49:8081;    }  server {        listen       80;        server_name  8080.max.com;        #charset koi8-r;        #access_log  logs/host.access.log  main;        location / {            proxy_pass   http://tomcatserver1;            index  index.html index.htm;        }     }

通过以上配置,便可以实现,在访问8080.max.com这个网站时,由于配置了proxy_pass地址,所有请求都会先通过nginx反向代理服务器,在服务器将请求转发给目的主机时,读取upstream为 tomcatsever1的地址,读取分发策略,配置tomcat1权重为3,所以nginx会将大部分请求发送给49服务器上的tomcat1,也就是8080端口;较少部分给tomcat2来实现有条件的负载均衡,当然这个条件就是服务器1、2的硬件指数处理请求能力。 

3、nginx其他配置

upstream myServer {       server 192.168.72.49:9090 down;    server 192.168.72.49:8080 weight=2;    server 192.168.72.49:6060;    server 192.168.72.49:7070 backup;}
  • down

表示单前的server暂时不参与负载

  •  Weight

 默认为1.weight越大,负载的权重就越大。

  •  max_fails

 允许请求失败的次数默认为1.当超过最大次数时,返回proxy_next_upstream 模块定义的错误

  •  fail_timeout

 max_fails 次失败后,暂停的时间。

  •  Backup

 其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻。

三、使用Nginx的高可用 

除了要实现网站的高可用,也就是提供n多台服务器用于发布相同的服务,添加负载均衡服务器分发请求以保证在高并发下各台服务器能相对饱和的处理请求。

同样,负载均衡服务器也需要高可用,以防如果负载均衡服务器挂掉了,后面的应用服务器也紊乱无法工作。

实现高可用的方案:添加冗余。添加n台nginx服务器以避免发生上述单点故障。

四、总结

总结一点,负载均衡不论是各种软件或硬件上的解决方案,主要还是将大量的并发请求按照一定的规律分发给不同的服务器处理,从而减少某台服务器的瞬时压力,提高网站的抗并发能力。

nginx在负载均衡的应用之所以广泛,笔者认为这归功于它的灵活配置,一个nginx.conf文件解决大部分问题,不论是nignx创建虚拟服务器、nginx的反向代理服务器,还是本文介绍的nginx的负载均衡,几乎都在这个配置文件中进行。

服务器上只负责把nginx搭好,跑起来即可。而且它本身轻量级,不需要占用服务器太多资源就可以达到较好的效果,腻害。

来源:https://blog.csdn.net/Daybreak1209/article/details/51554045

·END·

PHP开源社区进阶·提升·涨薪3385dc067962f0b6ba2cd35eb50802f5.png

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

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

相关文章

怎么用记事本写java_如何用记事本写下第一个Java程序-Fun言

在刚学java的时候,刚开始并未接触类似于Myeclipse这类的编辑器,都是用记事本编写程序,这样虽然很慢,但是能让我们明白其中的原理,所以今天来教大家用记事本来写第一个java程序"Hello World!"准备…

python中list是什么类型_Python中的list数据类型

创建列表sample_list [a,1,(a,b)]Python 列表操作sample_list [a,b,0,1,3]得到列表中的某一个值value_start sample_list[0]end_value sample_list[-1]删除列表的第一个值del sample_list[0]在列表中插入一个值sample_list[0:0] [sample value]得到列表的长度list_length …

pythonhash加密_Python字符串hashlib加密模块使用案例

主要用于对字符串的加密,最常用的为MD5加密:import hashlibdef get_md5(data):obj hashlib.md5()obj.update(data.encode(utf-8))result obj.hexdigest()return resultval get_md5(123) #这里放入要加密的字符串文字。print(val)#简便的写法&#xff…

python网络爬虫资源库名_Python网络爬虫

网友NO.524767Python网络爬虫与信息提取(实例讲解)课程体系结构: 1、Requests框架:自动爬取HTML页面与自动网络请求提交 2、robots.txt:网络爬虫排除标准 3、BeautifulSoup框架:解析HTML页面 4、Re框架:正则框架,提取页…

静态成员 java_JAVA中的静态成员

//Java中的静态成员/**静态的成员变量是属于类的,不属于某个对象,是共享的。* 访问时可以用类名.静态属性直接访问,也可以用对象.访问,后者不提倡。* 静态的成员方法只能访问静态的成员*/class Point{static int age ; //所有人共用agestatic…

python骨灰技巧_Pandas技巧,某骨灰级Pythoner经验总结,呕心沥血!

原标题:Pandas技巧,某骨灰级Pythoner经验总结,呕心沥血!Python已迅速发展为数据科学家必备的编程语言。python作为一种编程语言提供了更加优秀、宽阔的生体系统与深度的科学计算库。在科学计算库中,Pandas对数据科学最…

java课外兴趣小组管理系统_课外兴趣小组活动方案

课外活动在一定程度上可以开发孩子们的兴趣和天赋,下面是学习啦小编为你整理的课外兴趣小组活动方案,希望对你有用!课外兴趣小组活动方案1一、指导思想:为致力学校内涵式发展,全面推进素质教育,促进学生的全面发展和健…

软件项目周报_有关细节、效率、周报和扯淡

1、有关细节聊聊工作中的细节。有两个视角,「下属」和「上级」。大部分人同时有这两个角色,但屁股转变就有不同看法。对于下属来说,细节是自己的事,上级管得多会很让人烦,而且觉得这个上级很无能,只会盯着细…

java修改配置文件参数_在java类中获取在.properties配置文件中设置的参数

如何获取.properties配置文件中的参数,我在网上查了半天没弄明白,后来在以前的项目中找到了,就写下来,避免遗忘。1.配置文件:message_product.propertiestotal_product2service11,新股发行短信提醒服务,发行的详细信息…

ps发光插件_PS插件自定义区域发光真实辉光插件 Oniric Glow Generator for Photoshop【资源分享1444】...

AE特效PR剪辑C4D影视后期全世界只有不到1%的人关注了你是个很特别的人AE影视后期定期推送「AEPRC4D 影视特效合成 婚庆剪辑调色 电视广告包装 微电影制作 SpeedGrade达芬奇专业调色 摄影等」打造影视后期高端学习平台影视后期 ID:AEPRC4D9【PS插件信息】非常棒的一款…

java按时间范围过滤_在Java中,如何仅选择或过滤在特定时间段内创建的文件

谢谢Ben, Nicolas-R, Basil-Bourque。通过所有输入(使用listFiles,更改过滤器逻辑和使用joda),这就是我最终制作的&像魅力的工作:File directory new File(fileLoc);FileFilter filter new FileFilter() {public…

python 退出_如果读完这篇文章不能让你入门Python,那我将永久退出编程界

(PS:文末福利赠送 无套路,真实有效!)Python是一种动态解释型的编程语言。Python可以在Windows、UNIX、MAC等多种操作系统上使用,也可以在Java、.NET开发平台上使用。【特点】1 Python使用C语言开发,但是Python不再有C语言中的指针…

java 求最长重复子串_给定一个字符串,求出其最长的重复子串。

#include #include #include #include using namespace std;//给定一个字符串,求出其最长的重复子串//方法一string lsubstr_1(const string & str){vector vs;for (int i 0; i < str.size(); i)vs.push_back(str.substr(i));sort(vs.begin(), vs.end());int max 0;in…

unity 检测文本有没有自动换行_python3从零学习-5.1.5、文本自动换行与填充模块textwrap...

TextWrapper 模块提供了一些快捷函数&#xff0c;以及可以完成所有工作的类 TextWrapper 如果你只是要对一两个文本字符串进行自动换行或填充&#xff0c;快捷函数应该就够用了&#xff1b;否则的话&#xff0c;你应该使用 TextWrapper 的实例来提高效率。…

java英文版怎么汉化_请问,java中,将下面的英文名字变为中文 该怎样输出?

如题&#xff0c;下面是代码——————————————————————————————importjava.io.*;publicclassRandomFileDemo{publicstaticvoidmain(String[]args)throwsException{Em...如题&#xff0c;下面是代码————————————————————————…

python建立多台电脑共用的_用virtualenv建立多个Python独立虚拟开发环境

用virtualenv创建虚拟环境&#xff0c;是通过复制全局的python解释器&#xff0c;达到环境的互不影响&#xff1b;新建的虚拟环境会自动复制python解释器环境保存到当前路径之下&#xff1b;3、virtualenv虚拟环境&#xff1a;activate #进入虚拟环境进入虚拟环境&#xff1a;d…

java引入bean代码_通过java代码装配bean

importorg.springframework.beans.factory.annotation.Qualifier;importorg.springframework.context.annotation.Bean;importorg.springframework.context.annotation.Configuration;/** Spring 的组件扫描默认是不启用的&#xff0c;需要显式配置启用组件扫描去寻找被 Compon…

红黑树和平衡二叉树的区别_一文搞懂红黑树

文章参考 | https://segmentfault.com/a/1190000012728513前言当在10亿数据进行不到30次比较就能查找到目标时&#xff0c;不禁感叹编程之魅力&#xff01;二叉树在了解红黑树之前&#xff0c;先要了解二叉树&#xff0c;又叫二叉查找树、二叉搜索树、二叉排序树。二叉树顾名思…

mysql table keys_MySQL Explain详解

在日常工作中&#xff0c;我们会有时会开慢查询去记录一些执行时间比较久的SQL语句&#xff0c;找出这些SQL语句并不意味着完事了&#xff0c;些时我们常常用到explain这个命令来查看一个这些SQL语句的执行计划&#xff0c;查看该SQL语句有没有使用上了索引&#xff0c;有没有做…

程序员肚子越来越大_肚子越来越大,除了肥胖还可能是疾病信号!腰间搓一搓,排出痰浊,消脂防病~...

☀ 定期推送健康知识&#xff0c;生活窍门&#xff0c;演出资讯&#xff0c;旅游信息&#xff0c;商家优惠等诸多优质内容&#xff0c;接地气、重服务的微信平台&#xff01;关注我们妥妥没错&#xff01;今天我们所说的“要命的肚子”就是一种肥胖&#xff0c;众所周知导致肥胖…