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