负载均衡
--建立在现有网络架构之上,提供了一种廉价、有效、透明的方法,来拓展网络设备和服务器的带宽、增加吞吐量、加强网络数据的处理能力,提高网络的灵活性和可用性。
--为现有的服务器资源横向扩容提供了更好的可能性。
--最大的好处不在于增加了服务器的性能,而是在某服务器失效后,自动切换,仍然维持业务的正常进行。
负载均衡选取的后面的服务器的策略有多种:
轮询: 这个最简单,就是一个挨一个轮换。
加权轮询: 为了应对某些服务器性能好,可以让他们的权重高一点,被选中的几率大一点。
最少连接: 哪个服务器处理的连接少,就发给谁。
加权最少连接:在最少连接的基础上,也加上权重
负载均衡原理:
1、前期只有一台服务器,但随着业务的拓展,一台服务器不足以支撑业务量的需求,因此考虑服务器扩容。
扩容方法:
1、纵向拓展:更换性能更好的设备。这样的缺点就是旧设备无法被使用,或者是用于冗余作用。没有充分利用现有的资源。
2、横向拓展:增加服务器的数量。同时使用几台服务器,再利用负载均衡技术,达到最优的资源利用率。
2、开始是用DNS负载均衡技术,但由于客户端会有DNS缓存,且不会随着而实时更新,对服务器的访问应用不佳。
3、后面的技术发展:客户端的流量首先会到达负载均衡服务器,由负载均衡服务器通过一定的调度算法将流量分发到不同的应用服务器上面,
同时负载均衡服务器也会对应用服务器做周期性的健康检查,当发现故障节点时便动态的将节点从应用服务器集群中剔除,以此来保证应用的高可用。
负载均衡的两种种类:
1、四层负载均衡
--主要通过报文中的目标地址和端口,再加上负载均衡设备设置的服务器选择方式,决定最终选择的内部服务器。
--四层负载均衡工作在OSI模型的传输层,主要工作是转发,它在接收到客户端的流量以后通过修改数据包的地址信息将流量转发到应用服务器。
例子:
--以常见的TCP为例,负载均衡设备在接收到第一个来自客户端的SYN 请求时,即通过上述方式选择一个最佳的服务器,
并对报文中目标IP地址进行修改(改为后端服务器IP),直接转发给该服务器。TCP的连接建立,即三次握手是客户端和服务器直接建立的,
负载均衡设备只是起到一个类似路由器的转发动作。在某些部署情况下,为保证服务器回包可以正确返回给负载均衡设备,
在转发报文的同时可能还会对报文原来的源地址进行修改。
2、七层负载均衡
--七层负载均衡工作在OSI模型的应用层,因为它需要解析应用层流量,所以七层负载均衡在接到客户端的流量以后,还需要一个完整的TCP/IP协议栈。
七层负载均衡会与客户端建立一条完整的连接并将应用层的请求流量解析出来,再按照调度算法选择一个应用服务器,并与应用服务器建立另外一条连接将请求发送过去,
因此七层负载均衡的主要工作就是代理。
--七层负载均衡设备对于客户端,对于服务器都需要建立一次TCP连接,而不是客户端和服务器直接进行TCP的三次握手
3、四层和七层负载均衡的对比
--七层相对四层负载均衡来说,对设备性能要求更高,同时处理流量进行合理选择更优的服务器问题上相对较低于四层。
--对于攻击而言,7层负载均衡做得更好,比如SYN Flood攻击,如果是四层负载均衡,会被传到后台的服务器,而七层则会对SYN进行截止。
--四层更多是tcp协议的应用,更多用于基于C/S开发模式的系统;而七层则是http协议,更多基于B/S模式开发的系统。
我们公司的产品,是2-7层的负载均衡。
部署模式:
透明模式(当服务器需要知道客户端的IP地址信息时采用该模式)
反向代理模式(默认部署模式)
三角传输模式(数据链路负载均衡模式)(更多应用场景是流媒体,因为请求很小,响应很大)(唯一的请求和响应路径传输不一样的模式)