负载均衡是什么?-高负载均衡架构

Posted 东方不败就是我

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了负载均衡是什么?-高负载均衡架构相关的知识,希望对你有一定的参考价值。

负载均衡是什么

负载均衡:让用户的请求均匀的分布在每台服务器上。 

 


每台服务器上搭载web服务,将dns域名,指向这台nginx服务器的IP
使用proxy_pass配合upstream来实现简单的负载均衡
upstream默认采用的round-robin分配方案,也就是将请求一次发送给每一个服务
还可以使用least-connected方案-将请求分配给当前所有服务器中请求最少的机器。
ip hash模式-确保一个ip一直在同一台机器
 

 用户请求都要经过这台nginx服务器,如果这台nginx服务出了故障,问题就大了。
解决办法:在nginx层面也增加一台nginx服务器,不同用户查询域名IP的时候,
返回不同的nginx服务器IP,部分DNS服务商还支持health check,当发现有节点失败后,
则不会返回对应的IP给客户,所有的请求都只会进入健康的节点,有了冗余节点后,单点的风险就降低了。

 

互联网三高架构 

高性能计算:用多台服务器处理同一个任务

高可用:准备被用服务器,主服务器挂掉以后,备用服务器立马跟上做任务。

 DNS域名系统 

 如百度有很多台服务器,我们并记不住IP地址,但是可以记住baidu.com这个域名。

CDN加速器

CDN是一个加速器

CDN加速,在全国各地部署很多节点, 来缓存静态资源,图片,视频,音频等。
squid,在05-10年,被用来做CDN加速。

Varnish缓存加速器

 

 高负载均衡架构

 nginx的负载均衡可以做到10W并发。

LVS单台服务器,可以达到百万并发。

高可用keepalived

 主服务器装的是nginx,备用服务器装的也是nginx,用户一般不会访问备用服务器,只有当主服务器出现问题时,备用服务器就接管了用户的访问,毫秒级切换主备服务器。

主备模式切换。高可用用的非常广泛。

HaProxy优势

LVS工作模式

 nginx优势 

Nginx安全限流设置 

系统架构什么是负载均衡

负载均衡是高可用网络基础架构的的一个关键组成部分,有了负载均衡,我们通常可以将我们的应用服务器部署多台,然后通过负载均衡将用户的请求分发到不同的服务器用来提高网站、应用、数据库或其他服务的性能以及可靠性。

为什么要引入负载均衡

先看一个没有负载均衡机制的web架构:
技术图片
上图中的架构有什么缺陷了?首先,用户是通过网络直接和web服务器相连,想象一下,如果这个服务器挂了(这种情况随时都可能发生的),那么用户的请求就会得不到响应,将无法访问该网站,这就是著名的单点故障问题,这肯定是不行的,一般而言,商业上的网站其可靠性需要达到至少4个9,也就是99.99&以上。

其次,即使服务器是正常工作的情况,但是如果很多用户在同一时间内访问服务器,超过了服务器的处理能力,那么会出现响应速度慢甚至无法连接的情况,这也是用户无法接受的。

负载均衡的出现可以很好的解决上面两个问题,通过引入一个负载均衡器和至少两个web 服务器,可以有效的解决上面两个问题。注:通常情况下,所有的后端服务器会保证提供相同的内容,以便用户无论哪个服务器响应,都能收到一致的内容。
技术图片
如上图架构,现在,即使App 01即使挂了,负载均衡会将用户的请求转发到正常工作的App 02上,这解决了上面的第一个问题;其次,根据业务需要,负载均衡后端的App可以很方便的扩展,这样就能解决第上面的第二个问题。但是,现在单点故障问题转移到了负载均衡器,可以通过引入第二个负载均衡器来缓解,后面还会讲到。

负载均衡如何选择要转发的后端服务器

负载均衡器一般根据两个因素来决定要将请求转发到哪个服务器。
1:确保所选择的后端服务器是正常工作的,能给对用户的请求做出响应;
2:根据预先设置的负载均衡算法从健康服务器池中进行选择。
由于负载均衡器只应当选择能正常做出响应的后端服务器,因此就需要有一种机制能判断它所连的后端服务器是否正常工作。为了监视后台服务器的运行状况,运行状态检查服务会定期尝试使用转发规则定义的协议和端口去连接后端服务器。如果某个服务器没有通过健康检查,就会从健康池中剔除,保证流量不会被转发到该服务器,直到其再次通过健康检查为止。

负载均衡算法

负载均衡算法决定了后端的哪些健康服务器会被选中。下面是几个常用的算法,这里只是简单介绍,不具体研究其算法实现了,后面会专门用一篇文章来总结:
轮询:为第一个请求选择健康池中的第一个后端服务器,然后按顺序往后依次选择,直到最后一个,然后循环。

最小连接:优先选择连接数最少,也就是压力最小的后端服务器,在会话较长的情况下可以考虑采取这种方式。

散列:根据请求源的 IP 的散列(hash)来选择要转发的服务器。这种方式可以一定程度上保证特定用户能连接到相同的服务器。如果你的应用需要处理状态而要求用户能连接到和之前相同的服务器,可以考虑采取这种方式。
最后,想要解决负载均衡器的单点故障问题,可以将第二个负载均衡器连接到第一个上,从而形成一个集群。如下图所示:
技术图片
当主负载均衡器发生了故障,就需要将用户请求转到第二个负载均衡器。由于 DNS 更改通常会在较长的时间才能生效,因此需要有一种能灵活解决 IP 地址重新映射的方法,比如浮动 IP(floating IP)。这样域名可以保持和相同的 IP 相关联,而 IP 本身则能在服务器之间移动。下面就是一个使用浮动 IP 的负载均衡架构动态示意图:
技术图片

推荐阅读:

精心整理 | 2017下半年文章目录
从理论到实践,全方位认识DNS(实践篇)
存储数据包的一生(下)
理解、使用Docker(下)
各种字符串Hash函数比较

专注服务器后台技术栈知识总结分享

欢迎关注交流共同进步

技术图片

码农有道 coding

码农有道,为您提供通俗易懂的技术文章,让技术变的更简单!

以上是关于负载均衡是什么?-高负载均衡架构的主要内容,如果未能解决你的问题,请参考以下文章

nginx配置负载均衡

关于高可用负载均衡的探索

系统架构什么是负载均衡

企业运维之 Lvs 负载均衡和高可用

企业运维之 Lvs 负载均衡和高可用

干货|什么是负载均衡?负载均衡原理详解