LVS-NAT模式下的负载均衡

##1.VS/NAT简介##

通过网络地址转换的方法来实现调度。
首先调度器LB接受到客户的请求数据包时,将请求决定发送给后端的真实服务器RS。
然后调度器就把客户发送的请求数据包的目标ip地址及端口改成后端真实服务器的ip地址RIP,
这样真实服务器RS就能够接收到客户的请求数据包了。真实服务器响应完请求后,查看默认路由(LB)
把响应后的数据包发送给LB,LB在接收到响应包后,把包的源地址改成虚拟地址vip,然后发送给客户端。

 

##2.VS/NAT原理##

1.客户端请求数据,目标ip时vip
2.请求数据包到达LB服务器,LB根据调度算法将数据包的目的地址修改为RIP和其对应的端口,并在连接HASH表中记录下这个连接。
3.数据包从LB服务器到达RS服务器,然后RS对数据包进行响应,RS服务器将响应数据包返回给LB服务器。
4.LB服务器收到响应数据包后,根据HASH表修改源地址为vip,目标地址是cip,和其对应的端口,然后,将响应包从LB返回给客户端。
5.客户端接收到响应包

 

##3.HASH表##

HASH表时根据关键码值进行访问的数据结构。也就是说,它通过将关键码值映射到表中一个位置来访问记录,以加快查找速度。这个映射函数叫作散列函数,存放记录的数组叫做三列表,也叫HSAH表。

 

##4.NAT模式优缺点##

1.NAT技术只需要在LB上配置一个公网ip就行。
2.每台RS的网关地址必须是LB调度器的内网地址。
3.NAT模式支持对ip地址和端口进行转换。用户请求的端口和真实服务器的端口可以不一致。
4.NAT技术对请求的数据包和响应的数据包报文都需要通过LB进行地址改写。因此,网站访问量比较大的时候,LB负载均衡调度器有比较大的瓶颈,一般要求最多只能在10-20台之间。


##5.VS/NAT模式下的负载均衡##

(1)
实验环境:

1.sever1中
server1作为调度器LB
LB双网卡:
eth0:172.25.67.1(对外)
eth1:192.168.67.1(对内)
vip:72.25.67.1
gateway:192.168.67.1

2.server2中:
RS:192.168.67.2

3.server3中:
RS:192.168.67.3

(2)
配置:

1.在server1中
1)添加网卡并配置ip:
多添加一个网卡

LVS-NAT模式下的负载均衡
ip link set up eth1    #**网卡
ip addr add 192.168.67.1/24 dev eth1  #配置eth1的ip

LVS-NAT模式下的负载均衡

LVS-NAT模式下的负载均衡

2)配置yum仓库:
vim /etc/yum.repos.d/rhel-source.repo
[LoadBalancer]
name=LoadBalancer
baseurl=http://172.25.67.250/rhel6.5/LoadBalancer
gpgcheck=0

LVS-NAT模式下的负载均衡

LVS-NAT模式下的负载均衡

3)安装ipvsadm并设定其策略
yum install ipvsadm -y

LVS-NAT模式下的负载均衡
/etc/init.d/ipvsadm start  #开启服务

LVS-NAT模式下的负载均衡
ipvsadm -A -t 172.25.67.1:80 -s rr
ipvsadm -a -t 172.25.67.1:80 -r 192.168.67.2:80 -m
ipvsadm -a -t 172.25.67.1:80 -r 192.168.67.3:80 -m
/etc/init.d/ipvsadm save  #保存策略

LVS-NAT模式下的负载均衡

LVS-NAT模式下的负载均衡

4)开启ip转发
modprobe iptable_nat   #载入模块
sysctl -w net.ipv4.ip_forward=1  #将内部路由功能打开

LVS-NAT模式下的负载均衡
vim /etc/sysctl.conf  #永久修改
net.ipv4.ip_forward = 1

LVS-NAT模式下的负载均衡

LVS-NAT模式下的负载均衡

2.在server2中:
ip:192.168.67.2

LVS-NAT模式下的负载均衡
route add default gw 192.168.67.1 #配置网关

LVS-NAT模式下的负载均衡
yum install httpd -y

LVS-NAT模式下的负载均衡
/etc/init.d/httpd start #打开httpd服务

LVS-NAT模式下的负载均衡
vim /var/www/html/index.html
<h1>server2</h1>

LVS-NAT模式下的负载均衡

LVS-NAT模式下的负载均衡
/etc/init.d/httpd restart #重启httpd服务

LVS-NAT模式下的负载均衡
curl localhost  #查看发布文件是否生效

LVS-NAT模式下的负载均衡

3.在server3中:
ip:192.168.67.3

LVS-NAT模式下的负载均衡
route add default gw 192.168.67.1 #配置网关

LVS-NAT模式下的负载均衡
yum install httpd -y

LVS-NAT模式下的负载均衡
/etc/init.d/httpd start #打开httpd服务

LVS-NAT模式下的负载均衡
vim /var/www/html/index.html
<h1>server3</h1>

LVS-NAT模式下的负载均衡

LVS-NAT模式下的负载均衡
/etc/init.d/httpd restart #重启httpd服务

LVS-NAT模式下的负载均衡
curl localhost  #查看发布文件是否生效

LVS-NAT模式下的负载均衡
(3)
测试:

在客户段进行测试:

#客户段的ip要与vip处于同一网段
for i in {1..10};do curl 172.25.67.1;done

LVS-NAT模式下的负载均衡