LVS-NAT模式实现



LVS-NAT模式实现

LVS(Linux Virtual Server)是一个负载均衡服务器,它可以基于以下三种模型实现负载均衡,分别是,LVS-NAT,LVS-TUN,LVS-DR模型。我们这里只介绍NAT模型的实现,其它两种模型我们另外进行介绍。

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

lvs-nat1

 

客 户通过Virtual IP Address(虚拟服务的IP地址)访问网络服务时,请求报文到达调度器,调度器根据连接调度算法从一组真实服务器中选出一台服务器,将报文的目标地址 Virtual IP Address改写成选定服务器的地址,报文的目标端口改写成选定服务器的相应端口,最后将修改后的报文发送给选出的服务器。同时,调度器在连接Hash 表中记录这个连接,当这个连接的下一个报文到达时,从连接Hash表中可以得到原选定服务器的地址和端口,进行同样的改写操作,并将报文传给原选定的服务 器。当来自真实服务器的响应报文经过调度器时,调度器将报文的源地址和源端口改为Virtual IP Address和相应的端口,再把报文发给用户。我们在连接上引入一个状态机,不同的报文会使得连接处于不同的状态,不同的状态有不同的超时值。在TCP 连接中,根据标准的TCP有限状态机进行状态迁移,这里我们不一一叙述,请参见W. Richard Stevens的《TCP/IP Illustrated Volume I》;在UDP中,我们只设置一个UDP状态。不同状态的超时值是可以设置的,在缺省情况下,SYN状态的超时为1分钟,ESTABLISHED状态的超 时为15分钟,FIN状态的超时为1分钟;UDP状态的超时为5分钟。当连接终止或超时,调度器将这个连接从连接Hash表中删除。

这样,客户所看到的只是在Virtual IP Address上提供的服务,而服务器集群的结构对用户是透明的。对改写后的报文,应用增量调整Checksum的算法调整TCP Checksum的值,避免了扫描整个报文来计算Checksum的开销。

在 一些网络服务中,它们将IP地址或者端口号在报文的数据中传送,若我们只对报文头的IP地址和端口号作转换,这样就会出现不一致性,服务会中断。所以,针 对这些服务,需要编写相应的应用模块来转换报文数据中的IP地址或者端口号。我们所知道有这个问题的网络服务有FTP、IRC、H.323、 CUSeeMe、Real Audio、Real Video、Vxtreme / Vosiac、VDOLive、VIVOActive、True Speech、RSTP、PPTP、StreamWorks、NTT AudioLink、NTT SoftwareVision、Yamaha MIDPlug、iChat Pager、Quake和Diablo。

 

下面,举个例子来进一步说明VS/NAT,如图3所示:

lvs-natt

VS/NAT 的配置如下表所示,所有到IP地址为192.168.99.193和端口为80的流量都被负载均衡地调度的真实服务器192.168.10.2:80 192.168.10.3:80上。

lvs-nats

 

根据上述事例,测试环境:

系统:CentOS6.5

VIP:192.168.99.193

DIP:192.168.10.1

RIP1:192.168.10.2

RIP2:192.168.10.3

CIP:192.168.100.178

 

1.首先在Director主机和Real Server上配置相应的IP地址和网关:

image005

Director主机

image007

Real-Server1主机

image009

Real-Server2主机

2.分别给Real Server添加默认路由,并安装开启httpd服务:

Shell>route add default gw 192.168.10.1

Shell>service httpd start

 

3.在Director服务器安装lvs软件包并进行相应配置,这里通过yum安装lvs软件:

Shell>yum –y install ipvsadm

安装完后,我们要开启linux的ip转发功能,因为我们是通过nat模式启用lvs的所以我们必须开启linux转发功能,否则lvs配置不会生效。编辑/etc/sysctl.conf文件找到”net.ipv4.ip_forward = 0”这行,把”0”改成”1”,保存后退出,并执行sysctl –p命令,使配置文件立即在系统中生效。

image011

利用ipvsadm命令配置ipvsadm规则:

Shell>ipvsadm –A –t 192.168.99.193:80 –s wrr ## ”-A”添加一个服务,”-t”指定为tcp服务,-s指定轮询规则,wrr指的是加权轮询。这条指令是添加一个虚拟IP地址为192.168.99.193的http服务,使用加权轮询规则。

Shell>ipvsadm –a –t 192.168.99.193:80 –r 192.168.10.2:80 –m –w 1  ##-a添加一个真实服务到虚拟服务中,可以简单理解为映射关系,-r指的是添加真实服务器,-m指的是使用LVS-NAT模型,-w指定是权重,这里为1。

Shell>ipvsadm –a –t 192.168.99.193:80 –r 192.168.10.3:80 –m –w 2

Shell>ipvsadm –L ##查看ipvs配置规则

image013

 

 

4.我们在客户端访问虚拟IP地址:

image015

也可以在服务器端通过curl命令更直观的可以看到网页轮询的效果:

image017

我们也可以使用ipvsadm –L –c更直观的查看哪些客户端访问:

image019

最后,如果是在生产环境下不建议用命令行来编辑lvs,应该使用脚本来运行lvs程序,这样可以更有效直观的管理lvs.

至此,LVS-NAT配置完成。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值