负载均衡概述

懒驴 2021年12月14日 2,477次浏览

首先聊负载均衡之前,我们来看看Nginx的定义。

Nginx的定义

Nginx(Engine x)是一个高性能的HTTP和反向代理服务,可以将Nginx作为负载均衡服务。如下图所示,是一个简单的负载均衡原理示意图:

负载均衡简单原理示意图

负载均衡的实现

1.基于软件负载均衡实现

如上面介绍到的Nginx
我们可以把Web服务配置到Nginx中,用户访问Nginx时,就会自动被分配到某个Web服务。当网站业务规模变大时,通常将业务拆分为多个服务,每个服务独立部署,通过远程调用方式(RPC)协同工作。为了保证稳定性,每个服务不会只使用一台服务器,会作为一个集群存在,子集群也可以使用Nginx负载均衡。
Nginx负载均衡简单原理

ZooKeeper 是目前流行的注册中心,每个Web服务在其中注册登记,服务调用者到注册中心查找能提供所需服务的服务器列表,然后根据负载均衡算法从中选取一台服务器进行连接。调用者获取到服务器列表后进行缓存,提供系统性能。当服务器列表发生变化时,例如某台服务器宕机下线或者新添加服务器,ZooKeeper会自动通知调用者重新获取服务器列表。ZooKeeper服务注册原理如下图所示:

ZooKeeper服务注册原理

2.DNS域名解析负载均衡

我们可以在DNS服务器上配置域名对应多个IP。例如域名 www.trhyme.com 对应一组Web服务器IP地址,域名解析时通过DNS服务器的算法将一个域名请求分配到合适的真实服务器上。
DNS域名解析负载均衡原理示意图如下:

DNS域名解析负载均衡简单原理


DNS域名解析负载均衡的优点

  • 将负载均衡工作交予DNS负责,省去了网站管理维护负载均衡服务器的麻烦。
  • DNS支持基于地理位置的域名解析,将域名解析程距离用户地理位置最近的一个服务器地址,加快访问速度。
  • DNS服务器稳定性高。

DNS域名解析负载均衡的缺点

  • DNS负载均衡的控制权在域名服务商手里,网站可能无法做出过多的改善和管理。
  • DNS解析是多级解析,每一级DNS都可能会缓存记录,当某一服务器下线后,该服务器对应的DNS记录可能仍然存在,导致分配到该服务器的用户访问失败。
  • DNS负载均衡采用的是简单的轮询算法,不能区分服务器之间的差异,不能反映服务器当前的运行状态,不能够按服务器的处理能力来分配负载。

3.基于硬件负载均衡

硬件的负载均衡有F5 Network Big-IP(简称F5),F5是一个网络设备,类似于网络交换机,完全通过硬件来抗压力。F5多用于大型互联网公司的流量入口最前端,以及政府、国企等不缺钱的企业,一般中小公司不舍得使用。F5负载均衡原理如下图所示:

F5负载均衡简单原理示意图

下一篇 《负载均衡算法》