如何架设高性能负载均衡

一、什么是负载均衡?

  早期的互联网应用,由于用户流量比较小,业务逻辑也比较简单,往往一个单服务器就能满足负载需求。随着现在互联网的流量越来越大,稍微好一点的系统,访问量就非常大了,并且系统功能也越来越复杂,那么单台服务器就算将性能优化得再好,也不能支撑这么大用户量的访问压力了,这个时候就需要使用多台机器,设计高性能的集群来应对。

  那么,多台服务器是如何去均衡流量、如何组成高性能的集群的呢?此时就需要请出 「负载均衡器」 入场了。

  负载均衡(Load Balancer)是指把用户访问的流量,通过「负载均衡器」,根据某种转发的策略,均匀的分发到后端多台服务器上,后端的服务器可以独立的响应和处理请求,从而实现分散负载的效果。负载均衡技术提高了系统的服务能力,增强了应用的可用性。

二、负载均衡方案有几种?

  目前市面上最常见的负载均衡技术方案主要有三种:

  • 基于DNS负载均衡
  • 基于硬件负载均衡
  • 基于软件负载均衡

  三种方案各有优劣,DNS负载均衡可以实现在地域上的流量均衡,硬件负载均衡主要用于大型服务器集群中的负载需求,而软件负载均衡大多是基于机器层面的流量均衡。在实际场景中,这三种是可以组合在一起使用。下面来详细讲讲:

1、基于DNS负载均衡

 

  基于DNS来做负载均衡其实是一种最简单的实现方案,通过在DNS服务器上做一个简单配置即可。

  其原理就是当用户访问域名的时候,会先向DNS服务器去解析域名对应的IP地址,这个时候我们可以让DNS服务器根据不同地理位置的用户返回不同的IP。比如南方的用户就返回我们在广州业务服务器的IP,北方的用户来访问的话,我就返回北京业务服务器所在的IP。

在这个模式下,用户就相当于实现了按照「就近原则」将请求分流了,既减轻了单个集群的负载压力,也提升了用户的访问速度。

  使用DNS做负载均衡的方案,天然的优势就是配置简单,实现成本非常低,无需额外的开发和维护工作。

  但是也有一个明显的缺点是:当配置修改后,生效不及时。这个是由于DNS的特性导致的,DNS一般会有多级缓存,所以当我们修改了DNS配置之后,由于缓存的原因,会导致IP变更不及时,从而影响负载均衡的效果。

  另外,使用DNS做负载均衡的话,大多是基于地域或者干脆直接做IP轮询,没有更高级的路由策略,所以这也是DNS方案的局限所在。

2、基于硬件负载均衡

  硬件的负载均衡那就比较牛逼了,比如大名鼎鼎的 F5 Network Big-IP,也就是我们常说的 F5,它是一个网络设备,你可以简单的理解成类似于网络交换机的东西,完全通过硬件来抗压力,性能是非常的好,每秒能处理的请求数达到百万级,即 几百万/秒 的负载,当然价格也就非常非常贵了,十几万到上百万人民币都有。

  因为这类设备一般用在大型互联网公司的流量入口最前端,以及政府、国企等不缺钱企业会去使用。一般的中小公司是不舍得用的。

  采用 F5 这类硬件做负载均衡的话,主要就是省心省事,买一台就搞定,性能强大,一般的业务不在话下。而且在负载均衡的算法方面还支持很多灵活的策略,同时还具有一些防火墙等安全功能。但是缺点也很明显,一个字:贵。

3、基于软件负载均衡

  软件负载均衡是指使用软件的方式来分发和均衡流量。软件负载均衡,分为7层协议 和 4层协议。

  网络协议有七层,基于第四层传输层来做流量分发的方案称为4层负载均衡,例如 LVS,而基于第七层应用层来做流量分发的称为7层负载均衡,例如 Nginx。这两种在性能和灵活性上是有些区别的。

  基于4层的负载均衡性能要高一些,一般能达到 几十万/秒 的处理量,而基于7层的负载均衡处理量一般只在 几万/秒 。

  基于软件的负载均衡的特点也很明显,便宜。在正常的服务器上部署即可,无需额外采购,就是投入一点技术去优化优化即可,因此这种方式是互联网公司中用得最多的一种方式。

三、常用的均衡算法有哪些?

  在实际方案应用中,一般可以使用哪些均衡算法?

  • 轮询策略
  • 负载度策略
  • 响应策略
  • 哈希策略

分别介绍一下这几种均衡算法/策略的特点:

  1. 轮询策略

  轮询策略其实很好理解,就是当用户请求来了之后,「负载均衡器」将请求轮流的转发到后端不同的业务服务器上。这个策略在DNS方案中用的比较多,无需关注后端服务的状态,只药有请求,就往后端轮流转发,非常的简单、实用。

  在实际应用中,轮询也会有多种方式,有按顺序轮询的、有随机轮询的、还有按照权重来轮询的。前两种比较好理解,第三种按照权重来轮询,是指给每台后端服务设定一个权重值,比如性能高的服务器权重高一些,性能低的服务器给的权重低一些,这样设置的话,分配流量的时候,给权重高的更多流量,可以充分的发挥出后端机器的性能。

  1. 负载度策略

  负载度策略是指当「负载均衡器」往后端转发流量的时候,会先去评估后端每台服务器的负载压力情况,对于压力比较大的后端服务器转发的请求就少一些,对于压力比较小的后端服务器可以多转发一些请求给它。

  这种方式就充分的结合了后端服务器的运行状态,来动态的分配流量了,比轮询的方式更为科学一些。

但是这种方式也带来了一些弊端,因为需要动态的评估后端服务器的负载压力,那这个「负载均衡器」除了转发请求以外,还要做很多额外的工作,比如采集 连接数、请求数、CPU负载指标、IO负载指标等等,通过对这些指标进行计算和对比,判断出哪一台后端服务器的负载压力较大。

  因此这种方式带来了效果优势的同时,也增加了「负载均衡器」的实现难度和维护成本。

  1. 响应策略

  响应策略是指,当用户请求过来的时候,「负载均衡器」会优先将请求转发给当前时刻响应最快的后端服务器。

  也就是说,不管后端服务器负载高不高,也不管配置如何,只要觉得这个服务器在当前时刻能最快的响应用户的请求,那么就优先把请求转发给它,这样的话,对于用户而言,体验也最好。

  那「负载均衡器」是怎么知道哪一台后端服务在当前时刻响应能力最佳呢?

  这就需要「负载均衡器」不停的去统计每一台后端服务器对请求的处理速度了,比如一分钟统计一次,生成一个后端服务器处理速度的排行榜。然后「负载均衡器」根据这个排行榜去转发服务。

  那么这里的问题就是统计的成本了,不停的做这些统计运算本身也会消耗一些性能,同时也会增加「负载均衡器」的实现难度和维护成本。

  1. 哈希策略

  Hash策略也比较好理解,就是将请求中的某个信息进行hash计算,然后根据后端服务器台数取模,得到一个值,算出相同值的请求就被转发到同一台后端服务器中。

  常见的用法是对用户的IP或者ID进行这个策略,然后「负载均衡器」就能保证同一个IP来源或者同一个用户永远会被送到同一个后端服务器上了,一般用于处理缓存、会话等功能的时候特别好用。

原文引用:不懂高性能的负载均衡设计?

原文地址:https://www.cnblogs.com/dong-blog/p/9752003.html

时间: 2024-09-30 15:03:28

如何架设高性能负载均衡的相关文章

Nginx+Tomcat搭建高性能负载均衡集群(转)

一.       工具 nginx-1.8.0 apache-tomcat-6.0.33 二.    目标 实现高性能负载均衡的Tomcat集群: 三.    步骤 1.首先下载Nginx,要下载稳定版: 2.然后解压两个Tomcat,分别命名为apache-tomcat-6.0.33-1和apache-tomcat-6.0.33-2: 3.然后修改这两个Tomcat的启动端口,分别为18080和28080,下面以修改第一台Tomcat为例,打开Tomcat的conf目录下的server.xml

【转载】Nginx+Tomcat搭建高性能负载均衡集群

最近对负载均衡比较感兴趣,研究了公司的负载均衡的配置,用的是阿里的SLB,相当于不用运维,只需要在后台进行简单的配置就能完成Tomcat的负载均衡,索性在网上找了几篇文章去尝试搭建一个集群,然而很多都是过时了或者不全,最后找到一个测试过能成功的文章. 一.       工具 nginx-1.8.0 apache-tomcat-6.0.33 二.    目标 实现高性能负载均衡的Tomcat集群: 三.    步骤 1.首先下载Nginx,要下载稳定版: 2.然后解压两个Tomcat,分别命名为a

Nginx+Tomcat搭建高性能负载均衡集群

一.       工具 nginx-1.8.0 apache-tomcat-6.0.33 二.    目标 实现高性能负载均衡的Tomcat集群: 三.    步骤 1.首先下载Nginx,要下载稳定版: 2.然后解压两个Tomcat,分别命名为apache-tomcat-6.0.33-1和apache-tomcat-6.0.33-2: 3.然后修改这两个Tomcat的启动端口,分别为18080和28080,下面以修改第一台Tomcat为例,打开Tomcat的conf目录下的server.xml

高性能负载均衡之分类架构

原文:高性能负载均衡之分类架构 今天跟大家分享一下关于高性能负载均衡的分类架构相关的知识. 当然了,首先要强调一点,并不是所有的项目一开始就要求高性能的.前面我也提到过.如果不是太清楚的可以参考这篇文章:架构设计之六个复杂度来源 下面进入正题,说说高性能负载均衡之分类架构. 单服务器无论如何优化,无论采用多好的硬件,总会有一个性能天花板,单服务器的性能无法满足业务需求时,就需要设计高性能集群来提升系统整体的处理性能. 高性能集群的本质很简单,通过增加更多的服务器来提升系统整体的计算能力.由于计算

lvs+keepalived+nginx实现高性能负载均衡集群(转)

lvs+keepalived+nginx实现高性能负载均衡集群 一.为什么要使用负载均衡技术? 1.系统高可用性 2.  系统可扩展性 3.  负载均衡能力 LVS+keepalived能很好的实现以上的要求,LVS提供负载均衡,keepalived提供健康检查,故障转移,提高系统的可用性!采用这样的架构以后很容易对现有系统进行扩展,只要在后端添加或者减少realserver,只要更改lvs的配置文件,并能实现无缝配置变更! 二.LVS+Keepalived介绍 1.  LVS LVS是一个开源

Tomcat +redis +nginx 搭建高性能负载均衡 集群

测试工具 nginx-1.8.1 tomcat7 redis 目标: 实现高性能负载均衡的tomcat 集群 实现步骤: 1. 首先下载Nginx,要下载稳定版: 2.然后解压两个Tomcat,分别命名为tomcat7-1和tomcat7-2: 3.然后修改这两个Tomcat的启动端口,分别为180和280,下面以修改第一台Tomcat为例,打开Tomcat的conf目录下的server.xml: tomcat 中引入了redis 第二个tomcat 类似 修改端口及可 4.然后启动两个Tomc

高性能负载均衡软件 HAProxy

HAProxy 是一个开源的.高性能的.基于TCP(四层)和 HTTP(七层)应用的负载均衡软件 HAProxy 运行在当前的硬件上,完全可以支持数以万计的并发连接.它的显著优点如下: 1.可靠性和稳定性好 2.支持多达9种负载均衡算法 3.支持虚拟主机和 ACL规则 4.能生成服务器状态监控页面 HAProxy 原理 环境: 1.HaProxy eth0: 192.168.18.10 eth1: 192.168.1.10 2.WebSrv1 eth1: 192.168.1.11 3.WebSr

高性能负载均衡缓存web架构

高性能web架构,动静分离,静态缓存. 使用LVS实现4层负载均衡,使用KeepAlived实现LVS的HA和其他服务的HA,使用Nginx实现7层负载均衡,使用Squid实现caching proxy. nginx和squid作为服务,可以在前接嵌入lvs和keepalived.这是一个可嵌套的结构,只要你服务器足够,业务也有这个必要. 高性能web架构,高性能缓存,squid不仅缓存静态资源还可以缓存动态请求,nginx实现负载均衡或者web服务: 具体还需要根据业务规模特性的需要调整结构,

Nginx+Tomcat高性能负载均衡集群搭建

转载请注明出处:http://www.cnblogs.com/Joanna-Yan/p/8745794.html Nginx是一个高性能的HTTP服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器.其占有内存少,并发能力强,在同类型的网页服务器中表现较好.Nginx可以在大多数Unix Linux OS上编译运行,并有Windows移植版.一般情况下,对于新建站点,建议使用最新稳定版作为生产版本. 单个Tomcat最大支持在线访问是500左右,要通知支持更多的访问量一个Tomcat