业界动态
Nginx反向代理与负载均衡应用实践
2024-11-19 03:12

Nginx反向代理与负载均衡应用实践


(1)高性能

一些国家重要的计算密集型应用(如天气预报,核试验模拟等),需要计算机有很强的运算处理能力。以全世界现有的技术,即使是大型机,其计算能力也是有限的,很难单独完成此任务。因为计算时间可能会相当长,也许几天,甚至几年或更久。因此,对于这类复杂的计算业务,便使用了计算机集群技术,集中几十上百台,甚至成千上万台计算机进行计算。

假如你配一个LNMP环境,每次只需要服务10个并发请求,那么单台服务器一定会比多个服务器集群要快。只有当并发或总请求数量超过单台服务器的承受能力时,服务器集群才会体现出优势。

(2)价格有效性

通常一套系统集群架构,只需要几台或数十台服务器主机即可。与动辄价值上百万元的专用超级计算机相比便宜了很多。在达到同样性能需求的条件下,采用计算机集群架构比采用同等运算能力的大型计算机具有更高的性价比。

当服务负载,压力增长时,针对集群系统进行较简单的扩展即可满足需求,且不会降低服务质量。

通常情况下,硬件设备若想扩展性能,不得不增加新的CPU和存储器设备,如果加不上去了,就不得不够买更高性能的服务器,就拿我们现在的服务器来讲,可以增加的设备总是有限的。如果采用集群技术,则只需要将新的单个服务器加入现有集群架构中即可,从访问的客户角度来看,系统服务无论是连续性还是性能上都几乎没有变化,系统在不知不觉中完成了升级,加大了访问能力,轻松地实现了扩展。集群系统中的节点数目可以增长到几千乃至上万个,其伸缩性远超过单台超级计算机。

(4)高可用性

单一的计算机系统总会面临设备损毁的问题,如CPU,内存,主板,电源,硬盘等,只要一个部件坏掉,这个计算机系统就可能会宕机,无法正常提供服务。在集群系统中,尽管部分硬件和软件也还是会发生故障,但整个系统的服务可以是7*24小时可用的。

多个独立计算机组成的松耦合集群系统构成一个虚拟服务器。用户或客户端程序访问集群系统时,就像访问一台高性能,高可用的服务器一样,集群中一部分服务器的上线,下线不会中断整个系统服务,这对用户也是透明的。

(6)可管理性

整个系统可能在物理上很大,但其实容易管理,就像管理一个单一映像系统一样。在理想状况下,软硬件模块的插入能做到即插即用。

(7)可编程性

在集群系统上,容易开发及修改各类应用程序。

计算机集群架构按功能和结构可以分成以下几类:

1、负载均衡集群

负载均衡集群为企业提供了更为实用,性价比更高的系统架构解决方案。负载均衡集群可以把很多客户集中的访问请求负载压力尽可能平均地分摊在计算机集群中处理。客户访问请求负载通常包括应用程序处理负载和网络流量负载。这样的系统非常适合使用同一组应用程序为大量用户提供服务的模式,每个节点都可以承担一定的访问请求负载压力,并且可以实现访问请求在各节点之间动态分配,以实现负载均衡。

(1)负载均衡集群的作用为:

分摊用户访问请求及数据流量(负载均衡)

负载均衡集群典型的开源软件包括LVS,Nginx,Haproxy等。如下图所示:

2、高可用性集群

一般是指在集群中任意一个节点失效的情况下,该节点上的所有任务会自动转移到其他正常的节点上。此过程并不影响整个集群的运行。

高可用性集群的作用为:

3、高性能计算集群

高性能计算集群也称并行计算。通常,高性能计算集群涉及为集群开发的并行应用程序,以解决复杂的科学问题(天气预报,石油勘探,核反应模拟等)。高性能计算集群对外就好像一个超级计算机,这种超级计算机内部由数十至上万个独立服务器组成,并且在公共消息传递层上进行通信以运行并行应用程序。在生产环境中实际就是把任务切成蛋糕,然后下发到集群节点计算,计算后返回结果,然后继续领新任务计算,如此往复。

在互联网网站运维中,比较常用的就是负载均衡集群和高可用性集群

LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统。

1、搭建负载均衡服务的需求

搭建负载均衡服务的需求如下:

(1)把单台计算机无法承受的大规模并发访问或数据流量分担到多台节点设备上,分别进行处理,减少用户等待响应的时间,提升用户体验。

2 、Nginx负载均衡集群介绍

(1)反向代理与负载均衡概念简介

严格地说,Nginx仅仅是作为Nginx Proxy反向代理使用的,因为这个反向代理功能表现的效果是负载均衡集群的效果,所以本文称之为Nginx负载均衡。那么,反向代理和负载均衡有什么区别呢?

(2)实现Nginx负载均衡的组件说明

实现Nginx负载均衡的组件主要有两个,如下表:

Nginx反向代理与负载均衡应用实践

1、软硬件准备

2、安装Nginx软件,命令如下

加工Nginx配置文件

3、配置用于测试的Web服务

配置完成后检查语法,并启动Nginx服务

然后填充测试文件数据,如下:

配置解析Web和Web1的IP和主机名后,用curl测试一下

Nginx反向代理与负载均衡应用实践

Nginx反向代理与负载均衡应用实践

1、配置负载均衡,代理www.mendermi.com服务

Nginx反向代理与负载均衡应用实践

检查语法并启动

Nginx反向代理与负载均衡应用实践

检查负载均衡测试结果。Linux作为客户端的测试结果如下

例,关闭Web的nginx服务

例关闭所有Web的nginx服务

开启所有Web服务器的nginx服务

1 、upstream模块介绍

Nginx反向代理与负载均衡应用实践

Nginx反向代理与负载均衡应用实践

2、upstream模块相关说明

Nginx反向代理与负载均衡应用实践

3、upstream模块调度算法

下面介绍一下常见的调度算法。

(1) rr轮询(默认调度算法,静态调度算法)

按客户端请求顺序把客户端的请求逐一分配到不同的后端节点服务器,这相当于LVS中的rr算法,如果后端节点服务器宕机(默认情况下Nginx只检测80端口),宕机的服务器会被自动从节点服务器池中剔除,以使客户端的用户访问不受影响。新的请求会分配给正常的服务器。

(2)wrr(权重轮询,静态调度算法)

在rr轮询算法的基础上加上权重,即为权重轮询算法,当使用该算法时,权重和用户访问成正比,权重值越大,被转发的请求也就越多。可以根据服务器的配置和性能指定权重值大小,有效解决新旧服务器性能不均带来的请求分配问题。

(3)ip_hash(静态调度算法)(会话保持)

每个请求按客户端IP的hash结果分配,当新的请求到达时,先将其客户端IP通过哈希算法哈希出一个值,在随后的客户端请求中,客户IP的哈希值只要相同,就会被分配至同一台服务器,该调度算法可以解决动态网页的session共享问题,但有时会导致请求分配不均,即无法保证1:1的负载均衡,因为在国内大多数公司都是NAT上网模式,多个客户端会对应一个外部IP,所以,这些客户端都会被分配到同一节点服务器,从而导致请求分配不均。LVS负载均衡的-p参数,Keepalived配置里的persistence_timeout 50参数都类似这个Nginx里的ip_hash参数,其功能都可以解决动态网页的session共享问题。

Nginx反向代理与负载均衡应用实践

注意:

(4)fair(动态调度算法)

此算法会根据后端节点服务器的响应时间来分配请求,响应时间短的优先分配。这是更加智能的调度算法。此种算法可以根据页面大小和加载时间长短智能地进行负载均衡,也就是根据后端服务器的响应时间来分配请求,响应时间短的优先分配。Nginx本身不支持fair调度算法,如果需要使用这种调度算法,必须下载Nginx相关模块upstream_fair。

示例如下:

(5)least_conn

least_conn算法会根据后端节点的连接数来决定分配情况,哪个机器连接数少就分发。

(6)url_hash算法(web缓存节点)

url_hash(web缓存节点)和ip_hash(会话保持)类似。示例配置如下:

(7)一致性hash算法

例:

虽然Nginx本身不支持一致性hash算法,但Nginx得分支Tengine支持。详细可参考

1、 proxy_pass指令介绍

Nginx反向代理与负载均衡应用实践

2、http proxy模块参数

Nginx反向代理与负载均衡应用实践

  1. 查看nginx的配置文件如下:

    Nginx反向代理与负载均衡应用实践

在代理服务器nginx上进行测试:

2、反向代理多虚拟主机节点服务器企业案例





Nginx反向代理与负载均衡应用实践

在代理服务器nginx上进行测试:

Nginx反向代理与负载均衡应用实践

3、经过反向代理后的节点服务器记录用户IP企业案例

例如:使用任意windows客户端计算机,访问已经解析好代理IP的www.yunjisuan.com后,去节点服务器www服务日志查看,就会发现如下日志:

Nginx反向代理与负载均衡应用实践

重新加载Nginx反向代理服务:

测试检查

去节点服务器WWW服务的访问日志里查看,会发现日志的结尾已经变化了:

Nginx反向代理与负载均衡应用实践

除了具有多虚拟主机代理以及节点服务器记录真实用户IP的功能外,Nginx软件还提供了相当多的作为反向代理和后端节点服务器对话的相关控制参数,具体见前面proxy模块时提供的图表。

1、由于参数众多,最好把这些参数放到一个配置文件里,然后用include方式包含到虚拟主机配置里,效果如下:

Nginx反向代理与负载均衡应用实践

1、例:通过Nginx实现动静分离,即通过Nginx反向代理配置规则实现让动态资源和静态资源及其他业务分别由不同的服务器解析,以解决网站性能,安全,用户体验等重要问题。

下图为企业常见的动静分离集群架构图,此架构图适合网站前端只使用同一个域名提供服务的场景,例如,用户访问的域名是www.mendermi.com,然后,当用户请求www.mendermi.com/upload/xx地址时候,代理会分配请求到上传服务器池处理数据;当用户请求www.mendermi.com/static/xx地址的时候,代理会分配请求到静态服务器池请求数据;当用户请求www.mendermi.com/xx地址的时候,即不包含上述指定的目录地址路径时,代理会分配请求到默认的动态服务器池请求数据(注意:上面的xx表示任意路径)。

Nginx反向代理与负载均衡应用实践

2、准备:配置实战

了解了需求后,就可以进行upstream模块服务器池的配置了。

下面利用location或if语句把不同的URI(路径)请求,分给不同的服务器池处理,具体配置如下。

方案2:以if语句实现。

下面以方案1为例进行实验,Nginx反向代理的实际配置如下:

重新加载配置生效

暂时不要立刻测试成果,为了实现上述代理的测试,还需要在Web01和Web02上做节点的测试配置,才能更好地展示测试效果。

Nginx反向代理与负载均衡应用实践

以Web2作为upload上传服务,地址端口为:192.168.200.137:80,需要事先配置一个用于测试上传服务的地址页面,并测试访问,确定它会返回正确结果。创建目录及文件同Web1相似,只是改了模块名,详见下图

Nginx反向代理与负载均衡应用实践

Nginx反向代理与负载均衡应用实践

在Web3作为动态服务节点,地址端口为192.168.200.128:80,同样需要事先配置一个默认的地址页面,并测试访问,确定它会返回正确结果。操作步骤如下:

Nginx反向代理与负载均衡应用实践

以上准备了三台Web节点服务器,分别加入到了upstream定义的不同服务器池,代表三组不同的业务集群组,从本机通过hosts解析各自的域名,然后测试访问,其地址与实际访问的内容输出请对照下表:

Nginx反向代理与负载均衡应用实践

使用客户端计算机访问测试时,最好选用集群以外的机器,这里先在浏览器客户端的hosts文件里把www.yunjisuan.com解析到Nginx反向代理服务器的IP,然后访问上述URL,看代理是不是把请求正确地转发到了指定的服务器上。如果可以得到与上表对应的内容,表示配置的Nginx代理分发的完全正确,因为如果分发请求到错误的机器上就没有对应的URL页面内容,输出会是404错误。

Nginx反向代理与负载均衡应用实践

Nginx反向代理与负载均衡应用实践

    以上就是本篇文章【Nginx反向代理与负载均衡应用实践】的全部内容了,欢迎阅览 ! 文章地址:http://keair.bhha.com.cn/news/1158.html 
     文章      相关文章      动态      同类文章      热门文章      栏目首页      网站地图      返回首页 康宝晨移动站 http://keair.bhha.com.cn/mobile/ , 查看更多   
最新文章
十堰海尔热水器维修_十堰海尔热水器售后服务中心
十堰海尔热水器维修电话:0719-8025036,专业十堰海尔热水器维修、十堰海尔热水器售后服务,各区均有分点,方便快捷,多年十堰海尔热水器维修经验,诚信可靠,品质保证。
投稿干货!62个适合新手投稿的公众号,超易过稿!
↑点击上方蓝字“越万声”获取公众号一枚 本文共6000字,阅读时间10分钟晚上好~我是阿越~最近想着创建自由职业社群,结果发现
怎样优化网站排名靠前
在当今数字化时代,网站已成为企业展示产品和服务的重要窗口。仅仅拥有一个网站是不够的,如何让网站在搜索引擎中排名靠前,是每
国内十个免费自学网站
生活在这个充满竞争,血腥味十足分分钟钟就会别人取代的大数据移动互联时代,大家一有点时间就会拼命地给自己打鸡血充电学习,让
2024赚钱软件排行榜第一名 最靠谱的赚钱软件app平台推荐
想知道哪些网赚平台最可靠吗?小编将为你揭示网赚平台的整体优势和独特之处。这种新颖的赚钱模式,让你只需一台电脑或手机,就能
市场监管总局公布9起网络不正当竞争典型案例
随着互联网领域竞争业态及方式的转变,借助技术手段,衍生出的数据爬取、流量劫持等新型网络不正当竞争行为频发多发,刷单炒信、
免费外链群发工具
外链群发工具,什么是外链群发工具。相信大家都知道外链的作用。外链是为了促进更多的收入。而外链群发工具就是发布大量的外链。
恶心,北京一程序员研发“一键脱衣”AI软件,制作照片近七千张
辣眼睛,北京一研发“一键脱衣”AI软件,制作照片近七千张。近日,北京某公司员工白某某研发“”AI软件,通过AI软件将他人提供的
全网最详细中英文ChatGPT-GPT-4示例文档-人工智能助手从0到1快速入门——官网推荐的48种最佳应用场景(附python/node.js/curl命令源代码,小白也能学)
ChatGPT是目前最先进的AI聊天机器人,它能够理解图片和文字,生成流畅和有趣的回答。如果你想跟上AI时代的潮流ÿ
【省260元】iQOO安卓手机
iQOO Neo10 Pro 5G智能手机发布于24年11月29日,外观设计方面依旧悬浮之窗设计,机身薄至7.99mm,轻至199g。采用铟丝中框,1.4mm
相关文章