企业之lvs的模式二:隧道模式

隧道模式

1.隧道模式的基本概念

  • 采用NAT技术时,由于请求和响应报文都必须经过调度器地址重写,当客户的请求越来越多时,调度器就会处理不过来。
  • 调度器就是把请求报文通过IP隧道转发至真实服务器,而真实服务器将响应直接返回给用户,所以调度器只处理请求报文。由于一般网络服务响应报文比请求报文大许多,采用TUN技术后,调度器得到极大的解放,集群系统的最大吞吐量可以提高10倍。

2.隧道模式的工作原理

在这里插入图片描述

  • (1)IP隧道技术又称为IP封装技术,它可以将带有源和目标IP地址的数据报文使用新的源和目标IP进行二次封装,这样这个报文就可以发送到一个指定的目标主机上。
  • (2)隧道模式下,调度器和后端服务器组之间使用IP隧道技术。当客户端发送的请求(CIP–>VIP)被director接收后,director修改该报文,加上IP隧道俩端的IP地址作为新的源和目标地址,并将请求转发给后端被选中的一个目标。
  • (3)当后端服务器接收到报文后,首先解封该报文原有的CIP—>VIP,该后端服务器发现自身的tun接口上配置了VIP,因此接受该数据包。
  • 当请求处理完成后,结果将不会重新交给director,而是直接返回给客户端。此时响应数据包的源IP为VIP,目标IP为CIP。

3.采用隧道模式的基本属性和要求

  • (1)realserver的RIP和director的DIP不用处于同一物理网络中,且RIP必须可以和公网通信。也就是说集群节点可以跨互联网实现
  • (2)realserver的tun接口上需要配置VIP地址,以便接收director转发过来的数据包,以及作为响应的报文源IP。
  • (3)director转发给realserver时需要借助隧道,隧道外层的IP头部的源IP时DIP,目标IP是RIP,而realserver响应给客户端的IP头部是根据隧道内层的IP头分析得到的,源IP是VIP,目标IP是CIP。
  • (4)director只处理入站请求,响应请求由realserver自己完成。

一般来说,TUN模式会用来负载调度缓存服务器组,这些缓存服务器一般放置在不同的网络环境,可以就近折返给客户端。在请求对象不在Cache服务器本地命中的情况下,Cache服务器要向源服务器发送请求,将结果取回,最后将结果返回给用户。

二、模拟隧道模式的实现

1、实验环境

主机名IP
server1172.25.254.1
server2172.25.254.2
server3172.25.254.3

2、.清除server1(lvs)上的其它模式的设置

[root@server1 yum.repos.d]# ipvsadm -C ##删除DR模式下的设置

[root@server1 yum.repos.d]# ip addr del 172.25.254.100/24 dev eth0

在这里插入图片描述

3.在server1上添加隧道模式

[root@server1 yum.repos.d]# modprobe ipip ##添加隧道模式

   [root@toto1 ~]# ip addr show # 查看网络 
   1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1 
      link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 
      inet 127.0.0.1/8 scope host lo 
      valid_lft forever preferred_lft forever 
      inet6 ::1/128 scope host valid_lft forever preferred_lft forever 
      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.47.110/24 brd 172.25.47.255 scope global eth0 
      valid_lft forever preferred_lft forever 
      inet6 fe80::5054:ff:fe9e:dc8/64 scope link 
      valid_lft forever preferred_lft forever 
      3: tunl0@NONE: <NOARP> mtu 1480 qdisc noop state DOWN qlen 1 # 加载成功出现tunl0接口 link/ipip 0.0.0.0 brd 0.0.0.0

给调度器主机以及所有的真实服务器主机都加载该模块。

负载均衡调度器设置

添加VIP到tunl0网络接口,并激活该接口:

       [root@server1 yum.repos.d]# ip addr add 172.25.254.100/24 dev tunl0 ##隧道模式添加网卡 
       [root@server1 yum.repos.d]# ip link set up tunl0 #开启隧道模式 

安装lvs管理工具ipvsadm,并添加策略:

        [root@server1 yum.repos.d]# yum install ipvsadm -y
       [root@server1 yum.repos.d]# ipvsadm -A -t 172.25.254.100:80 -s rr ##设置模式 
       [root@server1 yum.repos.d]# ipvsadm -a -t 172.25.254.100:80 -r 172.25.254.2:80 -i ##添加真实服务 
       [root@server1 yum.repos.d]# ipvsadm -a -t 172.25.254.100:80 -r 172.25.254.3:80 -i 
       [root@server1 yum.repos.d]# ipvsadm -l 

在这里插入图片描述
5.在server2(realserver)端

  • 添加VIP到tunl0网络接口,并激活该网络接口:

     [root@server2 html]# ip addr del 172.25.254.100/32 dev eth0 ##删除在DR模式下的IP设置 
     [root@server2 html]# modprobe ipip
     [root@server2 html]# ip addr add 172.25.254.100/32 dev tunl0 #添加隧道模式的DIP 
     [root@server2 html]# ip link set up tunl0 #开启隧道模式
    

在这里插入图片描述

  • 消除反向过滤的影响
    将以上值为1的全部修改成0:使用sysctl -w 进行修改

    [root@server2 html]# sysctl -a | grep rp_filter ##反向过滤的影响,所以要把与反向过滤有关的都设置为0
    [root@server2 html]# sysctl -w net.ipv4.conf.default.rp_filter=0
    [root@server2 html]# sysctl -w net.ipv4.conf.lo.rp_filter = 0
    [root@server2 html]# sysctl -w net.ipv4.conf.eth0.rp_filter=0
    [root@server2 html]# sysctl -w net.ipv4.conf.tunl0.rp_filter=0
    [root@server2 html]# sysctl -p
    [root@server2 html]# vim /etc/sysctl.conf ##改不了的参数可以在配置文件中修改

  ![在这里插入图片描述](https://img-blog.csdnimg.cn/20190624122304736.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1k5NTA5MDQ=,size_16,color_FFFFFF,t_70)

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

修改rp_filter参数的目的
有三个值,0、1、2,具体含义:
0:不开启源地址校验。
1:开启严格的反向路径校验。对每个进来的数据包,校验其反向路径是否是最佳路径。如果反向路径不是最佳路径,则直接丢弃该数据包。
2:开启松散的反向路径校验。对每个进来的数据包,校验其源地址是否可达,即反向路径是否能通(通过任意网口),如果反向路径不同,则直接丢弃该数据包。

  • 安装httpd服务,并且设置共享页面。

为了实验效果明显,不同的真实服务器可以设置不同的共享页面内容。
yum install httpd -y # 安装服务
echo server2------example.com > /var/www/html/index.html # 设置共享页面内容toto2
systemctl start httpd # 开启服务
systemctl enable httpd # 设置服务开机自动启动

5.在server3(realserver)端,同server2设置一样。

测试如下:

  • 在server2和server3端开启httpd服务并且在apache的默认发布目录下配置要发布的内容同DR模式相同这里不再赘述。

  • 在物理机上:
    在这里插入图片描述

    • 在srever1上查看访问情况
      在这里插入图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值