LVS-TUN LVS-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地址 上的一个虚拟服务。html

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

 

VS/NAT的配置以下表所示,全部到IP地址为202.103.106.5和端口为80的流量都被负载均衡地调度的真实服务器 172.16.0.2:80和172.16.0.3:8000上。目标地址为202.103.106.5:21的报文被转移到172.16.0.3:21 上。而到其余端口的报文将被拒绝。缓存

 

下面,举个例子来进一步说明VS/NAT安全

由于实验需求 笔者将CIP:server1(虚拟机)设置了两块网卡,分别模拟内外网服务器

两台RS :server2     server3   ip设置为于server1 模拟内网ip的同网段ip网络

 

[root@server1 ~]# ip link set up eth1    #激活网卡eth1
[root@server1 ~]# ip addr add 192.168.0.1/24 dev eth1    #为网卡设置临时内网ip负载均衡

上图能够看到ip设置成功,eth0 的ip 与笔者真机ip处于同一网段,做为外网ip使用分布式

配置yum源仓库,加入HighAvailability和LoadBalancer 不然ipvsadm没法安装测试

安装失败

安装成功

 

而后打开ip转换功能3d

[root@server1 ~]# vim /etc/sysctl.conf

将参数修改成1

sysctl -p   刷新修改内容

添加ipvsadm策略

[root@server1 ~]# ipvsadm -A -t 172.25.254.1:80 -s rr   #rr表示轮询
[root@server1 ~]# ipvsadm -a -t 172.25.254.1:80 -r 192.168.0.2:80 -m      #设置nat模式
[root@server1 ~]# ipvsadm -a -t 172.25.254.1:80 -r 192.168.0.3:80 -m     #添加rip
[root@server1 ~]# ipvsadm -ln   #查看策略

 

 

为server2和server3配置临时网关,安装http服务,在http默认发布目录编写发布页

yum install httpd -y

vim /var/www/html/index.html

 

server3默认发布页写为:

 

到此设置完毕,接下来能够进行测试

(记得真机ip不可与RS在同一网段)

实验完成,成功达成NAT负载均衡。

 

LVS-TUN负载均衡模式

在VS/NAT的集群系统中,请求和响应的数据报文都须要经过负载调度器,当真实服务器的数目在10台和20台之间时,负载调度器将成为整个集群系统的新 瓶颈。大多数Internet服务都有这样的特色:请求报文较短而响应报文每每包含大量的数据。若是能将请求和响应分开处理,即在负载调度器中只负责调度 请求而响应直接返回给客户,将极大地提升整个集群系统的吞吐量。

 

VS/TUN的工做流程如图所示:它的链接调度和管理与VS/NAT中的同样,只是它的报文转发方法不一样。调度器根据各个服务器的负载状况,动态地 选择一台服务器,将请求报文封装在另外一个IP报文中,再将封装后的IP报文转发给选出的服务器;服务器收到报文后,先将报文解封得到原来目标地址为VIP 的报文,服务器发现VIP地址被配置在本地的IP隧道设备上,因此就处理这个请求,而后根据路由表将响应报文直接返回给客户。

接下来开始LVS—TUN的负载均衡实验

VS为server1  IP为172.25.254.1

VIP为172.25.254.100

RS为server2 server3 IP分别为172.25.254.2     172.25.254.3

 

server1:

modprobe ipip 加载隧道模块,ip addr能够看到tunl0网卡

[root@server1 ~]# ip link set up tunl0        #启用网卡
[root@server1 ~]# ip addr add 172.25.254.100/24 dev tunl0        #添加虚拟ip

配置yum源仓库,加入HighAvailability和LoadBalancer 不然ipvsadm没法安装(这部上面作过了,再也不赘述)

[root@server1 ~]# ipvsadm -C            #清空策略
[root@server1 ~]# ipvsadm -A -t 172.25.254.100:80 -s rr      #指定轮询
[root@server1 ~]# ipvsadm -a -t 172.25.254.100:80 -r 172.25.254.2:80 -i     #设定为TUN模式
[root@server1 ~]# ipvsadm -a -t 172.25.254.100:80 -r 172.25.254.3:80 -i
[root@server1 ~]# ipvsadm -ln      #查看策略

 

server2:

yum -y install heartbeat-ldirectord heartbeat-pils heartbeat-stonith heartbeat ipvsadm arptables_jf

[root@server2 ~]# arptables -F      #清空策略
[root@server2 ~]# arptables -A IN -d 172.25.254.100 -j DROP                #不缓存vip的mac地址
[root@server2 ~]# arptables -A OUT -s 172.25.254.100 -j mangle --mangle-ip-s 172.25.254.2
[root@server2 ~]# /etc/init.d/arptables_jf save     #刷新策略
Saving current rules to /etc/sysconfig/arptables:          [  OK  ]
[root@server2 ~]# arptables -L      #查看策略

 

与以前步骤相同,再也不赘述

 

yum install httpd -y

vim /var/www/html/index.html

[root@server2 ~]# cat /var/www/html/index.html
www.westos.org-server2

[root@server2 ~]# /etc/init.d/httpd restart         #刷新服务

将过滤出来=1的服务所有变动为0   变动命令为sysctl -w 将等于号先后空格去掉,改成=0便可

 

server3:

设置与server2一致,再也不赘述

只需记得将

 arptables -A OUT -s 172.25.254.100 -j mangle --mangle-ip-s 172.25.254.2   改成

 arptables -A OUT -s 172.25.254.100 -j mangle --mangle-ip-s 172.25.254.3   便可

 

到此LVS—TUN配置完成。能够开始测试

 

轮询成功