• 每天进步一点点!

文章分类

推荐网站

常用手册

LVS之网络地址转换(NAT)【原创】

<<返回

2013-12-13 00:53:04

  • 简介

 由 于IPv4中IP地址空间的日益紧张和安全方面的原因,很多网络使用保留IP地址(10.0.0.0/255.0.0.0/172.16.0.0/255.128.0.0和192.168.0.0/255.255.0.0)[64, 65, 66]。这些地址不在Internet上使用,而是专门为内部网络预留的。当内部网络中的主机要访问Internet或被Internet访问时,就需要 采用网络地址转换(Network Address Translation, 以下简称NAT),将内部地址转化为Internets上可用的外部地址。NAT的工作原理是报文头(目标地址、源地址和端口等)被正确改写后,客户相信 它们连接一个IP地址,而不同IP地址的服务器组也认为它们是与客户直接相连的。由此,可以用NAT方法将不同IP地址的并行网络服务变成在一个IP地址 上的一个虚拟服务。

VS/NAT的体系结构如图所示。在一组服务器前有一个调度器,它们是通过Switch/HUB相连接的。这些服务器 提供相同的网络服务、相同的内容,即不管请求被发送到哪一台服务器,执行结果是一样的。服务的内容可以复制到每台服务器的本地硬盘上,可以通过网络文件系 统(如NFS)共享,也可以通过一个分布式文件系统来提供。

 


       

  • LVS-NAT网络拓扑图

 

 

说明:当Web User通过互联网访问LVS上的web服务,即80端口时,LVS会通过调度算法,将请求调度到第一台真实服务器(Real Server 1)上的80端口,Real Server1 会将结果经过LVS返回给Web User,这样就完成了一次完整的web请求。当LVS再来一次web请求,LVS会将请求调度到Real Server2上,Real Server2也会将结果经由LVS返回给互联网用户。LVS第三次web请求,LVS会将请求调度到Real Servere3上,Real Server3也会将结果经由LVS返回给Web User。Web User对LVS的再一次请求,LVS又会调度到Real Server1。再一次又会调度到Real Server2。就这样不断轮询下去,以实现负载均衡,这个过程对Web User而言是透明的。

     

  • 配置实例:

网络环境准备:准备五台计算机,一台模拟外网的互联网用户(可以是Linux也可以是Windows),一台模拟LVS服务器(必须是Linux),另三台模拟真实的服务器(Linux)。我们这里使用VMWare安装CentOS5.6作为LVS服务器,另外用VMWare再clone三台CentOS5.6作为Real Server。用WMWare安装windows(我这里用的是windows2003)作为外网的互联网用户,做实验时,请将防火墙关掉。

  • 克隆三台RealServer.

在CentOS5.6关机状态下,进行克隆。右击VM->Manage->Clone->Next....

这里我将3个虚拟机命名为:CentOS5.6.11,CentOS5.6.12,CentOS5.6.13

LVS的负载均衡需要用到ipvsadm,这里我们在CentOS5.6上用yum安装该软件

yum install ipvsadm

 

  • 给CentOS5.6再添加一块网卡

根据上面的拓扑图可知,CentOS5.6作为LVS服务器,需要两个IP地址,所以我们给这个虚拟机在添加一个网卡。在CentOS5.6启动状态下:VM->Setting->Add->Network Adapter->Next->Finish

  • 设置网卡的连接方式:

将CentOS5.6(LVS)的一块网卡设置为vmnet0,用于与外网通信,一块设置为vmnet1,用于与RealServer通信,windows2003作为外网的互联网用户,网卡设为vmnet0。CentOS5.6.11,CentOS5.6.12,CentOS5.6.13作为RealServe,网卡都设为vmnet1。我是在Ubuntu上安装的vmware,我的vmware配置如图:

 

 

  • 配置ip地址

widows2003

ip:8.8.8.11 netmask:255.255.255.0(作为外网不需要配置网关),其实真实环境中这个ip地址可以不是8.8.8.*,只要是一个合法的外网IP就可以。因为在外网中不同网段的IP是可以相互访问的。这里为了测试,要把外网的用户和LVS规划到一个网络段里才能相互访问。

CentOS5.6 

ifconfig eth0 8.8.8.10 netmask 255.255.255.0
ifconfig eth1 192.168.10.1 netmask 255.255.255.0

这里8.8.8.10是外网IP,192.168.10.1是内网IP

CentOS5.6.11

ifconfig eth0 192.168.10.11 netmask 255.255.255.0
route add default gw 192.168.10.1

CentOS5.6.12

ifconfig eth0 192.168.10.12 netmask 255.255.255.0
route add default gw 192.168.10.1

CentOS5.6.13

ifconfig eth0 192.168.10.13 netmask 255.255.255.0
route add default gw 192.168.10.1

查看网关的命令

route -n

删除网关的命令

route del default

如果上面的配置无误的话,在CentOS5.6上可以ping通windows2003,CentOS5.6.11,CentOS5.6.12,CentOS5.6.13中的任何一个。试试看。

 

  • 配置LVS功能

开启LVS的路由管道,在CentOS5.6上输入下面的命令:

 echo 1 > /proc/sys/net/ipv4/ip_forward

用ipvsadm配LVS(由于配置网络环境,可能会使CentOS5.6连不上网,所以请在联网状态下提前用yum安装ipvsadm)

#清除之前的调度转换表
ipvsadm -C

#增加一个带有调度算法的转换表,-A增加 t是指tcp,-s用于指明调度算法
ipvsdam -At 8.8.8.10:80 -s rr

#增加要调度的真实服务器(RealServer)-r指真实服务器(Real),-m之Nat模式 -g指dr模式 -i指ip隧道模式
ipvsadm -at 8.8.8.10:80 -r 192.168.10.11:80 -m
ipvsadm -at 8.8.8.10:80 -r 192.168.10.12:80 -m
ipvsadm -at 8.8.8.10:80 -r 192.168.10.13:80 -m

可以用下面命令查看ipvsadm添加的内容:

ipvsadm -L -n

输入如图所示:

 

 

  • 测试是否配置成功

开启CentOS5.6.11,CentOS5.6.12,CentOS5.6.13的apache(CentOS5.6不需要启动apache),在每服务器的网站的根目录都添加一个index.html,内容分别为192.168.10.11,192.168.10.12,192.168.10.13(在真实环境中每台真实服务器的内容是一样的,这里为了看到NAT的轮询效果,把他们的内容设置为每天服务器的IP地址),在windows2003上,通过浏览器访问8.8.8.10,刷新几次,如果配置成功,则网页上会交替显示:192.168.10.11,192.168.10.12,192.168.10.13

 

  • NAT 的优缺点

VS/NAT 的优点是服务器可以运行任何支持TCP/IP的操作系统,它只需要一个IP地址配置在调度器上,服务器组可以用私有的IP地址。缺点是它的伸缩能力有限, 当服务器结点数目升到20时,调度器本身有可能成为系统的新瓶颈,因为在VS/NAT中请求和响应报文都需要通过负载调度器。 

基于 VS/NAT的的集群系统可以适合许多服务器的性能要求。如果负载调度器成为系统新的瓶颈,可以有三种方法解决这个问题:混合方法、VS/TUN和 VS/DR。

 

文章评论

  • 暂无评论

发表评论

昵称:

内容:

发表评论