首页 > 代码库 > 负载均衡之LVS/NAT模式
负载均衡之LVS/NAT模式
1、LVS、NAT简介
LVS 是Linux Virtual Server的简称,在实际环境中经常作为B/S结构的网络应用中的负载均衡器来使用,工作在7层网络模型中的网络层,也就是通常说的IP层,由于数据的处理是在Linux内核态完成的,比起在第七层工作的负载均衡设备来说,理论上性能要高一些。
NAT 是Network AddressTranslation,网络地址转换的简称,借助于NAT,私有(保留)地址的"内部"网络通过路由器发送数据包时,私有地址被转换成合法的IP地址,一个局域网只需使用少量IP地址(甚至是1个)即可实现私有地址网络内所有计算机与Internet的通信需求。
2、简单的LVS/NAT架构
下面是我简单画的LVS/NAT在应用时的部署架构:
我们先假设百度用的是这种架构模型(实际上百度是什么架构我也没有实地调研过)
然后来模拟下用户访问百度的情况。
1.用户在浏览器输入http://www.baidu.com,用户的电脑通过网络询问DNS,www.baidu.com域名的IP地址。
2.DNS服务器通过用户的地址,在服务器列表里选择一个可能是距离用户最近的LVS虚拟服务IP地址或者一个按照轮询策略的地址。
可以用pingwww.baidu.com,能看到会返回一个IP地址,这个IP地址就是我们DNS返回给我们的地址。也可以用dig命令,能够看到www.baidu.com实际对应了3个IP地址
3.用户浏览器通过DNS获得的IP地址,访问LVS服务器
4.进入LVS/NAT模式,LVS通过NAT进行转换,将数据包提供给APACHE或者nginx构建的反向代理服务器;
5.反向代理服务器最终将请求送给应用服务器;
6.应用服务器完成用户请求之后,按照从下往上的顺序反馈数据,最终完成一个请求。
3、一些特点和特性
首先,要开启服务器被允许转发数据包:
Echo 1 > /proc/sys/net/ipv4/ip_forward
然后,需要检查实际服务器是否已经将NAT服务器作为默认网关,没有就添加:
Route add default gw 10.0.0.50
10.0.0.50 为NAT服务器地址。
要用LVS NAT模式,执行这些命令行进行操作:
Ipvsadm –a –t 122.12.12.12:80 –s rr
Ipvsadm –a –t 122.12.12.12:80 –r 10.0.0.100:8000 –m
Ipvsadm –a –t 122.12.12.12:80 –r 10.0.0.101:8000 –m
第一行添加一台虚拟负载均衡调度器;-s rr采用简单轮询的RR调度方法;
后面两行用来为调度器添加实际服务器,其中-m表示采用NAT方式转发数据包。
我们在这里使用RR调度策略,是一种静态策略。在实际服务器承载能力相当的情况下,表现良好。如果服务不一样,那么需要调整实际应用服务器的weight值。
4、LVS/NAT模式的缺点
1,要对进入和流出集群的网络包进行改写包头地址的工作,在负荷比较重的时候会影响整个集群的性能,负载均衡器容易成为瓶颈;
2,对提供下载的较大站点,常用的100M带宽就不够了,要么使用更加大的带宽,或者使用硬件设备,但是这些方法花费极大;为了解决NAT模式出现瓶颈,可以使用DR(直接路由)方式来改进。
负载均衡之LVS/NAT模式