LVSDR模型配置

Posted yunxizhujing

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LVSDR模型配置相关的知识,希望对你有一定的参考价值。

DR模型配置

说明

之前提到过在在DR模型中LVS和应用服务器都只有一个网卡,但是通过网卡别名来配置多个IP,在LVS上面通过别名配置DIP,在应用服务器上通过别名来设置VIP。
外网过来的数据包肯定是CIP+VIP,那么应该是转发到LVS上,而不是应用服务器上(应用服务器上也有相同的VIP),为了避免应用服务器在接收ARP请求的时候使用VIP回应,那么就需要配置一些东西。

下面的是配置应用服务器对ARP广播(路由器广播找VIP是哪个主机)不回应:

Arp_ignore:定义接收到ARP请求时的响应级别,默认为0.

  • 0表示,响应所有,只要我有的IP,你只要请求,无论从哪个网卡进来我都响应
  • 1表示,仅响应如果请求的IP是进来的网卡的IP,就响应

Arp_announce:定义将自己的地址向外通告时的通告级别,默认为0.

  • 0表示将本地所有地址都向外通告
  • 1表示如果IP不在这个接口上,就避免向外通告,但是也会有疏漏
  • 2总是使用最佳本地地址,也就是仅使用接收ARP广播的网卡地址向外通告

下面是的配置是让应用服务器在返回数据包的时候使用VIP作为源IP地址:

VIP、DIP、RIP在同一网段:

技术分享图片

因为在DR模式下,LVS和应用服务器都只有一个网卡,通常来讲是eth0,另外还有一个lo回环地址。Eth0上配置的是RIP地址,lo:0(回环地址网卡的别名)上配置的是VIP地址。

请求通过路由器交换机发送到LVS的eth0接口上,然后LVS转发到某一个应用服务器的eth0接口,最后该应用服务器也用eth0来发送响应。不过Linux有一种行为,报文从哪个接口出去,同时尽可能用哪个接口的IP地址,如果该接口和网关不在同一网段内,它就使用该接口上别名的地址。

所以基于上面的过程,应用服务器响应客户端的时候会从eth0出去,这样报文的源地址就是RIP地址,这显然是不对的,因为客户端当时请求的是VIP。我们这里把VIP配置在应用服务器上的lo:0上,所以就需要做一个特殊配置。

我们需要添加一个独特的路由条目,明确说明回复用户的请求报文使用lo:0的地址来作为源IP地址(操作方法就是使用route命令添加一条路由信息)。

VIP、DIP、RIP在不同网段:

通常请求下VIP、DIP和RIP都不会在同一网段内。

因为客户端请求的是VIP,所以这个IP是公网地址,其他的DIP和RIP都是私有地址,如下图:

在这种情况下,LVS可以转发请求到应用服务器(因为DIP和RIP是同一网段所以只要接在同一个交换机就可以通信,而且DIP和RIP都是网卡直接地址不是别名),但是应用服务器就无法直接回复请求了,因为eht0的IP是私有的,和路由器不在同一网段内,虽然应用服务器的lo配置了VIP,但是这个IP是不可见的,它只能用作回复数据包的源IP地址,这个数据包要经过二层封装,也就是目标MAC和源MAC,显然目标MAC是路由器的地址,应用服务器要知道这个地址需要ARP广播,但是由于应用服务器的eth0和路由器不在同一网段,所以ARP广播无法完成,这样也就导致应用服务器无法直接回复客户端。

技术分享图片

所以在上面的这种情况下,拓扑需要变化,需要增加一个路由器,如下图:

技术分享图片

应用服务器返回客户端通过路由器2来完成,应用服务器的eth0上的IP和路由器2的内网IP是一个网段。当然使用一个有三个接口的路由器也行或者可以使用路由器的子接口也可以。

配置(同一网段)

网络配置:
LVS服务器
  DIP: 配置在eth0上
    IP:192.168.159.133/24
    GW:192.168.159.2
  VIP:配置在eth0:0上
    IP:192.168.159.200
  GW:NONE
应用服务器1
  RIP:配置在eth0上
    IP:192.168.159.134/240
    GW:192.168.159.2
  VIP:配置在lo:0上
    IP:192.168.159.200
    GW:NONE
应用服务器2
  RIP:配置在eth0上
    IP:192.168.159.135/24
    GW:192.168.159.2
  VIP:配置在lo:0上
    IP:192.168.159.200
    GW:NONE

配置LVS上的别名地址和路由信息

也就是VIP地址

技术分享图片

路由信息

技术分享图片

置应用服务器的ARP参数

以应用服务器1为例,2配置的方法一样

注意:要先配置Arp_ignore和Arp_announce在配置VIP。

应用服务器1的RIP地址配置在eth0上

技术分享图片

配置ARP,在下面的目录内/proc/sys/net/ipv4/conf

技术分享图片

技术分享图片

All接口必须配置(设定全局功能),eth0或者lo配置一个就好。我们这里选择配置all和eth0的。

先设置eth0的arp_announce

这个命令指示 –w参数指示临时修改,并不会永久生效。

技术分享图片

这里已经改成2了,默认是0

技术分享图片

设置all的arp_announce

技术分享图片

设置arp_ignore,这回我们使用echo来设置,其实都行

技术分享图片

在所有应用服务器上配置VIP

技术分享图片

技术分享图片

另外还需要修改一下lo:0的广播地址,现在是3个255,我们要改成4个,意思是在这个区域内就它一个地址。

技术分享图片

配置完我们去PING这个VIP:

其实响应这个PING操作的是LVS服务器,并不是应用服务器。我们从MAC地址表中就可以发现,如下图:

技术分享图片

在所有应用服务器上添加路由信息

Route add –host VIP dev lo:0 
# 把VIP替换成IP地址

技术分享图片

配置LVS集群服务

建立集群服务

技术分享图片

添加应用服务器

技术分享图片

 查看集群信息

技术分享图片

测试访问

技术分享图片

技术分享图片

技术分享图片

 
























以上是关于LVSDR模型配置的主要内容,如果未能解决你的问题,请参考以下文章

RealServer脚本

LVS之DR模式原理与实践

AJAX相关JS代码片段和部分浏览器模型

使用片段时 Intellij 无法正确识别 Thymeleaf 模型变量

php 一个自定义的try..catch包装器代码片段,用于执行模型函数,使其成为一个单行函数调用

VSCode自定义代码片段11——vue路由的配置