负载均衡集群,没有想象中那么高大上,只是把负载均衡技术用到了集群上。那么什么是集群,什么是负载均衡呢?


集群,就是将多台服务器通过集群技术捆版在一起,当用户进行数据交互时,集群就像一个独立的服务器。这样做可以大大提高了服务器集群的整体的性能和处理用户请求的效率。同时,可以避免单点故障导致数据丢失。而且任何一台服务器宕机了,集群还能正常的运行,不会影响到公司的业务。并且集群系统的管理员可以随意增加和删改集群系统的节点。

集群又分为HA(High Availability)集群、LB(Load Balancing)集群和HP(Hight Performance)集群这三种,这里主要讲的是LB集群,也就是负载均衡集群。说到负载均衡技术,那么学过计算机网络技术的人应该都不会陌生。它是用来在网络连接、磁盘驱动、或是CPU工作中合理的分配负载,提高工作效率并且避免服务过载。

当前主流的负载均衡是四层和七层负载均衡。四层负载均衡是基于IP和端口做的负载均衡,七层则是基于虚拟的URL和主机IP。

四层:就像工厂中的流水线的工作模式,多人(各节点服务器)对多事务(请求)排队、有序的进行处理。

七层:就是在流水线前加了一步分类调度的过程,让擅长的人(服务器)做擅长的事

总结:从上面的对比看来四层负载与七层负载最大的区别就是效率与功能的区别。四层负载架构设计比较简单,无需解析具体的消息内容,在网络吞吐量及处理能力上会相对比较高,而七层负载均衡的优势则体现在功能多,控制灵活强大。在具体业务架构设计时,使用七层负载或者四层负载还得根据具体的情况综合考虑。


三大主流软件负载均衡器对比(LVS --- Nginx --- Haproxy)

LVS:由中国的章文嵩博士开发,他就职于阿里巴巴集团。

    1、抗负载能力强。抗负载能力强、性能高,能达到F5硬件的60%;对内存和cpu资源消耗比较低

    2、工作在网络4层(传输层),通过vrrp协议转发(仅作分发之用),具体的流量由linux内核处理,因此没有流量的产生。

    3、稳定性、可靠性好,自身有完美的热备方案;(如:LVS+Keepalived)

    4、应用范围比较广,可以对所有应用做负载均衡;因为他是通过修改网络数据包中的端口号、IP地址来实现负载均衡的,跟上层应用无直接关系。

    5、不支持正则处理,不能做动静分离。(只有应用层(即七层)的负载均衡才支持正则处理)

    6、支持负载均衡算法:rr(轮循、轮询)、wrr(带权轮循)、lc(最小连接)、wlc(权重最小连接)

    7、配置复杂,对网络依赖比较大,稳定性很高。[这里说的配置复杂是跟nginx的负载均衡来做对比]

Ngnix:

    1、工作在网络的7层之上,可以针对http应用做一些分流的策略,比如针对域名(server_name)、目录结构(用location、rewrite功能来实现);

    2、Nginx对网络的依赖比较小,理论上nginx负载均衡器能ping通后端的真实web服务器就能进行负载功能;

    3、Nginx安装和配置比较简单,测试起来比较方便;

    4、也可以承担高的负载压力且稳定,一般能支撑超过1万次(C10K)的并发;

    5、对后端服务器的健康检查,只支持通过端口来检测,不支持通过url来检测。

    6、Nginx对请求的异步处理可以帮助节点服务器减轻负载;

    7、Nginx仅能支持http、https和Email协议,这样就在适用范围较小。

    8、不支持Session的直接保持,但能通过ip_hash来解决。

    9、支持负载均衡算法:Round-robin(轮循),Weight-round-robin(带权轮循),Ip-hash(Ip哈希)

    10、Nginx还能做Web服务器即Cache功能。


HAProxy:

    1、支持两种代理模式:TCP(四层)和HTTP(七层),支持虚拟主机;

    2、能够补充Nginx的一些缺点比如Session的保持,Cookie的引导等工作

    3、支持url检测后端的服务器出问题的检测会有很好的帮助。

    4、更多的负载均衡策略比如:动态加权轮循(Dynamic Round Robin),加权源地址哈希(Weighted Source Hash),加权URL哈希和加权参数哈希(Weighted Parameter Hash)已经实现

    5、单纯从效率上来讲HAProxy更会比Nginx有更出色的负载均衡速度。

    6、HAProxy可以对Mysql进行负载均衡,对后端的DB节点进行检测和负载均衡。

    7、支持负载均衡算法:Round-robin(轮循)、Weight-round-robin(带权轮循)、source(原地址保持)、RI(请求URL)、rdp-cookie(根据cookie)

    8、不能做Web服务器和Cache。


Cookie功能:是由web浏览器提供的功能,主要用来记录用户在网页界面表单中输入的用户名、密码等信息。可以让用户在下次访问网站时不用输入用户名和密码。


三大主流软件负载均衡器适用业务场景:

    1、网站建设初期,可以选用Nginx/HAproxy作为反向代理负载均衡(或者流量不大都可以不选用负载均衡),因为其配置简单,性能也能满足一般的业务场景。如果考虑到负载均衡器是有单点问题,可以采用Nginx+Keepalived/HAproxy+Keepalived避免负载均衡器自身的单点问题。

    2、网站并发达到一定程度之后,为了提高稳定性和转发效率,可以使用LVS、毕竟LVS比Nginx/HAproxy要更稳定,转发效率也更高。不过维护LVS对维护人员的要求也会更高,投入成本也更大。

 

 注:Nginx与Haproxy比较:Nginx支持七层,用户量最大,稳定性比较可靠。Haproxy支持四层和七层,支持更多的负载均衡算法,支持session保存等。具体选型看使用场景,目前来说Haproxy由于弥补了一些Nginx的缺点用户量也不断在提升。


衡量一个负载均衡服务器主要考量三个指标:

   1) session rate(会话率)

       此项指标非常重要,它决定了一个Load Balancer (负载均衡器)能不能分发所有接受的请求。这项指标通常是由CPU性能决定。测量指标的大小跟传输的每个对象的大小有关,通常用空对象来测试,Session rates 在 100,000 sessions/s 左右,使用 Xeon E5 在 2014测试。

   2) session concurrency(会话并发)

       该指标与前一指标相关联。这一指标与服务器内存和系统可以处理的文件描述符(FD:file  description)数量有关。 通常每个session占用34KB,即大概3W个session占用1GB内存空间,实际上,socket buffer(套接字缓冲器)也会占用内存空间,2W个session socket占用1GB内存。

   3) data forwarding rate(数据转发率)

       这一指标与 session rate 相对立,它的衡量单位通常是 Megabytes/s (MB/s), 或者 Gigabits/s (Gbps)。传输较大的对象有利于该指标的提升,因为较大的对象传输可以减少session建立和关闭浪费的时间。而测量session rate 则在传输小对象时有利于指标提升。haproxy 在2014年使用 Xeon E5 测试成绩为40 Gbps。



以上是我在学习中从别人博客摘要到比较好的博文段落,如有侵权,无意冒犯。