四层负载与七层负载
7层负载 如 nginx (反向代理)
- 应用层 uri
- 建立连接,握手
- 后端被负载的服务器可以不一样
4层负载 如LVS
- 传输层 IP+端口号
- 不会和客户端握手,不建立连接,
- 只是数据包转发,所以速度快
- 后端服务器是镜像的
4层负载是为了解决高并发,负载流量,7层负载是为了接入流量(解决握手),分流
NAT
- 公网地址和私网地址的转换,私网中的192.168.1.8想要访问8.8.8.8:80,在经过网关的时候需要将源IP转换成路由器的公网地址6.6.6.6
即从(192.168.1.8:12121 -> 8.8.8.8:80)— >(6.6.6.6:12121 -> 8.8.8.8:80) - 端口的映射,如果两个请求都是12121端口,从服务端返回的数据包该发给谁?
需要在路由器中有一张映射表:将端口做一个映射
即从(192.168.1.8:12121 -> 8.8.8.8:80)— >(6.6.6.6:123 -> 8.8.8.8:80) - 这就是 NAT 网络地址转换协议原理,客户端发出去数据包的(源IP:源port)从(192.168.1.8:12121)变成(6.6.6.6:123)
- 对于负载均衡服务器来说,接收到的请求要分发给后面跟着的真实服务器,所以也需要做一个地址转换,即把VIP(虚拟IP,负载均衡服务器暴露出去的)转化为RIP(真实服务的IP),这个过程就是D-NAT
三种负载均衡模式图解
基于D-NAT的负载均衡
- 由于网络的非对称性,带宽成为瓶颈
- 处于网络层的负载,需要重组IP,消耗算力
- 要求真实server的GW指向负载均衡服务器
基于DR(直接路由)的负载均衡
基于链路层,MAC地址欺骗(IP和端口号不变,MAC地址封装成真实服务器地址),速度快,成本低
- 真实服务器要接受数据包,就需要自己有一个VIP(对外隐藏,对内可见)
- 数据包要从负载均衡服务器发到真实服务器,必须要配真实服务器的mac地址(在链路层封装RS的MAC)
- 约束:负载均衡服务器和真实服务器必须在同一个局域网
基于TUN的负载均衡
隧道技术