LVS模式三:NAT模式
一、NAT模式
NAT(Network Address Translation,网络地址转换)。数据包传输过程就是把客户端发来的数据包的IP头的目的地址,在负载均衡器上换成其中一台RS的IP地址,并发至此RS来处理,RS处理完成后把数据交给经过负载均衡器,负载均衡器再把数据包的源IP地址改为自己的IP。期间,无论是进来的流量,还是出去的流量,都必须经过负载均衡器。它的实现方式有三种,即静态转换Static Nat、动态转换Dynamic Nat和端口多路复用OverLoad(用的较多)。实质上是ip地址的转换。
优点:集群中的物理服务器可以使用任何支持TCP/IP操作系统,只有负载均衡器需要一个合法的IP地址。
缺点:扩展性有限。当服务器节点(普通PC服务器)增长过多时,负载均衡器将成为整个系统的瓶颈,因为所有的请求包和应答包的流向都经过负载均衡器。当服务器节点过多时,大量的数据包都交汇在负载均衡器那,速度就会变慢
二、NAT工作原理图
整个请求过程示意:
client发送request到LVS的VIP上,VIP根据负载算法选择一个Real-server,并记录连接信息到hash表中,然后修改 client的request的目的IP地址为Real-server的地址,将请求发给Real-server; Real-server收到request包后,发现目的IP是自己的IP,于是处理请求,然后发送reply给LVS; LVS收到reply包后,修改reply包的的源地址为VIP,发送给client; 从client来的属于本次连接的包,查hash表,然后发给对应的Real-server; 当client发送完毕,此次连接结束或者连接超时,那么LVS自动从hash表中删除此条记录。三、NAT负载均衡的配置
1)在server1中添加一块物理网卡eht1.
---> ip link set up eth1 # 激活网卡设备
---> ip addr add 172.25.2.3/24 dev eth1 # 添加ip
---> ip addr
2)修改内部路由设置
打开ip转换功能:当servre1收到请求后,得到一个公网的ip,和目的主机server2和server3不在一个网段。所以要想数据发送给服务器,就必须对这个数据包进行ip转换,然后再进行数据的转发。处于安全考虑,linux系统默认是禁止数据包的ip地址转换的,所以,要配置linux系统的设置,打开系统的转发功能。
---> vim /etc/sysctl.conf # 只修改一行,把以下参数的默认值改为1即可
net.ipv4.ip_forward = 1
---> sysctl -p # 保存修改
3)添加ipvsadm策略
---> ipvsadm -A -t 172.25.254.3:80 -s rr---> ipvsadm -a -t 172.25.254.3:80 -r 172.25.2.2:80 -m
---> ipvsadm -a -t 172.25.254.3:80 -r 172.25.2.3:80 -m
4)在server2和server3中打开httpd服务(添加默认发布文件),并添加网关。
---> route add default gw 172.25.2.1 # 临时设置,开机取消
5)在物理机中进行测试:轮询
# 在server1中的显示结果
LVS-fullnat模式:
1.客户端将访问vip报文发送给LVS服务器;
2.LVS服务器将请求报文的目的地址修改为后端真实服务器(DNAT),源地址改为自己的ip地址(SNAT),发送给后端真实服务器;
3.后端服务器在处理完之后要将响应的报文返回给lvs;
4.LVS将返回的数据包源地址改为自己(SNAT),目的地址改为客户端(DNAT),发送给客户端。
fullnat模式和nat模式相似,但是与nat不同的是nat模式只做了两次地址转换,fullnat模式却做了四次。