真正大型系统的负载均衡往往是多级的,比如流程为:域名-->"CNAME"-->"负载调度服务"-->"就近的数据中心入口"
负载均衡的形式
负载均衡的形式都可以分为两种:四层负载和七层负载
- 四层负载的均衡优势是性能高,七层的功能强
- 做多即负载均衡通常应该底层负载在前,高层负载在后
这里的四层和七层,一般指的是OSI七层模型中,第四层传输层和第七层应用层
注意:四层负载均衡是多种均衡器工作模式的统称,四层的意思是,这些工作模式共同的特点都是维持着同一个TCP连接,而不是他们工作在第四层,事实上他们主要都是工作在第二层和第三层上
常见的四层负载均衡工作模式
数据链路层负载均衡
数据链路层负载均衡所做的工作,是修改请求中数据帧的MAC目标地址,让请求转发到服务器集群中对应的服务器,所以在在更上层看来,所有数据都是没有改变的,所以在使用这种负载均衡器的时候,需要把集群中所有真实服务器的IP地址虚拟IP配置成和负载均衡器的虚拟IP一样,由于IP地址一样,所以在返回请求的时候就不需要走负载均衡器了,三角形传输特性
二层负载均衡器直接改写目标MAC所以决定了与真实服务器必须是二层可达,即必须位于同一个子网中,无法跨VLAN,所以一般作为数据中心的第一级负载均衡设备
网络层负载均衡
通过改写源和目标IP来实现数据包的转发,常见的有两种方式
1.保持原来的数据包不变,新建一个数据包,新的数据包就是在原数据外包一层,改写IP地址
经过这种方式的转发,当真实服务器收到数据包后,就必须在接收处设计一个拆包机制,把负载均衡器添加的那层header扔掉,还原出来原来的数据包使用,这种传输方式起名为:IP隧道,也是三角形传输特性,优点可以夸VLAN,缺点是服务器必须支持IP隧道协议,同时也需要配置一样的虚拟IP,不然回包时客户端就不认了
应用层负载均衡
四层负载均衡是一条TCP通道来实现的,通过改变包的数据信息来转发,七层负载均衡是在客户端,负载均衡器和正式服务由两条独立的TCP通道来进行通信的及转发和代理的区别(代理器会维护两个TCP连接的关系?)
- 正向代理就是客户端设置的,代表客户端和服务器通信代理的服务器,是客户端可知,但是服务器是透明的
- 反向代理是在服务器一侧,代表真实服务器来与客户端通信的代理服务,对客户端是透明的
- 透明代理,对双方都是透明的,配置在网络中间设备上的代理服务,比如,架设在路由器上的透明翻墙代理