一.简介
1.特点
1)NAT技术将请求的报文和响应的报文都需要通过LB进行地址改写,因此网站访问量比较大的时候LB负载均衡调度器有比较大的瓶颈,一般要求最多之能10-20台节点
2)只需要在LB上配置一个公网IP地址就可以了。
3)每台内部的节点服务器的网关地址必须是调度器LB的内网地址。
4)NAT模式支持对IP地址和端口进行转换。即用户请求的端口和真实服务器的端口可以不一致。
2.数据传输过程
1)客户端请求数据,目标IP为VIP
2)请求数据到达LB服务器,LB根据调度算法将目的地址修改为RIP地址及对应端口(此RIP地址是根据调度算法得出的。)并在连接HASH表中记录下这个连接。
3)数据包从LB服务器到达RS服务器webserver,然后webserver进行响应。Webserver的网关必须是LB,然后将数据返回给LB服务器。
4)收到RS的返回后的数据,根据连接HASH表修改源地址VIP&目标地址CIP,及对应端口80.然后数据就从LB出发到达客户端。
5)客户端收到的就只能看到VIP\DIP信息。
二.配置步骤
实验环境
主机名 | ip | 组成部分 |
server1 | 172.25.14.1 | 负载调度器LB |
server2 | 172.25.14.2 | RealServer |
server3 | 172.25.14.3 | RealServer |
- rhel6.5
- iptables and selinux disabled
- VIP:172.25.14.100
- 网络yum源http://172.25.14.250/rhel6.5
- server2,server3已安装httpd
server1:
1.配置yum源
[root@server1 ~]# vim /etc/yum.repos.d/rhel-source.repo
[rhel-source]
name=Red Hat Enterprise Linux $releasever - $basearch - Source
baseurl=http://172.25.14.250/rhel6.5
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
[LoadBalancer] ##添加负载均衡相关数据包,添加完成后才能下载ipvsadm
name=LoadBalancer
baseurl=http://172.25.14.250/rhel6.5/LoadBalancer
enabled=1
gpgcheck=0
[root@server1 ~]# yum clean all
2.安装ipvsadm
[root@server1 ~]# yum install ipvsadm -y
3.调度器server1添加一块网卡eth1,并且设置一个外网ip
[root@server1 ~]# ip addr add 172.25.254.100/24 dev eth1
[root@server1 ~]# ip link set up eth1 #激活网卡eth1
4.打开内核的路由功能
- 因为在调度器收到客户端的请求后,请求是一个外网的ip地址,需要将外网ip转换为内网ip地址,才能将数据包发送到后端服务器server2,server3(内网),所以需要打开内核的路由功能。
[root@server1 ~]# sysctl -a | grep ip_forward
net.ipv4.ip_forward = 0
[root@server1 ~]# vim /etc/sysctl.conf
[root@server1 ~]# sysctl -a | grep ip_forward
net.ipv4.ip_forward = 1
5.添加调度策略
[root@server1 ~]# ipvsadm -A -t 172.25.254.100:80 -s rr ##-A表示添加调度策略,rr表示轮询模式
[root@server1 ~]# ipvsadm -a -t 172.25.254.100:80 -r 172.25.14.2:80 -m ##-a表示添加后端服务器,-m表示nat模式
[root@server1 ~]# ipvsadm -a -t 172.25.254.100:80 -r 172.25.14.3:80 -m
[root@server1 ~]# ipvsadm -l ##查看调度策略
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP foundation100.ilt.example.co rr
-> server2:http Masq 1 0 0
-> server3:http Masq 1 0 0
server2,server3:
1.添加网关(因为NAT模式下数据包是需要原路返回的,要经过调度器返回客户端)
[root@server2 ~]# route add default gw 172.25.14.1
[root@server3 ~]# route add default gw 172.25.14.1
2.开启httpd服务
[root@server2 ~]# /etc/init.d/httpd start
[root@server3 ~]# /etc/init.d/httpd start
测试:
访问调度器的外网ip,server2与server3被轮询调度(进行测试的主机,需要和实验中添加的外网ip在同一网段)
查看调度记录