LVS 的IP负载均衡技术---VS/NAT

NAT实现虚拟服务器 (VS/NAT)

NAT的工作原理是报文头(目标地址、源地址、目标端口)被正确改写后,客户相信他们连接一个IP地址,而不同IP地址的服务器也认为他们是与客户直接相连的。由此,可以用NAT方法将不同IP地址的并行网络服务变成一个IP上的网络虚拟服务。
VS/NAT 体系结构如下图所示。在一组服务器前端有一个调度器,他们通过Switch/HUB连接的。这些服务器提供相同的网络服务、相同的内容,即不管请求被派发到哪一台后端的realserver,执行结果都是一样的。服务内容可以复制到每台服务器的本地硬盘中,也可以通过网络文件系统(例如NFS)共享,也可以通过一个分布式的文件系统来提供。

在这里插入图片描述

	客户端通过Virtual IP 访问网络服务器时,请求到达调度器,调度器根据连接调度算法挑选一台
后端的realserver,将报文的Virtual IP改为选定的readlserver的IP地址,报文的目标端口跟改为
选定readlserver的指定端口,最后将修改后的报文发送给readlserver。同时,调度器在连接hash
表中记录这个链接,往这个链接的下一个报文到来时,从连接hash表中可以获得原选定的readlserver
服务器的地址和端口,进行同样的改写操作,并将报文发送给原选定readlserver。
	
	当来自真实服务器的响应报文经过调度器时,调度去将响应报文的源地址和源端口改为Virtual IP
对应的端口和地址,再把报文返回给用户。  我们在连接上引入一个状态机,不同的报文会使得
连接处于不同的状态,不同的状态有不同的超时值。在TCP连接中,根据标准的TCP有限状态机
进行状态转移;在UDP中,我们只设置一个UDP状态。不同状态的超时值是可以设置的,在缺省
状态下,SYN状态的超时未1min,ESTABLISHED状态的超时值为15min,FIN的为1min;UDP状
态超时值为5min。当连接终止或者超时,调度器会将这个连接从hash表中删除。

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

	在一些网络服务中,他们将IP地址和端口号在报文的数据中传送,若我们只对报文头的IP地址和端口
做转换,这样会出现不一致的结果,服务会中断,所以针对这些服务,需要编写响应的模块来转换报文
中的IP地址或者端口号,比如这些: FTP、IRC、H.323、Real Video、VDOLive、PPTP

下面举个例子来说明VS/NET

在这里插入图片描述

在这里插入图片描述

我们假定请求者的IP地址是1.1.1.1
sourcedest
1.1.1.1:23456202.103.106.5:80

调度器根据调度算法选定一台realserver,假如是172.16.0.3

sourcedest
202.103.106.5:22122172.16.0.3:8000

从服务器返回的报文

sourcedest
172.16.0.3:8000202.103.106.5:22122

响应报文的源地址修改为Virtual IP端口修改为80,并返回给客户端

sourcedest
202.103.106.5:801.1.1.1:23456

虚拟机实现
实验需要机器
Scheduler:

vmware虚拟机 :两个网卡,一个配置外网地址,我们假设外网为192.168.1.0网段,一个配置内网,
可以调成vmnet2
ens33:192.168.1.105/24
ens37:172.16.0.3/24
ipvsadm -A -t 192.168.1.105:80 -s rr 开启集群服务,轮巡调度
ipvsadm -a -t 192.168.1.105:80 -r 172.16.0.1:80 -m -w 1
ipvsadm -a -t 192.168.1.105:80 -r 172.16.0.2:80 -m -w 1
# {-m NAT|-g DR|-i TUN}

接下来配置我们的后端server

server1 
也选择vmnet2模式
IP: 172.16.0.1/24
ifconfig ens33 172.16.0.1/24
route add default gw 172.16.0.3
开启http服务,关闭iptables selinux
setenforce 0
iptables -F
systemct start nginx

server2
也选择vmnet2模式
IP: 172.16.0.2/24
ifconfig ens33 172.16.0.2/24
route add default gw 172.16.0.3
开启http服务,关闭iptables selinux
setenforce 0
iptables -F
systemct start nginx

接下来我们就可以访问192.168.1.105:80来访问集群服务了
在这里插入图片描述

O(∩_∩)O哈哈~

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值