在当前大数据时代,数据尤为重要,但是在拥有大量数据的同时也给服务器带来了巨大的挑战,数据量大而服务器承载不了最终就会导致服务器宕机,以至于导致整个系统崩溃。那么怎么解决这一难题呢,这时候就出现了负载均衡这一理念。

      负载均衡:负载均衡(Load Balance)其意思就是分摊到多个操作单元上进行执行,例如Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务。负载均衡建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。

     其核心就是均匀的分配,使得服务器能够各尽其责,发挥出其最大的作用。

     我们先来看一下分布式服务器架构:

双服务器负载均衡 服务端负载均衡_双服务器负载均衡

通过架构图可以看出来,在服务器上一层是lvs和nginx。网络模型中,nginx属于第7层,根据域名或目录配置负载均衡(代理),十分灵活;而lvs能针对IP环境实现负载均衡。

Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。由俄罗斯的程序设计师Igor Sysoev所开发,其特点是占有内存少,并发能力强,nginx的并发能力确实在同类型的网页服务器中表现非常好。很多大公司都在用。

官方测试nginx能够支撑5万并发链接,并且CPU、内存等资源消耗却非常低,运行非常稳定。

当收到大量请求的时候nginx会协调服务器处理请求,合理的分配服务器资源,使得系统更加稳定高效。

nginx支持以下负载均衡机制(或方法):

1.轮询负载均衡 - 对应用程序服务器的请求以循环方式分发

假如来了十条请求,十台服务器被一个nginx控制,那么nginx会使十台服务器每台处理一条请求。

2.加权负载均衡 1--10

有的服务器性能好,有的性能差,那么用加权的方式就可以使服务器资源合理利用。有两台服务器a、b,a的性能好,那么就可以给a加权,让a多处理几条请求,b少处理几条。

3.最少连接数 - 将下一个请求分配给活动连接数最少的服务器

在连接负载最少的情况下,nginx会尽量避免将过多的请求分发给繁忙的应用程序服务器,而是将新请求分发给不太繁忙的服务器,避免服务器过载。

4.会话持久性

如果需要将客户端绑定到特定的应用程序服务器 - 换句话说,就是始终选择相同的服务器而言,就要使客户端的会话“粘滞”或“持久” 。ip-hash负载平衡机制就是有这种特性,此方法可确保来自同一客户端的请求将始终定向到同一台服务器,除非此服务器不可用。