负载均衡基础概念
相关名词
- VIP
- RS:真实服务器,即真正提供服务的机器
- 硬件负载均衡产品:F5等,这个是比较贵的,听说农行用了F5
- 软件负载均衡:LVS、DPVS(基于LVS)、Haproxy、Nginx,通常都使用软件负载均衡方案
OSI网络层负载均衡
二层(mac)
虚拟mac地址,对外使用虚拟mac地址,接收后再分配给后端实际的mac地址
三层(ip)
虚拟ip
四层(tcp)
在三层负载均衡基础上,使用IP+port方式做虚拟映射,对流量做NAT处理,转发到后台服务器,并记录流量是由哪台服务器处理的,后续这个连接的所有流量会被转发到同一台服务器
注意,Nginx和Haproxy也可以实现四层的负载均衡,后面详细介绍
五元组
通过五元组来决定流量的转发目的地
- 来源IP、端口
- 目标IP、端口
- 协议
VIP的实现
- 通过keepalive实现
- 通过BGP协议实现,这种方式可以让流量轮询实现均分
七层(http)
虚拟url或者ip,在四层负载均衡基础上,根据应用层的特征来转发流量,比如URL、浏览器类别、语言等。
以TCP为例,负载均衡设备要根据应用层的内容来进行转发,那么势必需要对客户请求的内容进行解析,所以客户端是先和负载均衡器建立连接,负载均衡器再根据客户报文内容进行流量转发(和RS建立连接),而四层的负载均衡只需要解析段内容,不会和客户端建立连接,所以四层的负载均衡效率会高于七层负载均衡
四层与七层的区别
区别这事儿众说纷纭,这里只是个人是一些理解
综合来说四层负载均衡类似于路由器,规则比较简单,所以效率较高;而七层的负载均衡是一个代理服务器,因为和客户端创建了连接,所以能拿到更多是信息,对应的实现更复杂的功能,同样的性能相对低一些
技术选型肯定都是结合业务场景去选择最合适的架构,没有银弹