服务器负载均衡

负载均衡

负载均衡常见方式

基于DNS的负载均衡

利用域名转化为IP由DNS服务器完成的特点,将一个域名绑定多个IP,DNS服务器按照特定的算法返回其中一个IP给用户,实现服务器集群的负载均衡。

优点:

  1. 配置简单,只需要在DNS服务器配置域名和IP的映射
  2. 扩展性强,服务器增加只需要增加域名映射的IP
  3. 就近访问,可以根据用户的地理位置,选择一个地理位置近的服务器IP

缺点:

  1. DNS有缓存机制,服务器故障时由于DNS服务缓存了故障服务器的IP,用户请求时,DNS任然返回故障的服务器IP
    1. 缩短IP缓存时间
    2. 自建DNS服务器
  2. 只能将所有请求平均分配,无法动态的了解每台服务器的负载情况

动态DNS:通过程序动态修改DNS服务器的域名解析,当监控程序发现某台服务器挂掉后,立即通知DNS将其删掉。

七层负载均衡器

基于应用层协议中的信息进行负载均衡。
代表为Nginx的反向代理负载均衡,性能大致为5万QPS
反向代理服务器是一个位于实际服务器的之前的服务器,所有请求都需要经过反向代理服务器,由反向代理服务器判断直接返回结果,或者再请求后端的服务器进行处理,得到处理结果再返回。
反向代理服务器也可以承担后盾服务器集群的负载均衡工作,根据特定策略将请求转发到一台后端服务器,处理完毕后将结果再转发给用户。

优点:

  1. 隐藏后端服务器。
  2. 故障转移,一台后端服务器出现问题,反向代理服务器可以迅速感知,并将其下线。
  3. 合理的负载均衡,反向代理服务器可以设定后台服务器的权重,根据权重进行更合理的负载均衡。

缺点:

  1. 调度者压力过大,所有请求都要过反向代理服务器,反向代理服务器成为瓶颈
  2. 扩展性不足,反向代理服务器的吞吐制约后台服务器的增加

粘滞会话:如果后台服务器是有状态的,那么一个用户的请求应该始终落到该后台服务器

  1. 使用唯一标识进行请求的分配,按策略将相同标识的请求分发到同一台后台服务器
  2. 在请求中标注要访问的后台服务器,请求时按照标注的后台服务器进行转发

四层负载均衡器

基于IP和端口的负载均衡。
代表为LVS的VIP(Virtual IP 虚拟IP技术)
一般IP和物理网卡是绑定的,VIP则不然,当外网的请求访问该VIP时,VIP不和任何具体的设备相关,而是动态的映射到不同的机器设备上,起到负载均衡的效果。

负载均衡常见算法

  • 随机
  • 加权随机
  • 轮询
  • 加权轮询
  • 键值范围法:按照键的范围进行负载
  • Hash法:根据键进行哈希,选定一个后台服务器
  • 最小连接数:将请求分发到连接数最少的服务器
  • 最快响应速度:将请求分发到返回响应时间最少的服务器
  • 观察算法:根据连接数和响应速度计算出机器负载,选负载低的一个服务分发请求
  • 预判算法:在观察算法的基础上增加预判算法,预判负载低的一个服务分发请求

一致性Hash

参考文档