大型web项目构建之负载均衡

  在我们日常开发,学习还有同事技术吹流弊当中,常常会听到一些逼格略高的词汇:“高并发”,“负载均衡”,“分布式啥啥啥”,“啥啥啥集群”,“正向代理,反向代理”等等,可能对于有一些整天敲着增删改查业务代码的程序猿,当被问道类似的技术词汇后,可能会表现的看似稳重带皮,实则慌的一批。今天闲暇来整理一下 ,我以前在开发中和通过查阅相关资料来复习一下高逼格词汇之一 ——“负载均衡”

1 什么是负载均衡?

 即将负载进行平衡:

  负载均衡是高可用网络基础架构的的一个关键组成部分,负载均衡(Load Balance)其意思就是将多个相同功能或者相似功能的服务(如web服务,ftp服务,企业关键应用服务等)分摊到多个操作单元上进行执行,共同完成工作任务

  可能对于上面关于负载均衡的概念你还是会有点懵,先别急,我们先来看一看传统不使用负载均衡的传统服务器架构,然后在对比学习使用了负载均衡的架构,这样你可能就会对负载均衡这一概念会有跟好的理解。

 1.1 传统服务器简单架构:

 传统服务器架构流程:

1)浏览器通过DNS-server,域名解析到ip

2)浏览器通过ip访问web-server

3)web-server处理访问数据库数据处理数据并返回到浏览器

如图:

我们常规小型项目可能只有一台web服务器加上一台数据库服务器,有的甚至只有一台服务器,所有的web服务,缓存服务,数据库服务,上传下载服务等等全都放在一台服务器上面,这样缺陷显然很明显

  1:单台服务器面对大量请求和高并发场景会有性能问题;

  2:服务一但挂掉会使所有的功能都将无法使用;

  3:单台台服务器不便于多人维护;

  4:单台服务没有负载均衡器和反向代理服器务安全也会相对较差

 1.2 DNS轮询实现负载均衡

那我们可以在上面的服务器架构做一些简单的优化:用DNS轮询实现简单的负载均衡,具体操作如下

1)浏览器通过DNS-server,域名解析到ip,这一步我们可以给DNS-server添加多条解析记录绑定多个服务器IP,然后通过配置记录的权重来实现负载均衡

2)浏览器通过ip访问web-server

3)web-server处理访问数据库数据处理数据并返回到浏览器

如图:

具体实际操作我们以腾讯云服务器为例,我们先添加两条记录

然后我们在负载均衡界面配置权重,这样我们就完成了通过DNS轮询来实现负载均衡,有一点需要注意的是:同记录类型、同主机记录、同线路的记录才可以实现解析的负载均衡

DNS轮询实现负载均衡的优缺点:

优点:

  • 零成本:只是在DNS服务器上绑定几个A记录,域名注册商一般都免费提供解析服务;
  • 部署简单:就是在网络拓扑进行设备扩增,然后在DNS服务器上添加记录。

缺点:

  • 可靠性低:假设一个域名DNS轮询多台服务器,如果其中的一台服务器发生故障,那么所有的访问该服务器的请求将不会有所回应,这是任何人都不愿意看到的。即使从DNS中去掉该服务器的IP,但在Internet上,各地区电信、网通等宽带接入商将众多的DNS存放在缓存中,以节省访问时间,DNS记录全部生效需要几个小时,甚至更久。所以,尽管DNS轮询在一定程度上解决了负载均衡问题,但是却存在可靠性不高的缺点。
  • 负载分配不均匀(有,但不会有那么大的影响):DNS负载均衡采用的是简单的轮询算法,不能区分服务器的差异,不能反映服务器的当前运行状态,不能做到为性能较好的服务器多分配请求,甚至会出现客户请求集中在某一台服务器上的情况。DNS服务器是按照一定的层次结构组织的,本地DNS服务器会缓存已解析的域名到IP地址的映射,这会导致使用该DNS服务器的用户在一段时间内访问的是同一台Web服务器,导致Web服务器间的负载不均匀。此外,用户本地计算机也会缓存已解析的域名到IP地址的映射。当多个用户计算机都缓存了某个域名到IP地址的映射时,而这些用户又继续访问该域名下的网页,这时也会导致不同Web服务器间的负载分配不均匀。负载不均匀可能导致的后果有:某几台服务器负荷很低,而另几台服务器负载很高、处理缓慢;配置高的服务器分配到的请求少,而配置低的服务器分配到的请求多。

通过上面的DNS轮询实现负载均衡是不是对负载均衡这一概念有了简单的理解,但是我们可以看到DNS轮询实现负载均衡有很多的缺点,那么我们还有其他的负载均衡方案吗?

 1.3 负载均衡器硬件实现负载均衡

直接在服务器和外部网络间安装负载均衡硬件设备,这种设备我们通常称之为负载均衡器。由专门的设备完成,独立于操作系统,整体性能得到大量提高,加上更多的负载均衡策略,智能化的流量管理,可达到最佳的负载均衡需求。 一般来说,硬件负载均衡在功能、性能上优于软件方式,不过成本昂贵,几十万到上百万不等,适合不差钱的土豪公司,很常见的有 F5负载均衡器:

通过F5平衡负载的去访问服务器群的每台机器。访问过程如下图所示

想要简单的了解和配置可以参考这篇文章https://zhuanlan.zhihu.com/p/41848499

硬件实现负载均衡优缺点:

  优点:能够直接通过智能交换机实现,处理能力更强,而且与系统无关,负载性能强更适用于一大堆设备、大访问量、简单应用

  缺点:成本高,贵贵贵,重要的事情说三遍,几十万甚至上百万对应一些小型企业来说也不是小数目,除设备价格高昂,而且配置相对复杂冗余,很难想象后面服务器做一个集群,但最关键的负载均衡设备却是单点配置;无法有效掌握服务器及应用状态,硬件负载均衡,一般都不管实际系统与应用的状态,而只是从网络层来判断,所以有时候系统处理能力已经不行了,但网络可能还来得及反应(这种情况比较典型,比如应用服务器后面内存已经占用很多,但还没有彻底不行,如果网络传输量不大就未必在网络层能反映出来)

1.4 nginx反向代理实现负载均衡(首先需要搞懂什么是反向代理,)

1)浏览器通过DNS-server,域名解析到代理服务器IP

2)浏览器通过ip访问web-server

3)web-server处理访问数据库数据处理数据并返回到浏览器

 

猜你喜欢

转载自www.cnblogs.com/ruanraun/p/10907629.html