目录
1.写在前面
2.四层的负载均衡拓扑图
3.VS-NAT(基于网络地址转换,network address translation ,NAT)
3.1 SNAT(源地址转换)
3.2 DNAT(目标地址转换)
4.VS-DR(直接路由,direct routing,DR)
5.VS-Tun(隧道,tunnelling)
1.写在前面
这部分我们开始看负载均衡中lvs技术,首先,我们先确定一些名词代表的含义,比如VIP、DIP等。无论我们使用什么负载均衡技术对于客户端是隐藏的,客户端只关心输入和输出过程。LVS负载均衡集群系统中的director控制种类,包括网络地址转换,直接路由和隧道三个方式。
2.四层的负载均衡拓扑图
- (1)当所有客户端请求来到负载均衡服务器,我们使用lvs四层负载技术,负载均衡服务器仅仅转发并不做三次握手,向后转发握手的包,自己并不回握手信息。
- (2)转发过程中,需要保证三次握手到四次分手之间是不可分割的过程。比如一个客户端a连接到了服务器b,a到b从连接、传输数据到分手之间是不可分割的。负载均衡服务器需要保证有这个能力保证这个过程不会被分割。
- (3)负载均衡服务器并不知道客户端请求的是什么内容,所以每一台后端服务器应该做了镜像拷贝,部署了相同的内容。
- (4)集群服务器承载数据有两种方式,一种是镜像,另一种是切片。镜像存储能力不会有扩充,切片对应的存储能力有扩充。
3.VS-NAT(基于网络地址转换,network address translation ,NAT)
3.1 SNAT(源地址转换)
在网络中分为公网ip和私网ip地址,互联网上可见的都是公网ip地址,是唯一的。而我们家里面、教室里面都是用的私网ip地址,事实上公网ip全球分布是不公平的,美国每一个可以有好多公网ip,但是咱们国内好几个人才能分到一个公网ip,所以NAT技术的使用非常普遍。当所有私有ip转换为同一个公网ip时候,路由器会搞不清应该回复给哪一个客户端。所以路由器本身也会为每一个连接申请一个端口号,用来标记转发的连接。
3.2 DNAT(目标地址转换)
DNAT和SNAT一样,只不过更改的是目标ip地址。在负载均衡服务器上应用如下:
这种优势很明显,服务器越多越能承担更大的并发量。但是所有压力都放在了负载均衡服务器上面,如果可以通过后端服务器独立的返回给对应的客户端肯定是可以解决这个问题的。并且常识是我们通常上传大小远远小于下载大小,如果我们解决了回复的这个过程,将大大减小均衡服务器压力。
VS-NAT是LVS最基本的方法,如果想要设置一个用于测试的LVS,这是一个最简单的方法。当客户发出请求,lvs负载均衡中的director会将接受到的包的目标地址重写为某个real-server,并将其转发到real-server。Real-server的回复会发到director,director将回复包的源地址改写为VIP。不像VS-DR和VS-TUN,real-server只需要一个功能tcp/ip栈。Real-server可以是任意操作系统,在real-server上也不必做什么配置修改(除了在路由表中,需要把real-server的默认网关设为lvs负载均衡中的director)。
4.VS-DR(直接路由,direct routing,DR)
无论结构怎么改变,客户端都是一样的,cip-vip的一个过程,经过负载均衡器转发变成cip-rip。我们希望可以通过这个服务器独立回复给客户端,如果发送地址为rip-cip,客户端肯定不会接受,客户端仅认可vip-cip。所以我们必须要让该服务器中有vip地址,但是公网ip地址是唯一的,只需要在服务器上配置一个隐藏vip地址,这个ip地址是对外隐藏,对内透明可见的。这样就可以实现从cip-vip直接发送到服务器,然后服务器拿着这个vip封装数据包vip-cip,发送给客户端。
但是直接拿着cip-vip是不会发给对应服务器的,需要继续封装成 cip-vip:rip-mac,这样数据包可以发送给服务器了。这个是改变了七层模型中链路层部分,是属于局域网,这就要求负载均衡服务器和提供服务的服务器在同一个网段。因为一旦属于互联网,会经过多次跳跃,跳跃过程中mac地址是不断被替代的。
DR模型缺点就是负载均衡服务器和提供服务的服务器在同一个网段,物理位置受到限制。
lvs负载均衡中的director接到来自client的请求包后,根据调度算法选择一个real-server,解析出此real-server的MAC地址,并且向此MAC发送包含一个IP datagram的链路层包。Real-server收到包后,恢复IP datagram,查找路由表后发现这个VIP就在本地(设备lo:0,non-arp),移交给端口监听器。因为Real-server收到从CIP->VIP的包,构造回复包时就是VIP->CIP。Real-server查找路由表,并通过到client的缺省gateway发送回复。回复不经过director。在real-server上所需做的工作就是配置一个non-arping的lo:0设备。并且服务需要监听VIP的相应端口。VS-DR方式吞吐量较大,支持的real-server数量较多。
5.VS-Tun(隧道,tunnelling)
日常生活中隧道是从一端进入,必须从另一端出去,隧道的技术是:点对点、ip外包着ip。VPN可以帮助我们理解,VPN用到了代理,帮助我们访问我们不能访问的ip地址。这样就不用要求负载均衡服务器和提供服务的服务器在同一个网段。
这种方式是基于VS-DR方式的,不同的只是lvs负载均衡中的director将包IP封装,然后转发到real-server。VS-TUN的real-servers相对于director可以远程;而且每个real-server都可以在单独的网络上,但需要在路由器上做工作,允许源地址为VIP的输出包。配置方法和要求与VS-DR方式类似。只是需要将lo:0设备换为tunl0设备,其对应模块为ipip。