应用场景
在为业务配置负载均衡时,需要选择合适的流量分发算法,对流量进行负载分发。选择合理的负载均衡算法,可避免服务器负载不均,部分服务器负载过高影响服务性能。
算法原理
掌握了算法的基本原理,才有助于您根据自己的业务需求选择合理的的负载均衡算法。
算法 | 轮询算法 | 最少连接算法 | 源算法 |
---|---|---|---|
原理 | 轮询算法就是以轮询的方式依次将请求调度不同的服务器。轮询算法可以解决服务器间性能不一的情况,它用相应的权值表示服务器的处理性能,按权值的高低和轮询方式分配请求到各服务器。权值高的服务器先收到连接,权值高的服务器比权值低的服务器处理更多的连接,相同权值的服务器处理相同数目的连接数。 | 在实际情况中,客户端的每一次请求服务在服务器停留的时间可能会有较大的差异,随着工作时间的延伸,如果采用简单的轮询或随机均衡算法,每一台服务器上的连接进程数目可能会产生极大的不同,这样实际上并没有达到真正的负载均衡。最小连接调度是一种动态调度算法,它通过服务器当前所活跃的连接数来评估服务器的负载情况。与轮询算法相反,调度器需要记录各个服务器已建立连接的数目,当一个请求被调度到某台服务器,其连接数加1;当连接中止或超时,其连接数减1。 | 根据请求的源IP地址,作为散列键(Hash Key)从静态分配的散列表找出对应的服务器,若该服务器是可用的且未超载,将请求发送到该服务器,如果该服务器不可用,ELB会选择下一个可用服务器做兜底转发。 |
优势 | 轮询算法的优点是其简洁性和实用性。它无需记录当前所有连接的状态,所以它是一种无状态调度。 | 此种均衡算法适合长时处理的请求服务,如FTP等应用。 | ip_hash可以实现部分会话保持的效果,能够记住源 IP,使某一客户端请求通过 hash 表一直映射在同一台后端主机上。 |
劣势 | 轮询算法相对简单,但不适用于请求服务时间变化比较大,或者每个请求所消耗的时间不一致的情况,此时轮询算法容易导致服务器间的负载不平衡。 | 对短连接的服务,服务器连接数变化过于频繁,没有明显优势。 | 在访问量差异大的场景,容易导致负载不均 |
适用场景 | 每个请求所占用的后端时间基本相同,负载情况最好。常用于短连接服务,例如HTTP 等服务。 | 每个请求所占用的后端时间相差较大的场景。常用于长连接服务。 | 适用于TCP/UDP协议类型的负载均衡,在不支持会话保持的场景可以使用 ip_hash 进行调度。 |
前提条件
- 您已在所在可用区创建VPC,并创建业务主机,完成服务配置。具体操作可参考创建虚拟私有云VPC和创建弹性云主机页面。
- 您已创建负载均衡实例。具体操作可参考弹性负载均衡快速入门。
操作步骤
- 点击ELB实例名称,进入监听器配置页面。
- 在监听器页面,点击“添加监听器”按钮,创建监听器。
- 在“协议&监听器”页面,依次填写监听器名称、负载均衡器协议/端口等参数配置。
- 点击“下一步”进入新建后端主机组页面,填写后端主机组名称,勾选上要添加的主机并设置端口-权重,添加完成点击“下一步”。
- 进入“负载均衡&健康检查”配置页面,在负载方式字段选择负载均衡算法,并完成会话保持、健康检查等其它配置。
- 点击“立即创建”即可完成配置。