负载均衡 LVS 之 NAT 模式搭建

lvs/NAT模式:

1.NAT模式概述

NAT(Network address translation)即网络地址转换,作为一种过渡解决手段,可以用来减少对全球合法IP地址的需求。
简单的说,NAT就是在内部专用网络中使用内部地址,而当内部节点要与外界网络发生联系时,就在边缘路由器或者防火墙处,
将内部地址转换成全局地址,从而使得在外部公共网(Internet)上使用一个和数个合法IP地址正常传输数据。
其中,这里的外网和内网是相对来讲的,下面假设能够访问互联网的网络为外网。

2.NAT模式原理

图解:
在这里插入图片描述
原理简述:

当数据包到达VS时,VS做目标地址转换(DNAT),将目标IP改为RS的IP。RS接收到数据包以后,仿佛是客户端直接发给它的一样。
RS处理完,返回响应时,源IP是RIP,目标IP是客户端的IP。这时RS的包通过网关(VS)中转,VS会做源地址转换(SNAT),
将包的源地址改为VIP,这样,这个包对客户端看起来就仿佛是VS直接返回给它的

2. NAT模型的特性

1.RS应该使用私有地址,RS的网关必须指向DIP
2.DIP和RIP必须在同一个网段内
3.请求和响应报文都需要经过DS,高负载场景中,DS易成为性能瓶颈
4.支持端口映射
5.RS可以使用任意操作系统
6.缺陷:对Director Server压力会比较大,请求和响应都需经过director server

3.NAT模式的优缺点

优点:

集群中的物理服务器可以使用任何支持TCP/IP操作系统,物理服务器可以分配Internet的保留私有地址,只有负载均衡器需要一个合法的IP地址。

缺点:

扩展性有限;当服务器节点(普通PC服务器)数据增长到20个或更多时,负载均衡器将成为整个系统的瓶颈,因为所有的请求包和应答包都需要经过负载均衡器再生。

总结:

LVS无论NAT及DR模式,均要求VS和RS在同一个网段内,NAT需要把VS当作各个RS的默认网关,
DR模式采用修改mac地址直接从数据链路层转发、要求必须在同一个物理网段内
1.配置虚拟服务器(vs)

实验环境:

vs调度器:
eth1:  172.25.66.1 (内网) 
eth2:  192.0.0.1   (外网)

1.添加vip

[root@server1 ~]# ip addr 
[root@server1 ~]# ip addr add 172.25.66.100/24 dev eth1
[root@server1 ~]# ip addr show eth1

2.添加内网

先在图形界面添加网卡eth2

[root@server1 ~]# ip addr
[root@server1 ~]# ip addr add 192.0.01 dev eth2
[root@server1 ~]# ip addr 

2.安装ipvsadm

#安装调度策略工具,报错
[root@server1 ~]# yum install -y ipvsadm
#1.配置负载均衡yum源
[root@server1 ~]# vim /etc/yum.repos.d/rhel-source.repo 
#################
[LoadBalancer]                #负载均衡
name=LoadBalancer
baseurl=http://172.25.66.254/rhel6.5/LoadBalancer
enabled=1
#清理缓存
[root@server1 ~]# yum clean all
#列出yum源详细信息
[root@server1 ~]# yum repolist
#2.安装ipvsadm(调度策略工具)
[root@server1 ~]# yum install -y ipvsadm

3.添加调度策略

#查看策略
[root@server1 ~]# ipvsadm -l
#添加策略;-A:添加虚拟服务器,-t :指定vip及tcp端口,-s:指定算法 (rr:轮询)
[root@server1 ~]# ipvsadm -A -t 172.25.66.100:80 -s rr
#添加策略;-a :添加节点 ,-t :指定vip和端口,-r :指定节点ip及端口,-m:表示使用nat模式,-w:设置权重
[root@server1 ~]# ipvsadm -a -t 172.25.66.100:80 -r 172.25.66.2 -m -w 1
[root@server1 ~]# ipvsadm -a -t 172.25.66.100:80 -r 172.25.66.3 -m -w 1
#查看策略
[root@server1 ~]# ipvsadm -l

4.开启路由机制

[root@server1 ~]# echo "1" > "/proc/sys/net/ipv4/ip_forward"   #打开路由功能[root@server1 ~]# cat /proc/sys/net/ipv4/ip_forward 
1
[root@server1 ~]# vim /etc/sysctl.conf 
#刷新
[root@server1 ~]# sysctl -p

5.加载NAT模块开启服务

#加载NAT模块开启服务
[root@server1 ~]# modprobe iptable_nat

6.开启ipvsadm服务

[root@server1 ~]# /etc/init.d/ipvsadm start
ipvsadm: Clearing the current IPVS table:                  [  OK  ]
ipvsadm: Applying IPVS configuration:                      [  OK  ]

2.配置后端服务器(rs)

实验环境:

rs后端服务器1:
RIP:172.25.66.2
网关:172.25.66.1
rs后端服务器2:
RIP:172.25.66.3
网关:172.25.66.1

注意:网关是vs调度器的内网,网关必须与本机ip处在同一网段才能生效

1.配置apahce

在server2上:

#1.查看是否安装了apache,若没有,则自行安装
[root@server2 ~]# rpm -aq httpd
httpd-2.2.15-29.el6_4.x86_64
#2.编写默认发布文件
[root@server2 ~]# cd /var/www/html/
[root@server2 html]# cat index.html 
server2
#3.开启apache
[root@server2 ~]# /etc/init.d/httpd start
Starting httpd: httpd: Could not reliably determine the server's fully qualified domain name, using 172.25.66.2 for ServerName
                                                           [  OK  ]

在server3上:

#1.查看是否安装了apache,若没有,则自行安装
[root@server3 ~]# rpm -aq httpd
httpd-2.2.15-29.el6_4.x86_64
#2.编写默认发布文件
[root@server3 ~]# cd /var/www/html/
[root@server3 html]# cat index.html 
server3
#3.开启apache
[root@server3 ~]# /etc/init.d/httpd start
Starting httpd: httpd: Could not reliably determine the server's fully qualified domain name, using 172.25.66.2 for ServerName
                                                           [  OK  ]

2.添加网关

在server2上:

#1.添加网关(vs的内网)
[root@server2 ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth1 
#2.重启网络
[root@server2 ~]# /etc/init.d/network restart
Shutting down interface eth1:                              [  OK  ]
Shutting down loopback interface:                          [  OK  ]
Bringing up loopback interface:                            [  OK  ]
Bringing up interface eth1:  Determining if ip address 172.25.66.2 is already in use for device eth1...
                                                           [  OK  ]
[root@server2 ~]# route -n

在server3上:

#1.添加网关(vs的内网)
[root@server3 ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth1 
#2.重启网络
[root@server3 ~]# /etc/init.d/network restart
Shutting down interface eth1:                              [  OK  ]
Shutting down loopback interface:                          [  OK  ]
Bringing up loopback interface:                            [  OK  ]
Bringing up interface eth1:  Determining if ip address 172.25.66.3 is already in use for device eth1...
                                                           [  OK  ]
[root@server3 ~]# route -n

猜你喜欢

转载自blog.csdn.net/lilygg/article/details/87808916