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地址直接从数据链路层转发、要求必须在同一个物理网段内
实验环境:
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 ]
实验环境:
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