使用Nginx反向代理实现负载均衡

一、负载均衡

(一)为什么要使用负载均衡技术

随着产品的不断迭代和业务量的不断增长,基于各种网络传输协议的数据访问流量迅速增长,特别是对数据中心、大型企业和企业门户的访问,其访问流量甚至达到了10Gb/s。同时,随着技术的不断更新迭代,服务器为用户提供越来越丰富的服务数据和内容,服务器逐渐难以承受巨量的数据访问量。另外,由于大部分网站都要求服务器提供24小时不间断的服务,特别是电商平台等,任何服务的中断或者通信过程中的数据丢失都会造成直接或者间接的商业损失,这对服务器的高性能和高可靠性都提出了要求。

但是,相对与网络技术、网络带宽和应用服务的迅速发展,服务器处理速度和内存访问速度的提升显得力不从心,因此服务器性能成为了并发处理量提升的瓶颈。传统的单机服务器模式不能满足逐渐增长的业务需求。

针对以上情况的解决方案:

1、服务器进行硬件升级:采用高性能服务器替代现有的低性能服务器

改方案的弊端:

  • 高成本:
    高性能服务器成本高昂,需要高额成本投入;而原有低性能服务器被闲置,造成资源浪费。
  • 可扩展性差:
    每一次业务量的提升都需要升级硬件,导致开发成本越来越高,性能再卓越的设备最终也无法满足当前业务量的增长速度。
  • 无法解决单机服务器的可靠性问题:
    一旦服务器发生故障,依然会导致所有的服务无法再提供

2、组件服务器集群,利用负载均衡技术在服务器集群间进行业务访问请求的均衡分配

该方案的优势:

  • 低成本
  • 可扩展性
    当业务量增长时,只需要增加服务器即可满足需求,不影响原有业务,不降低服务质量。
  • 高可靠性
    单台服务器故障时,由负载均衡设备将对该服务器的访问请求转向其他服务器,保证服务提供不中断

(二)什么是负载均衡

1、负载均衡原理

系统的扩展可分为纵向(垂直)扩展和横向(水平)扩展。纵向扩展,是从单机的角度,通过增加硬件处理能力,如CPU处理能力,内存容量、磁盘读写速度等,实现服务器处理性能的提升,此方法不能满足大型分布式系统的大流量、高并发、海量数据的需求,因此需要采用横向扩展的方式,通过添加机器来满足大型网络系统服务的请求响应能力。一台机器无法满足并发需求,就增加机器数量,共同承担服务器压力。这就是典型的集群和负载均衡架构。如下图:
在这里插入图片描述

2、负载均衡的作用

  • 解决并发压力,提高应用处理能力
  • 提供故障转移,实现高可用
  • 通过增加或减少服务器数量,提供服务的伸缩性
  • 安全防护(负载均衡设备上做一些过滤,黑白名单等处理)

3、负载均衡分类

根据实现技术不同,可分为DNS负载均衡、HTTP负载均衡、IP负载均衡、反向代理负载均衡、链路层负载均衡。

4、负载均衡算法

轮询、随机、最少链接、Hash(原地址散列)、加权

二、反向代理

(一)正向代理

正向代理是指客户端向请求服务时,并不知道服务具体怎么找到服务,而是委托代理去请求服务,对于服务来说,他的用户就是代理。实际上服务器不知道用户发出了请求,以为是代理发出的请求。
在这里插入图片描述

(二)反向代理

反向代理是指用户向代理发送请求,代理响应请求。而实际上代理是将请求转发给了服务器,用户不知道是服务器响应的请求,只知道是代理响应了请求。
在这里插入图片描述

三、如何使用Nginx反向代理实现负载均衡

(一)nginx配置

进入nginx根目录下的conf文件夹,打开nginx.conf文件
在http{}模块下的server{}模块中配置代理的服务器,在server{}外配置被代理的服务器,如下图例子:
在这里插入图片描述
保存文件,开启被代理服务器上的项目,确认能够正常运行,通过start nginx命令开启nginx服务,然后访问配置文件中nginx监听的主机与端口号即将请求会转发到代理的服务器上,如上图例子中,应访问http://127.0.0.1:81/…
我在这里使用的nginx负载均衡算法是加权轮询算法,若有其他需要,见这篇博客:分布式系统常见负载均衡算法及其nginx实现

(二)nginx的开启与关闭

通过cmd进入nginx的根目录
开启:start nginx
关闭:nginx -s stop
重启:nginx -s reload

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
Nginx是一款常用的Web服务器软件,也可以用作反向代理负载均衡器。反向代理是指Nginx作为一个中间服务器,接收客户端的请求并将其转发给后端的服务器处理,然后将响应返回给客户端。 负载均衡是指将客户端请求分发到多个后端服务器上,以平衡服务器的负载。Nginx通过使用不同的负载均衡算法,如轮询、IP哈希、最少连接等,来决定将请求发送给哪个后端服务器。 配置Nginx作为反向代理负载均衡器需要进行一些设置。首先,你需要在Nginx配置文件中定义后端服务器的地址和端口,并设置相应的负载均衡策略。例如: ```nginx http { upstream backend { server backend1.example.com; server backend2.example.com; server backend3.example.com; } server { listen 80; server_name mywebsite.com; location / { proxy_pass http://backend; } } } ``` 在上述配置中,`upstream`指令定义了后端服务器的地址,在这里我们指定了三个后端服务器。`server`块中的`location`指令指定了代理转发的路径,`proxy_pass`指令将请求转发给定义的`upstream`。 这样配置之后,当有客户端请求到达Nginx时,Nginx会根据定义的负载均衡策略将请求转发给后端服务器,并将后端服务器的响应返回给客户端。 这就是Nginx反向代理负载均衡的基本概念和配置方法。希望对你有所帮助!如果还有其他问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值