0 前言
分布式系统的负载均衡如何实现,DNS、VIP、NAT分别是什么含义,他们之间的关系是什么,这里做一个简单地介绍。
1 DNS
- 一个 DNS 域名下面挂载很多应用服务器的 ip 或 vip。
- 根据一定的策略让用户通过 DNS 访问到的 ip 不同。
- 应用访问的流量可以根据地域就近分配、随机轮训分配、指定权重的分配。
2 LVS
- LVS 是一种 4 层负载均衡策略,它在 TCP/IP 协议的 TCP 层进行 ip 转换。
- 每一个 LVS 有一个 ip,我们称之为 vip,系统管理员可以在这个 LVS 上面指定某个端口,这个端口下面可以挂在很多应用服务器物理机的 ip:port。
- 当用户使用一个 LVS 访问应用时,LVS 会根据管理员配置的策略把网络包导向到真是的物理机。
- 应用流量可以进行随机分配或指定权重的分配。
3 NAT/PAT
- 多路端口复用和 IP 映射技术,解决私网 IP 资源不够用的问题。
- NAT 的 IP 映射的原理和 LVS 一样,在 TCP/IP 协议的 TCP 层进行 ip 地址的修改,实现 IP 映射。
- PAT 的多路端口复用则是通过在 TCP 层添加端口的复用,多个用户公用一个公网 ip。
src_ip1:10 -> net_ip:100
src_ip2:10 -> net_ip:101
src_ip3:10 -> net_ip:102
src_ip1/src_ip2/src_ip3 都是私网 ip,他们相同的端口发出的请求经过 PAT 后会被转换为一个新的各不相同的 port,从而实现多个用户共用一个公网 ip。
4 反向代理
- 七层负载均衡,工作于应用层,利用应用层特性实现反向代理。
- Nginx/HAProxy 是典型的例子。
- 用户流量到反向代理后,会被按照一定策略分配到反向代理下面挂载的应用服务器。