企业之LVS的模式一:DR模式

一.LVS的基本概念

1,定义

  • LVS的全称是Linux virtual server,即Linux虚拟服务器,它是封装在linux的内核中的。之所以是虚拟服务器,是因为LVS自身是个负载均衡器,不接受处理请求,而是将请求转发至位与它后端真正的服务器realserver上。
  • LVS是四层(传输层tcp/udp),七层(应用层)的负载均衡工具,只不过大众一般都使用它的四层负载均衡功能ipvs,而七层的内容分发负载工具ktcpvs(kernel tcp virtual server)不怎么完善,使用的人并不多。
  • ipvs是集成在内核中的框架,可以通过用户空间的程序ipvsadm工具来管理,该工具可以定义一些规则来管理内核中的ipvs。就像iptables和netfilter关系一样。

2,LVS-ipvs相关的几种IP

  • VIP:virtual IP:LVS服务器上接收外网数据包的网卡IP地址

  • DIP:director IP:LVS服务器上转发数据包到realserver的网卡IP地址

  • RIP:realserver(简称RS)上接收Director转发数据包的IP,即提供服务的服务器的IP。

  • CIP:客户端的IP
    在这里插入图片描述
    三、LVS模式(DR)
    1.DR模式的基本概念

  • DR(Direct Routing)模式为直接路由模式

  • 调度器对数据包的处理是改写数据帧的目标MAC地址,通过链路层来负载均衡。

  • DR通过改写请求报文的目标MAC地址,将请求发送到真实服务器,而真实服务器则将响应直接返给用户。

  • 要求调度器与真实服务器都有一块网卡连在同一物理网段上,以便使用MAC地址通信转发数据包。

2.DR模式工作原理

  • (1)客户端发送请求被director接收后,director根据负载均衡算法改写数据帧的目标MAC地址为后端某RS的MAC地址,并将该数据包转发给该RS(实际上是往整个局域网发送,但只有该MAC地址的RS才不会丢弃)
  • (2)RS接收到数据包后,发现数据包的目标IP地址为VIP,而RS本身已经将VIP配置在了自身的某个接口上,因此RS会接收这个数据包并进行处理。
  • 3)处理完毕后,RS直接将响应报文响应给客户端。此时数据包源IP为VIP,目标IP为CIP。

在这里插入图片描述3.DR模式时的基本属性和要求

  • Realserver的RIP和Director的DIP必须处于同一网段中,以便使用MAC地址进行通信。
  • realserver上必须配置VIP地址,以便接收director转发过来的数据包,以及作为响应报文的源IP。
  • realserver响应给客户端的数据包的源和目的IP为VIP—>CIP
  • director只处理入站请求,响应请求由realserver完成。

四.模拟DR模式的实现

实验环境:

主机 服务
172.25.254.1 lvs调度器
172.25.254.2 realserver
172.25.254.3 realserver

调度器DS设置
1 安装lvs管理工具,设置负载均衡调度策略

  #安装lvs管理工具
   [root@toto1 ~]# yum install ipvsadm -y 
   # 使用管理工具添加策略 
   [root@toto1 ~]# ipvsadm -A -t 172.25.254.100:80 -s rr # 添加轮询调度策略          
   [root@toto1 ~]# ipvsadm -a -t 172.25.254.100:80 -r 172.25.254.2:80 -g 
   [root@toto1 ~]# ipvsadm -a -t 172.25.254.100:80 -r 172.25.254.3:80 -g
    # 添加两个RIP # 查看设置好的策略
     [root@toto1 ~]# ipvsadm 
     IP Virtual Server version 1.2.1 (size=4096) 
     Prot LocalAddress:Port Scheduler Flags
       -> RemoteAddress:Port              Forward Weight ActiveConn InActConn 
       TCP 172.25.47.100:http rr 
       -> 172.25.254.2:http Route 1 0 0
        -> 172.25.254.3:http Route 1 0 0 

2 添加VIP到eth0网卡
ip addr add 172.25.254.100/24 dev eth0 # 临时添加ip到eth0网卡

  [root@toto1 ~]# ip addr add 172.25.254.100/24 dev eth0 # 添加vip 
  [root@toto1 ~]# ip addr show eth0 # 查看网卡信息 
  2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc 
  pfifo_fast state UP qlen 1000 
        link/ether 52:54:00:9e:0d:c8 brd ff:ff:ff:ff:ff:ff
         inet 172.25.254.1/24 brd   172.25.47.255 scope global eth0 
         valid_lft forever preferred_lft forever
         inet 172.25.254.100/24 scope global secondary eth0 
         valid_lft forever preferred_lft forever 
         inet6 fe80::5054:ff:fe9e:dc8/64 scope link 
         valid_lft forever preferred_lft forever

RS配置(所有的服务器设置一致)
1 ,安装httpd 启动设置访问页面
注意:该处为了验证负载均衡的效果,后端真实服务器设置不同的访问内容,明显标示内容来自不同的后端服务器。
2,添加VIP到各自的物理网卡中(toto1 ,toto2 ,toto3)

ip addr add 172.25.254.100/24 dev eth0 # 临时添加ip到eth0网卡

3, 设置arptable策略,解决将用户所有针对VIP的请求发送到DS 而不是RS

   yum install arptables -y # 安装管理工具
    arptables -A INPUT -d 172.25.254.100 -j DROP # 设置不回应对自己VIP的请求
    arptables -A OUTPUT -s 172.25.254.100 -j mangle --mangle-ip-s 172.25.254.2 ##设置将发送出去的数据包的源ip修改成VIP

所有的真实服务器根据自己的实际ip情况进行设置。
客户端测试:

  [root@foundation47 yum]# curl 172.25.254.100
   toto2 
  [root@foundation47 yum]# curl 172.25.254.100
  toto3
  [root@foundation47 yum]# curl 172.25.254.100 
  toto2 
  [root@foundation47 yum]# curl 172.25.254.100 
  toto3
  [root@foundation47 yum]# curl 172.25.254.100 
  toto2
  [root@foundation47 yum]# curl 172.25.254.100 
  toto3
  [root@foundation47 yum]# curl 172.25.254.100 
  toto2

#调度器负载分配情况

  [root@toto1 ~]# ipvsadm
   IP Virtual Server version 1.2.1 (size=4096) 
   Prot LocalAddress:Port Scheduler Flags
    -> RemoteAddress:Port Forward Weight ActiveConn InActConn
   TCP toto1:http rr
    -> 172.25.254.2:http Route 1 0 4 
    -> 172.25.254.3:http Route 1 0 3 

猜你喜欢

转载自blog.csdn.net/Y950904/article/details/92846232