码迷,mamicode.com
首页 > 其他好文 > 详细

LVS DR详解及配置演示--VIP和RIP在同一网段

时间:2020-09-17 17:18:12      阅读:49      评论:0      收藏:0      [点我收藏+]

标签:不同   完成   web测试   规划   ip首部   png   httpd服务   配置   lin   

DR模型示意图

技术图片

Director配置dip和vip, Real Server配置vip和rip

用户请求达到时我们期望VIP响应时只能是Director的vip响应,用户请求时请求的目标地址是VIP的地址,所以报文请求是送给Director 的,只有将请求报文发往Director Server,才能实现负载均衡效果,然后通过Director的ipvsadm配置的规则转发给其他RS,但这里是由问题的,因为我们也在Real Server配置vip地址,这样ARP广播请求时,Real Server也会响应,所以这里就要解决不用给Real Server响应ARP广播请求时。

请求报文格式为技术图片,当报文送到Director时,是不会动IP和TCP首部的,会拆除帧首部,拆除帧首部,是因为报文的目的地就是当前主机Director,然后查看IP和TCP首部,发现访问的是一个集群服务,为了实现LVS的DR模型效果,会在原有的IP首部之上封装了一个帧首部,这个帧首部由源MAC和目标MAC组成,而源MAC DR(Director)的MAC地址,目标MAC为RS(Real Server)的MAC地址,目标的RS是通过Director配置的负载均衡算法找出来的,当找出要转发到那个RS后,要找出这个RS的IP地址对应得MAC地址,这个通过ARP解析来查找,这样报文就找到从那个RS请求数据了。

1、DR模式的工作过程

第一步:用户对一个网站进行数据请求时,在浏览器输入网站域名,请求会被发送到DNS服务器进行域名解析,DNS服务器将域名解析成IP地址发送给客户端。

第二步:客户端拿到IP后通过网络访问该IP会到达IP所在地址的路由器,路由器将请求转发到内网中的交换机(内网的所有节点都在交换机上连接),由于此时请求的目标IP和目标mac都是DR的,所以该请求只能被DR接收,

第三步:DR接收到请求之后会在原有的IP首部之上重新进行封装一个帧首部,原来的IP首部不变, 这个帧首部由源MAC和目标MAC组成,而源MAC为DR的MAC地址,目标MAC为RS的MAC地址;

通过ipvsadm预先定义好的算法找出一个RS,当找出RS后,再找出这个RS的IP地址对应得MAC地址;将请求报文的目标mac改为找出的那个RS的mac最后将这个修改了mac地址的请求报文发送出去

第四步:因为这是内部网络,所有节点都会收到这个请求数据包后端的RS服务器判断收到的数据中的目标IP和目标mac是否与自己的相同,相同的会处理该数据包,不相同的自动丢弃 处理完成后,RS服务器会将结果通过交换机、路由器直接发送给客户端,不在经过DR

补充:

为了让DR和RS可以接受请求,就必须要使DR和所有的RS服务器有相同的IP,这个IP就是VIP(VirtualIP),为了防止引起IP冲突我们需要将VIP绑定在本地的网络回环接口之上(lo)

在所有多个节点都有一个相同的vip地址时,就会出现一个问题,客户端在请求获取mac地址的时候,就不可避免的出现arp争抢。

解决方法:
(1)、在路由器上绑定DR的IP和DR的MAC地址对应关系;
(2)、在RS服务器上设置arp抑制,即不让RS服务器对arp请求做应答,这样就保证了DR和RS服务器有相同VIP的情
况下客户端能准确获取DR的mac地址。
1)、在红帽系统系统中,使用arptables
(3)、kernel parameter,这里修改RealServer的的内核参数
----这个方法是通过修改系统内核参数来实现,正常都是使用这个方法来免的出现arp争抢

      修改内核的arp_announce和arp_ignore参数

我们做arp抑制后就会出现另一个问题:

Linux有一种行为,报文从那个接口出去,它接尽可能的使用者接口的IP地址进行响应,如果这个接口地址和网关不在同一个网段内,它就使用这个接口的别名地址,也就是说这个接口必须有一个地址和网关在同一个网段,而我们的LVS的DR模型的地址要求都是在同一网段内,当我们设置VIP在lo上的时候,就会出现,在RS中不使用VIP做为源地址响应客户端请求,而客户端请求的是VIP,这样就会有问题了。

解决:设置一个独特的路由,使VIP作为源地址响应客户端请求

ARP请求:获取ip所对应的mac地址

DR模式总结:
调度器(DR)仅仅修改的目标的mac地址;
响应报文是直接发送给客户端,不在经过调度器;
RS和DR必须在容一个局域网中;
DR无法修改请求报文中的目标端口,所以RS的端口必须和DR端口一致;
DR和所有RS服务器都需要配置相同的VIP;
所有的RS服务器都需要配置ARP抑制;
RS服务器必须可以和外网通信;
DR模式效率相对高,配置复杂,所以如果访问量小(pv<2000),建议用更简单的nginx haproxy。

开始配置测试LVS 的DR模型:----测试web服务的负载均衡功能:

一、实验环境:
使用VMware Workstattion来创建虚拟机做实验,创建3台虚拟机并安装系统,实验Centos7系统。
虚拟机网卡使用桥接模式,单网卡。

1、虚拟机配置如下:
技术图片

2、网络拓扑及地址规划
技术图片
图中VIP地址没有标注出来,Diretor和RealServer的VIP地址都设置为同一地址172.16.100.10/32

(1)、Diretor和RealServer虚拟机连接到模拟器的配置如下(Vlient-PC的配置类似):
技术图片

(2)、Client-PC虚拟机连接到模拟器的配置
技术图片

二、网络部分配置:

1、在交换机SW创建VLAN10 和VLAN20 ,并把接口加入VLAN中,配置VLAN虚接口地址:
划分VLAN和配置VLAN虚接口地址:

     [SW1] vlan batch 10 20

     [SW1] interface Vlanif 10
     [SW1-Vlanif10] ip address 172.16.100.254 255.255.255.0
     [SW1] interface Vlanif 20
     [SW1-Vlanif20] ip address 100.1.1.2 255.255.255.0

 配置把接口加入VLAN中:

     [SW1]interface GigabitEthernet0/0/1
     [SW1-GigabitEthernet0/0/1] interface GigabitEthernet0/0/1
     [SW1-GigabitEthernet0/0/1] port link-type access
     [SW1-GigabitEthernet0/0/1] port default vlan 10

 其他接口配置类似(略)

2、配置AR1路由器的地址:如下:

 [AR1]interface GigabitEthernet0/0/0
 [AR1-GigabitEthernet0/0/0]ip address 100.1.1.1 255.255.255.0
 [AR1-GigabitEthernet0/0/0]quit
 [AR1]interface GigabitEthernet0/0/1
 [AR1-GigabitEthernet0/0/1]ip address 192.168.10.254 255.255.255.0

3、配置静态路由(也可以通过配置动态路由解决路由问题):

  [AR1] ip route-static 172.16.100.0 255.255.255.0 GigabitEthernet0/0/0 100.1.1.2

  [SW1] ip route-static 192.168.10.0 255.255.255.0 Vlanif20 100.1.1.1

三、安装相关和配置地址

1、首先在Diretor和RealServer安装 httpd和ipvsadm,安装如下:

]# yum install httpd ipvsadm -y

2、 配置Diretor和RealServer主机地址,配置如下:

技术图片

Real Server2的地址配置
技术图片

3、测试网络
技术图片

四、配置Diretor的VIP地址和配置RealServer的VIP:

1、配置Diretor的VIP地址
因为这个VIP地址仅作为调度器调度时使用,所以在配置VIP地址的时候将其掩码
设置为32位掩码,地址设置为172.16.100.10,在Diretor的物理网卡上配置别名,作为设置VIP地址,
设置广播地址为只广播给自己(可以不用配置),配置如下:

[root@DR ~]# ifconfig ens33:0 172.16.100.10/32 broadcast 172.16.100.10
技术图片

DR的VIP设置后到RealServer上测试是否可通:

[root@RealServer1 ~]# ping 172.16.100.10
PING 172.16.100.10 (172.16.100.10) 56(84) bytes of data.
64 bytes from 172.16.100.10: icmp_seq=1 ttl=64 time=1.68 ms
64 bytes from 172.16.100.10: icmp_seq=2 ttl=64 time=1.42 ms

在Diretor上还需要配置路由,就是从那个接口出来的要从那个接口出去,这个Diretor不是必须配置:

[root@DR ~]# route add -host 172.16.100.10 dev ens33:0

2、配置RealServer:

1、首先修改RealServer的内核参数:
RealServer1:

[root@RealServer1 ~]# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore 
[root@RealServer1 ~]# echo 1 > /proc/sys/net/ipv4/conf/ens33/arp_ignore 
[root@RealServer1 ~]# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce 
[root@RealServer1 ~]# echo 2 > /proc/sys/net/ipv4/conf/ens33/arp_announce 

RealServer2:

[root@RealServer2 ~]# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore 
[root@RealServer2 ~]# echo 1 > /proc/sys/net/ipv4/conf/ens33/arp_ignore 
[root@RealServer2 ~]# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce 
[root@RealServer2 ~]# echo 2 > /proc/sys/net/ipv4/conf/ens33/arp_announce 

2、配置RealServer的VIP地址,配置在lo的接口别名上:

设置为32位掩码,地址设置为172.16.100.10,在RealServer的lo网卡上配置别名,作为设置VIP地址,
设置广播地址为只广播给自己:

RealServer1:

[root@RealServer1 ~]# ifconfig lo:0 172.16.100.10/32 broadcast 172.16.100.10

在RealServer上还需要配置路由,就是从那个接口出来的要从那个接口出去,这在RealServer上必须配置:

[root@RealServer1 ~]#  route add -host 172.16.100.10 dev lo:0

RealServer2:

[root@RealServer2 ~]# ifconfig lo:0 172.16.100.10/32 broadcast 172.16.100.10

在RealServer上还需要配置路由,就是从那个接口出来的要从那个接口出去,这在RealServer上必须配置:

[root@RealServer2 ~]#  route add -host 172.16.100.10 dev lo:0

在RealServer中配web测试页面,为了能看到负载均衡效果,在两台RealServer中配置不同页面,如下:

[root@RealServer1 ~]# echo ‘RS1.hujn.com‘ > /var/www/html/index.html 
[root@RealServer2 ~]# echo ‘RS2.hujn.com‘ > /var/www/html/index.html 

然后在Diretor和RealServer中启动httpd服务:

# systemctl start httpd 

五、lvs的修改配置:

1、配置添加集群服务,在DR(Director Server)上添加集群服务:

(1)、在DR(Director Server)上添加集群服务:

     [root@DR ~]# ipvsadm -A -t 172.16.100.10:80 -s rr

(2)、在已经添加的集群服务中,添加(RS)Real Server,添加两台Real Server,如下:

     [root@DR ~]# ipvsadm -a -t 172.16.100.10:80 -r 172.16.100.21 -g 
     [root@DR ~]# ipvsadm -a -t 172.16.100.10:80 -r 172.16.100.22 -g 

(3)、查看添加结果:
技术图片

2、使用浏览器打开web页面,然后刷新,看看是否会轮询显示,在两台RS上设置的两个web页面,
打开也使用的地址是使用VIP地址,即172.16.100.10这个地址,如下:

在Client-PC上访问:

第一次显示结果
技术图片
刷新后,第二显示结果:
技术图片

从测试中可知道,页面实现了负载的效果,即轮询访问了不同的服务器。

LVS DR详解及配置演示--VIP和RIP在同一网段

标签:不同   完成   web测试   规划   ip首部   png   httpd服务   配置   lin   

原文地址:https://blog.51cto.com/75368/2529312

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!