企业实战篇lvs(2)(LVS/DR原理的虚拟实现)

企业实战篇lvs(2)(LVS/DR原理的虚拟实现)

DR模式
DR(Direct Routing)直接路由模式
原理:
在一台主机上面搭建lvs服务器,设置LVS的工作模式是DR模式,LVS仅仅是一个调度器,它会把客户端的请求转发给后端服务器
DR(直接路由)模式直接由后端服务器把数据返回给客户端,不需要逆向发送数据包,此时lvs调度器叫做DS调度器(Director Server),RS是真正的后端web服务器(Real Server),LVS专注做调度时效率很高。

过程简单描述:
Client发送请求 --> DS(调度器) -->prerouting --> INPUT -->postrouting -->RS(Real Server)–>lo --> 网卡eth0 -->Client
具体过程:
1用户(client)发送请求给调度器(DS),DS调度器先把请求发往prerouting链(内核空间kernal
space),确定请求的是不是VIP。
2到了INPUT链之后,如果请求的是集群服务,会在这里修改MAC地址,把源MAC地址改为DS的MAC地址,把目的MAC地址改为RS的MAC地址,此时IP仍然不变,处理完成后把请求发往postrouting链。
3postrouting链检测请求的是否为RS(会检测请求的MAC地址),如果是,接受请求,把请求通过回环接口发给出口的网卡,再发回给客户端。

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

LVS/DR原理的虚拟实现

实验配置环境

创建四台虚拟机,更改ip地址

server2   172.25.0.2
server3   172.25.0.3
server4   172.25.0.4
server5   172.25.0.5

DR服务器设置

将server2作为DR服务器,另外的作为后端的服务器

后端服务器server3 server4设置

server3和server4中安装apache,并且写好测试页,以方便查看实验效果:

server3 server4添加VIP地址到eth0上

ip addr add 172.25.0.100/32 dev eth0

安装httpd服务

yum install httpd -y

server3编辑发布页面

[root@server3 ~]# cd /var/www/html/
[root@server3 html]# vim index.html
[root@server3 html]# cat index.html 
server3

server4编辑发布页面

[root@server4 ~]# cd /var/www/html/
[root@server4 html]# ls
index.html
[root@server4 html]# cat index.html 
server4

两个后端服务器server3和server4打开httpd服务

systemctl start httpd

server2的操作

step1因为lvs由两部分组成,分别为ipvs与ipvsadm,ipvs系统内核自带,所以只需要安装ipvsadm

yum install ipvsadm -y

ipvsadm常用命令

ipvsadm    -l##查看策略(解析ip与域名的对应关系,查看速度较慢)
ipvsadm   -ln#-n不解析(速度快)
ipvsadm -C   #清除表中所有的记录

step2 ipvsadm添加调度策略(使客户端访问时,通过调度策略连接到后端真实的服务器)

[root@server2 ~]# ipvsadm -A -t 172.25.0.100:80 -s rr  ##添加策略:tcp,当通过80端口访问172.25.254.100时,采用轮询的调度算法
[root@server2 ~]# ipvsadm -a -t 172.25.0.100:80 -r 172.25.0.3:80 -g  #tcp,通过80端口访问172.25.254.100,采用轮询的调度算法,使用DR(直接路由)模式,转发到172.25.0.3的80端口
[root@server2 ~]# ipvsadm -a -t 172.25.0.100:80 -r 172.25.0.4:80 -g#通过80端口访问172.25.254.100,采用轮询的调度算法,使用DR(直接路由)模式,转发到172.25.0.4的80端口
[root@server2 ~]# ipvsadm -a -t 172.25.0.100:80 -r 172.25.0.5:80 -g#通过80端口访问172.25.254.100,采用轮询的调度算法,使用DR(直接路由)模式,转发到172.25.0.5的80端口

step3 给server2 server3 server4 server5的网卡中分别添加VIP地址

[root@server2 ~]# ip addr add 172.25.0.100/32 dev eth0 ##添加VIP地址到eth0上
[root@server2 ~]# ip addr show 

注意:#32为d类ip地址,被应用于多点广播中,此处的/32即掩码设置为32,表示对外不可见
测试:
在这里插入图片描述

第一次实验结果:(出现问题,并没有出现轮巡,只可以访问到server3服务器)
在这里插入图片描述
原因:

因为发送方不知道接收方的物理地址,所以会进行广播,然后局域网中的机器进行抢答服务。绑定对应机器的mac地址
在这里插入图片描述
在server3中mac地址如下

 ether 52:54:00:54:df:8e  txqueuelen 1000  (Ethernet)

所以可以发现mac地址为server3的mac地址,所以由server3抢答成功,所以他回复,然后将内容存储起来。所以不会再进行轮训。

清除缓存以后,重新请求,可以发现这次由server4抢答成功
在这里插入图片描述
注意:
如果绑定的MAC地址是server2,则在server3和server4中轮询
如果绑定的MAC地址是sever3或sever4的,那么我们会发现,在测试端根本不会形成轮叫,而是直接去了MAC绑定的后端服务器 (显然这样在企业中是不允许的)
查看绑定Mac地址:
arp -an |grep 100
删除现有绑定ip地址:
arp -d 172.25.254.100

问题:在DR服务器实验中,怎么在相同的局域网中,完成轮巡调度

解决方法一:(利用arptables的相关策略)
要避免这种情况:必须只能绑定server1(调度器)的MAC地址
配置server2和server3的arp路由策略:为arptables网络的用户控制过滤的守护进程
在两个后端的服务器中安装arptables
arptables的作用:可以决定什么时候响应,什么时候不响应,在本实验中需要由调度器进行响应。server3和server4机器抢到后不进行响应。

yum whatprovides */arptables #搜索相关软件
yum   install arptables-0.0.4-8.el7.x86_64 -y

查看arptables 策略(目前没有策略)
在这里插入图片描述
两台机器需要改变一些策略

server3设置:
arptables -A INPUT -d 172.25.0.100 -j DROP #阻止输入为此ip地址的响应
arptables -A OUTPUT -s 172.25.0.100 -j mangle --mangle-ip-s 172.25.0.3 #阻止以前面一个ip进行回复
server4设置:
arptables -A INPUT -d 172.25.0.100 -j DROP #阻止输入为此ip地址的响应
arptables -A OUTPUT -s 172.25.0.100 -j mangle --mangle-ip-s 172.25.0.4 #阻止以前面一个ip进行回复

在这里插入图片描述
第二次实验结果(可以发现调度成功):
在这里插入图片描述
调度策略的次数如下所示:
在这里插入图片描述

如何解决宕机的问题

问题二:当一个服务器突然挂掉,这时候仍然会回复响应,如果有用户的话,体验性太差
在这里插入图片描述
解决方法:(需要安装ldirectord软件包)
真机查看
在这里插入图片描述
1配置HighAvailability源(解决依赖性,便于安装ldirectord)
在这里插入图片描述
在这里插入图片描述
2在server2调度器中安装软件ldirectord,这个软件可以解决挂掉后的问题

[root@server2 ~]yum install ldirectord-3.9.5-3.1.x86_64.rpm
[root@server2 ~]rpm -qpl ldirectord-3.9.5-3.1.x86_64.rpm #查看相关配置文件
[root@server2 ~]# cp /usr/share/doc/ldirectord-3.9.5/ldirectord.cf /etc/ha.d/
[root@server2 ~]# cd /etc/ha.d
[root@server2 ha.d]# ls
ldirectord.cf  resource.d  shellfuncs
[root@server2 ha.d]# vim ldirectord.cf #修改这个规则,可以实现自动的检查

修改配置文件
在这里插入图片描述
在这里插入图片描述
3清空以前的ipvsadm
在这里插入图片描述
4开启ldirectord(前提条件后端服务器开启httpd的服务)可以自动识别下面所示的内容

systemctl start ldirectord

在这里插入图片描述
结果为:在这里插入图片描述
5当关闭server3的httpd的服务后,显示如下。可以发现不再显示server3连接失败。
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值