Load Balance

负载均衡分为软件负载均衡和硬件负载均衡,软负载均衡的代表是阿里章文嵩博士研发的LVS,硬负载均衡有F5,价格高昂,互联网自然要追求低成本,所以软负载均衡收到青睐,大致有:

轮询法(round robin)

轮询调度算法的原理是每一次把来自用户的请求轮流分配给内部中的服务器,从1开始,直到N(内部服务器个数),然后重新开始循环。算法的优点是其简洁性,它无需记录当前所有连接的状态,所以它是一种无状态调度。
优缺点:

  • 优点在于:试图做到请求转移的绝对均衡。
  • 缺点在于:为了做到请求转移的绝对均衡,必须付出相当大的代价,因为为了保证pos变量修改的互斥性,需要引入重量级的悲观锁synchronized,这将会导致该段轮询代码的并发吞吐量发生明显的下降。
随机法(random)

通过系统随机函数,根据后端服务器列表的大小值来随机选择其中一台进行访问。由概率统计理论可以得知,随着调用量的增大,其实际效果越来越接近于平均分配流量到每一台后端服务器,也就是轮询的效果。
基于概率统计的理论,吞吐量越大,随机算法的效果越接近于轮询算法的效果。

源地址哈希法(Hash)

源地址哈希的思想是获取客户端访问的IP地址值,通过哈希函数计算得到一个数值,用该数值对服务器列表的大小进行取模运算,得到的结果便是要访问的服务器的序号。
优缺点

  • 优点在于:保证了相同客户端IP地址将会被哈希到同一台后端服务器,直到后端服务器列表变更。根据此特性可以在服务消费者与服务提供者之间建立有状态的session会话。
  • 缺点在于:除非集群中服务器的非常稳定,基本不会上下线,否则一旦有服务器上线、下线,那么通过源地址哈希算法路由到的服务器是服务器上线、下线前路由到的服务器的概率非常低,如果是session则取不到session,如果是缓存则可能引发”雪崩”。
加权轮询法(Weight Round Robin)

不同的服务器可能机器配置和当前系统的负载并不相同,因此它们的抗压能力也不尽相同,给配置高、负载低的机器配置更高的权重,让其处理更多的请求,而低配置、高负载的机器,则给其分配较低的权重,降低其系统负载。加权轮询法可以很好地处理这一问题,并将请求顺序按照权重分配到后端。

加权随机法(Weight Random)
最小连接数法(Least Connections)

最小连接数算法比较灵活和智能,由于后端服务器的配置不尽相同,对于请求的处理有快有慢,它正是根据后端服务器当前的连接情况,动态地选取其中当前积压连接数最少的一台服务器来处理当前请求,尽可能地提高后端服务器的利用效率,将负载合理地分流到每一台机器。由于最小连接数涉及服务器连接数的汇总和感知,设计与实现较为繁琐。

Nginx负载均衡策略

参考资料:
https://www.cnblogs.com/xrq730/p/5154340.html
http://blog.youkuaiyun.com/zhangskd/article/details/50242241

负载均衡(Load Balancing)是一种通过分发网络流量到多个服务器来提高系统可用性、可靠性和性能的技术。在配置负载均衡时,需要考虑多个方面,包括硬件/软件选择、算法配置、健康检查、会话保持以及高可用性设计等。 ### 配置负载均衡的关键要素 1. **负载均衡器类型** 负载均衡可以部署在不同的层级上: - **四层负载均衡(传输层)**:基于 IP 和端口进行流量分发,通常使用 LVS(Linux Virtual Server)或硬件设备。 - **七层负载均衡(应用层)**:基于 HTTP、HTTPS 等协议进行更细粒度的控制,常用工具包括 Nginx、HAProxy 和云服务如 AWS ELB[^5]。 2. **调度算法选择** 不同的业务场景适用不同的调度策略: - **轮询(Round Robin)**:适用于后端服务器性能相近的情况。 - **最少连接数(Least Connections)**:将请求发送给当前连接数最少的服务器。 - **加权轮询(Weighted Round Robin)**:为性能更强的服务器分配更高的权重。 - **IP哈希(Source IP Hash)**:用于实现基本的会话保持功能。 3. **健康检查机制** 健康检查是确保高可用性的关键环节,应配置合理的超时时间和探测频率。例如,在 Nginx 中可以通过以下方式配置: ```nginx upstream backend { server 192.168.0.10:8080 weight=3; server 192.168.0.11:8080; server 192.168.0.12:8080 max_fails=3 fail_timeout=30s; keepalive 32; } ``` 4. **SSL 终止与会话保持** 在 HTTPS 场景中,建议在负载均衡器上进行 SSL 终止以减轻后端压力。若需保持用户会话状态,可结合 cookie 插入或 IP 哈希方式实现粘性会话[^1]。 5. **索引优化与数据库集成** 当负载均衡系统涉及数据库访问时,应特别注意数据库性能调优。对于高分离字段(highly separated fields),建议独立建立索引以提升查询效率,但同时要避免因过多索引而影响写操作性能[^4]。 6. **容错与高可用性设计** 应确保负载均衡器本身具备高可用架构,例如主备模式或多活集群。此外,还需结合故障转移机制(Failover)和冗余链路设计来保障整体系统的稳定性[^5]。 7. **云环境中的最佳实践** 在云平台上部署负载均衡时,应充分利用平台提供的自动伸缩、弹性 IP、跨区域分发等功能。例如,AWS 提供了 Application Load Balancer (ALB) 支持高级路由规则,Google Cloud 的 Global Load Balancer 可实现跨地域流量调度[^5]。 --- ### 示例配置:Nginx 作为七层负载均衡器 ```nginx http { upstream myapp { least_conn; server 10.0.0.10:8080 weight=5; server 10.0.0.11:8080; server 10.0.0.12:8080 backup; } server { listen 80; location / { proxy_pass http://myapp; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } # 健康检查 location /health_check { access_log off; return 200 'OK'; add_header Content-Type text/plain; } } } ``` --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值