NAT概述:
NAT(Network address translation)即网络地址转换,作为一种过渡解决手段,可以用来减少对全球合
法IP地址的需求。简单的说,NAT就是在内部专用网络中使用内部地址,而当内部节点要与外界网络发生联系时,
就在边缘路由器或者防火墙处,将内部地址转换成全局地址,从而使得在外部公共网(Internet)上使用一个和数个合法IP地
址正常传输数据。NAT的工作原理是报文头(目标地址、源地址和端口等)被正确改写后,客户相信 它们连接
一个IP地址,而不同IP地址的服务器组也认为它们是与客户直接相连的。由此,可以用NAT方法将不同IP地
址的并行网络服务变成在一个IP地址 上的一个虚拟服务。
其中,这里的外网和内网是相对来讲的,下面假设能够访问互联网的网络为外网。 特点和要求:
1、LVS(Director)上面需要双网卡:DIP(内网)和VIP(外网)
2、内网的Real Server主机的IP必须和DIP在同一个网络中,并且要求其网关都需要指向DIP的地址
3、RIP都是私有IP地址,仅用于各个节点之间的通信
4、Director位于client和Real Server之间,负载处理所有的进站、出站的通信
VS/NAT的体系结构如下图所示。在一组服务器前有一个调度器,它们是通过Switch/HUB相连接的。这些服务器 提供相同的网络服务、相同的内容,即不管请求被发送到哪一台服务器,执行结果是一样的。服务的内容可以复制到每台服务器的本地硬盘上,可以通过网络文件系统(如NFS)共享,也可以通过一个分布式文件系统来提供
客户通过Virtual IP Address(虚拟服务的IP地址)访问网络服务时,请求报文到达调度
器,调度器根据连接调度算法从一组真实服务器中选出一台服务器,将报文的目标地址
Virtual IP Address改写成选定服务器的地址,报文的目标端口改写成选定服务器的相应端口,
最后将修改后的报文发送给选出的服务器。同时,调度器在连接Hash表中记录这个连接,当这个
连接的下一个报文到达时,从连接Hash表中可以得到原选定服务器的地址和端口,进行同样的改写
操作,并将报文传给原选定的服务器。当来自真实服务器的响应报文经过调度器时,调度器将报文
的源地址和源端口改为Virtual IP Address和相应的端口,再把报文发给用户。我们在连接上引
入一个状态机,不同的报文会使得连接处于不同的状态,不同的状态有不同的超时值。在TCP连接中
,根据标准的TCP有限状态机进行状态迁移
#######在server5(调度器)上:
添加双网卡
[root@server5 network-scripts]# cd /etc/sysconfig/network-scripts/
[root@server5 network-scripts]# vim ifcfg-eth0
DEVICE="eth0"
BOOTPROTO="static"
ONBOOT="yes"
IPADDR="172.25.44.5"
PREFIX=24
[root@server5 network-scripts]# vim ifcfg-eth1
DEVICE="eth1"
BOOTPROTO="static"
ONBOOT="yes"
IPADDR="192.168.0.5"
PREFIX=24
[root@server5 network-scripts]#/etc/init.d/network restart
[root@server5 ~]# vim /etc/yum.repos.d/rhel-source.repo #配置yum源
[rhel-source]
name=Red Hat Enterprise Linux $releasever - $basearch - Source
baseurl=http://172.25.44.250/rhel6.5
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
[HighAvailability]
name=HighAvailability
baseurl=http://172.25.44.250/rhel6.5/HighAvailability
gpgcheck=0
[LoadBalancer]
name=LoadBalancer
baseurl=http://172.25.44.250/rhel6.5/LoadBalancer
gpgcheck=0
[ResilientStorage]
name=ResilientStorage
baseurl=http://172.25.44.250/rhel6.5/ResilientStorage
gpgcheck=0
[root@server5 ~]# yum clean all
[root@server5 ~]# yum install ipvsadm -y
####创建LVS
[root@server5 ~]# ipvsadm -A -t 172.25.44.5:80 -s rr #创建一个集群服务,调度算法rr,-t表示TCP协议的集群
[root@server5 ~]# ipvsadm -a -t 172.25.44.5:80 -r 192.168.0.2 -m -w 1 #管添加server1的 nat方式 ,-m表示 NAT模型 ,-w表示定义服务器权重
[root@server5 ~]# ipvsadm -a -t 172.25.44.5:80 -r 192.168.0.3 -m -w 1
####打开ip转发机制
[root@server5 ~]# echo “1” > “/proc/sys/net/ipv4/ip_forward” #打开ipv的ip转发机制,当前生效
[root@server5 ~]#vim /etc/sysctl.conf #打开ipv的ip转发机制,永久生效
net.ipv4.ip_forward = 1
[root@server5 ~]# ipvsadm -l #查看是否添加成功
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP server5:http rr
-> 192.168.0.2:http Masq 1 0 0
-> 192.168.0.3:http Masq 1 0 1
####配置所有的RS服务器
在server2(后端服务器)上:
<1>vim /etc/sysconfig/network-scprits/ifcfg-eth0 #配置ip和网关
DEVICE=“eth0”
BOOTPROTO=“static”
ONBOOT=“yes”
IPADDR=“192.168.0.2”
GATEWAY=192.168.0.5 #修改网关为调度器的ip地址
PREFIX=24
<2>/etc/init.d/network restart
<3>/etc/init.d/httpd start
#######在server3(后端服务器)上:
和server2上的操作一样
<1>vim /etc/sysconfig/network-scprits/ifcfg-eth0
DEVICE=“eth0”
BOOTPROTO=“static”
ONBOOT=“yes”
IPADDR=“192.168.0.2”
GATEWAY=192.168.0.5
PREFIX=24
<2>/etc/init.d/network restart
<3>/etc/init.d/httpd start
#######在真机上测试:
[root@foundation44 images]# curl 172.25.44.5
bbs.westos.org - server3
[root@foundation44 images]# curl 172.25.44.5
www.westos.org - server2
[root@foundation44 images]# curl 172.25.44.5
bbs.westos.org - server3