vlvs有三种模式:nat模式(LVS/NAT),直接路由模式( LVS/DR),ip隧道模式(LVS/TUN)
以及二度开发的第四种模式(FULL NAT)


1、DR直接路由模式

  • DR(Direct Routing)直接路由模式
  • 原理:
  • 在一台主机上面搭建lvs服务器,设置LVS的工作模式是DR模式,LVS仅仅是一个调度器,它会把客户端的请求转发给后端服务器
  • DR(直接路由)模式直接由后端服务器把数据返回给客户端,不需要逆向发送数据包,此时lvs调度器叫做DS调度器(Director Server),RS是真正的后端web服务器(Real Server),LVS专注做调度时效率很高
  • DR模式改变的是MAC地址
  • Client发送请求 --> DS(调度器) -->prerouting --> INPUT -->postrouting -->RS(Real Server)–>lo --> 网卡eth0 -->Client
  • 具体过程:
  • 用户(client)发送请求给调度器(DS),DS调度器先把请求发往prerouting链(内核空间kernalspace),确定请求的是不是VIP
  • 到了INPUT链之后,如果请求的是集群服务,会在这里修改MAC地址,把源MAC地址改为DS的MAC地址,把目的MAC地址改为RS的MAC地址,此时IP仍然不变,处理完成后把请求发往postrouting链
  • postrouting链检测请求的是否为RS(会检测请求的MAC地址),如果是,接受请求,把请求通过回环接口发给出口的网卡,再发回给客户端
  • LVS(ipvs ipvsadm)–>IPVS改变数据包的ip和端口–>POSTROUTING–>后端服务器
  • 1.数据在系统内的交流用的是回环接口,与外部的交流用的是网卡eth0
  • 2.DR模式高效的原因就是RS服务器会直接响应客户端的请求,发送的请求一直往前发送数据包,不会再返回数据包给调度器
  • DR模式的特性:
  • DR模式下调度器和服务器组都必须在物理上有一个网卡通过不分段的局域网相连,即通过交换机或者高速的HUB相连,中间没有隔有路由器。
  • VIP地址为调度器和服务器组共享,调度器配置的VIP地址是对外可见的,用于接收虚拟服务的请求报文
  • 所有的服务器把VIP地址配置在各自的Non-ARP网络设备上,它对外面是不可见的,只是用于处理目标地址为VIP的网络请求。
  • 所有的请求报文经由Director Server,但响应报文必须不能经过Director Server
  • 不支持地址转换,也不支持端口映射
  • RS的网关绝不允许指向DIP
  • 所有的请求报文都是由调度器(DS)进行调度的
  • MAC地址在第二层,属于数据链路层,还没有到IP所在的网络层
  • RIP和DIP必须处于同一网段中,以便使用MAC地址进行通信
  • 后端服务器(Real Server)上必须配置VIP地址,以便接收LVS调度器(Director)转发过来的数据包,以及作为响应报文的源IP
  • 后端服务器(Real Server)响应给客户端的数据包的源和目的IP为VIP—>CIP
    1、配置环境:
    三台redhat6.5版本虚拟机(server1,server2,server3)
    server1作为vs
    server2和server3作为rs
    server1(VS)
    1、配置yum源
    1、因为6.5版本的yum源不能一次性全部加载,所以需要将镜像中的东西,全部设置

lvs dr模式端口 lvs的三种模式_服务器


lvs dr模式端口 lvs的三种模式_客户端_02


执行 yum repolist命令加载yum源


lvs dr模式端口 lvs的三种模式_服务器_03


2、安装lvs用户层面的插件ipvsadm


lvs dr模式端口 lvs的三种模式_客户端_04


3、设置虚拟vip


lvs dr模式端口 lvs的三种模式_lvs dr模式端口_05


4、ipvsadm参数含义


-C:清除已有规则。
-A:添加VIP服务,后跟服务的访问地址。
-t:TCP协议,还是UDP协议(-u)。
-s:负载均衡算法,rr表示RoundRobin。
-a:添加RealServer到VIP,后跟虚地址。
-r:添加RealServer到VIP,后跟实地址。
-g:透传模式(-g表示Direct Routing即DR模式,-i表示ipip封装即Tunneling模式,-m表示Network Access Translation即NAT模式)
-p:Session粘连,同一客户端的请求在一段时间内都负载到同一RealServer

server2,3(RS)
1、安装httpd服务


lvs dr模式端口 lvs的三种模式_Server_06


lvs dr模式端口 lvs的三种模式_lvs dr模式端口_07


2、添加vip


lvs dr模式端口 lvs的三种模式_客户端_08


3、安装arptables_jf

因为设置172.25.254.100/24作为vip,不可以和外部通信,所以设用arptables将其的访问全部DROP,出去的包全部转化为本机的ip


lvs dr模式端口 lvs的三种模式_Server_09


lvs dr模式端口 lvs的三种模式_服务器_10


测试:

外部网络测试172.25.254.100

访问四次到的结果为server2和server3的内容


lvs dr模式端口 lvs的三种模式_客户端_11


二、NAT模式

server1(vs)

添加一块新网卡


lvs dr模式端口 lvs的三种模式_lvs dr模式端口_12


配置网络


lvs dr模式端口 lvs的三种模式_lvs dr模式端口_13


添加策略


lvs dr模式端口 lvs的三种模式_客户端_14


内核路由需要打开,并且server2,3的网关必须指向server1的ip


lvs dr模式端口 lvs的三种模式_服务器_15


配置server2,3的网络


lvs dr模式端口 lvs的三种模式_服务器_16


测试,通过外网访问


lvs dr模式端口 lvs的三种模式_Server_17


三、TUN隧道模式

server1,2,3

1、导入模块


lvs dr模式端口 lvs的三种模式_lvs dr模式端口_18


2、添加隧道,开启隧道


lvs dr模式端口 lvs的三种模式_服务器_19


3、添加回环接口

lvs dr模式端口 lvs的三种模式_服务器_20


4、禁掉server2,3 rp_filter 打开内核路由


lvs dr模式端口 lvs的三种模式_Server_21


5、在server1中添加策略


lvs dr模式端口 lvs的三种模式_客户端_22

测试,通过外网访问

lvs dr模式端口 lvs的三种模式_服务器_23