ELB负载均衡
【摘要】 负载均衡是什么?负载均衡 是指将用户请求分配到不同的服务器处理。负载均衡服务可以由专门的软件或者硬件完成。两者的区别主要是 软件成本低,硬件性能好,但成本高。常见的软件负载均衡:nginx、LVS、HAproxy。常见的硬件负载均衡:F5、A10、Array。硬件的性能更好,更稳定,但是成本相对高很多。软件相对硬件性能低,但是成本低,除非是并发特别高,性能要求高,综合考量软件负载均衡更好。负...
负载均衡是什么?
负载均衡 是指将用户请求分配到不同的服务器处理。负载均衡服务可以由专门的软件或者硬件完成。两者的区别主要是 软件成本低,硬件性能好,但成本高。
- 常见的软件负载均衡:nginx、LVS、HAproxy。
- 常见的硬件负载均衡:F5、A10、Array。
硬件的性能更好,更稳定,但是成本相对高很多。软件相对硬件性能低,但是成本低,除非是并发特别高,性能要求高,综合考量软件负载均衡更好。
负载均衡分类
负载均衡分为 服务端负载均衡和客户端负载均衡。一般服务端负载均衡使用较多
服务端负载均衡
服务端负载均衡 主要应用在 外部请求 和 服务器 之间。可以使用 软件或 硬件 实现。
根据OSI模型,服务端负载均衡还可分为:
- 二层负载均衡
- 三层负载均衡
- 四层负载均衡:传输层,主要协议TCP/UDP。核心基于 IP + 端口的负载均衡。
- 七层负载均衡:应用层,主要协议HTTP。核心基于HTTP请求报文信息(URL、Cookie)的负载均衡。执行七层负载均衡的服务器一般也称为反向代理服务器。常见:DNS、Nginx。
四层负载均衡性能很强,七层负载均衡功能更强。 不过性能差异基本可以忽略。
工作中一般使用Nginx做七层负载均衡,LVS(linux Vrirtual Server)来做四层负载均衡。
OSI模型图如下:
客户端负载均衡
这里的客户端不是指用户发送请求的客户端,客户端负载均衡主要应用于系统内部的不同的服务之间,在客户端负载均衡中,客户端会自己维护一份服务器的地址列表,发送请求之前,客户端根据负载均衡算法来选择具体某一台服务器来处理。
客户端负载均衡器和服务运行在同一个进程或者说 Java 程序里,不存在额外的网络开销。不过,客户端负载均衡的实现会受到编程语言的限制,比如说 Spring Cloud Load Balancer 就只能用于 Java 语言。
Java 比较常用Spring Cloud Load Balancer(官方推荐)和Ribbon (Netflix)。
负载均衡的常见算法
- 随机:随机算法,可加权重。不过可能会出现部分机器一段时间内无法被随机到的问题。
- 轮询:依次分配,可加权重。
- 两次随机:随机选出两台服务器。根据两台比较,选择更合适的一台,减少一直随机一台服务器的风险
- 哈希:将请求参数哈希,根据哈希值决定分配到哪台服务器。主要应用在一些需要前后的请求落在同一台服务器的情况。
- 一致性哈希:哈希的优化,避免增加和减少导致的哈希值不同
- 最小连接:遍历服务器节点列表,选择连接数最小的服务器来响应。
- 最少活跃:遍历服务器节点列表,选择活动连接数最小的服务器响应。
- 最快响应时间:根据服务器响应时间,选择最短的响应时间的服务器响应。
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)