LVS的DR(Direct Routing)直接路由模式

LVS的背景:

Internet的快速增长使多媒体网络服务器面对的访问数量快速增加,服务器需要具备提供大量并发访问服务的能力,因此对于大负载的服务器来讲,CPU、I/O处理能力很快会成为瓶颈。由于单台服务器的性能总是有限的,简单的提高硬件性能并不能真正解决这个问题。为此,必须采用多服务器和负载均衡技术才能满足大量并发访问的需要。Linux虚拟服务器(Linux Virtual Servers,LVS)使用负载均衡技术将多台服务器组成一个虚拟服务器。它为适应快速增长的网络访问需求提供了一个负载能力易于扩展,而价格低廉的解决方案。

LVS结构与工作原理

LVS由前端的负载均衡器(Load Balancer,LB)和后端的真实服务器(Real Server,RS)群组成。RS间可通过局域网或广域网连接。LVS的这种结构对用户是透明的,用户只能看见一台作为LB的虚拟服务器(Virtual Server),而看不到提供服务的RS群。当用户的请求发往虚拟服务器,LB根据设定的包转发策略和负载均衡调度算法将用户请求转发给RS。RS再将用户请求结果返回给用户。同请求包一样,应答包的返回方式也与包转发策略有关。

LVS的包转发策略:

1.NAT (Network Address Translation)模式。LB收到用户请求包后,LB将请求包中虚拟服务器的IP地址转换为某个选定RS的IP地址,转发给RS;RS将应答包发给LB,LB将应答包中RS的IP转为虚拟服务器的IP地址,回送给用户。
2.IP隧道 (IP Tunneling)模式。LB收到用户请求包后,根据IP隧道协议封装该包,然后传给某个选定的RS;RS解出请求信息,直接将应答内容传给用户。此时要求RS和LB都要支持IP隧道协议。
3.DR(Direct Routing)模式。LB收到请求包后,将请求包中目标MAC地址转换为某个选定RS的MAC地址后将包转发出去,RS收到请求包后,可直接将应答内容传给用户。此时要求LB和所有RS都必须在一个物理段内,且LB与RS群共享一个虚拟IP。

DR模式的LVS

DR模式下调度器和服务器组都必须在物理上有一个网卡通过不分段的局域网相连,即通过交换机或者高速的HUB相连,中间没有隔有路由器。VIP地址为调度器和服务器组共享,调度器配置的VIP地址是对外可见的,用于接收虚拟服务的请求报文;所有的服务器把VIP地址配置在各自的Non-ARP网络设备上,它对外面是不可见的,只是用于处理目标地址为VIP的网络请求。

在这里插入图片描述

一.搭建DR模式的LVS

1.在虚拟服务器上配置更高级yum源
在这里插入图片描述

vim /etc/yum.repos.d/rhel-source.repo 
[rhel-source]
name=Red Hat Enterprise Linux $releasever - $basearch - Source
baseurl=http://172.25.1.250/source6.5
enabled=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release

[HighAvailability]    #高可用性
name=HighAvailability
baseurl=http://172.25.1.250/source6.5/HighAvailability
gpgcheck=0

[LoadBalancer]
name=LoadBalancer
baseurl=http://172.25.1.250/source6.5/LoadBalancer   #负载均衡
gpgcheck=0

> LoadBalancer:
> 可以将来自客户端的请求分发到不同的服务器,通过将一系列的请求转发到不同的
> 服务器可以提高服务器的性能,并可以自动地寻找最优的服务器转发请求,
> 这样不仅提高了系统性能,同时达到了负载均衡的目的,满足了用户需求,因此
> LoadBalancer 在应用场景中一般处于 web 服务器的前端,用来均衡发到 web
> 服务器的请求量,均衡负载,提高系统性能。LoadBalancer 可以连接多个 
> web server,从而将多个 web server组成一个集群(cluster),
> 集群中负载的分配通过 loadBalancer进行控制和管理。
> 当然为了更好地进行负载均衡,LoadBalancer 也可以构建为一个集群,
> 使用 LoadBalancer 构建的 web  server cluster


[ResilientStorage]      #弹性存储
name=ResilientStorage
baseurl=http://172.25.1.250/source6.5/ResilientStorage
gpgcheck=0

[ScalableFileSystem]    #可扩展文件系统
name=ScalableFileSystem
baseurl=http://172.25.1.250/source6.5/ScalableFileSystem
gpgcheck=0

2.yum repolist查看生成的yum包包括之前的还有新加进去的

在这里插入图片描述

3.在server1(虚拟服务器)上安装ipvsadm(调度器)
ipvsadm是管理集群服务的命令行工具,用于管理LVS的策略规则
显示调度次数ipvsadm -L (-n不解析)
在这里插入图片描述

4.server1添加一台虚拟设备

ipvsadm -A -t 172.25.75.100:80 -s rr

	  #-A 增加一台虚拟设备
      #-t --tcp-service  service-address
  	  #-s scheduler      one of rr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq 
  	  #为了实验效果明显,我们采用rr算法 (轮叫)

在这里插入图片描述

5.server1添加后端实际服务器

 ipvsadm -a -t 172.25.75.100:80 -r 172.25.75.2:80 -g
 ipvsadm -a -t 172.25.75.100:80 -r 172.25.75.3:80 -g

6.给server1(虚拟服务器),server2,server3添加ip172.25.75.100

ip addr add 172.25.75.100/24 dev eth0

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

7.测试
在物理机端(测试端)访问172.25.75.100,查看缓存的MAC地址
在物理机端:arp -d 172.25.75.100 删除现有绑定MAC地址

curl 172.25.70.100    #重新获得ip和MAC地址
arp -an | grep 100    #查看绑定的MAC地址

#server1的MAC:52:54:00:8a:3a:bc
#server2的MAC:52:54:00:85:7a:f7
#server3的MAC:52:54:00:de:7c:57

MAC地址缓存的是server2时,无法轮询
在这里插入图片描述
MAC地址缓存的是server3时,无法轮询
在这里插入图片描述
如果绑定的MAC地址是sever2或sever3的,那么我们会发现,在测试端根本不会形成轮叫,而是直接去了MAC绑定的后端服务器。

注意: 此时的客户端进行访问的时候,会随机选取,后端谁抢到就是谁的,(因为arpip广播)

8.在server2和server3中下载yum install -y arptables_jf,防止在物理机中测试时直接访问server2和server3
server2中

yum install -y arptables_jf
========================================
arptables -A IN -d 172.25.75.100 -j DROP   
# 当网内广播需要172.25.75.100这个ip时,它丢弃所有网内的请求
arptables -A OUT -s 172.25.75.100 -j mangle --mangle-ip-s 172.25.75.2
# 当它自身需要在网内发包时,伪装为自己原本的ip172.25.75.2
/etc/init.d/arptables_jf save   #保存添加的两条策略
/etc/init.d/arptables_jf start  #打开arptables服务

server3中

yum install -y arptables_jf
========================================
arptables -A IN -d 172.25.75.100 -j DROP   
# 当网内广播需要172.25.75.100这个ip时,它丢弃所有网内的请求
arptables -A OUT -s 172.25.75.100 -j mangle --mangle-ip-s 172.25.75.3
# 当它自身需要在网内发包时,伪装为自己原本的ip172.25.75.2
/etc/init.d/arptables_jf save   #保存添加的两条策略
/etc/init.d/arptables_jf start  #打开arptables服务

9.在测试端测试

arp -d 172.25.75.100
curl 172.25.75.100
arp -an | grep 100

在这里插入图片描述

在实验过程中,第一次实验可能会出现轮询,但删除max地址后不再轮询,是因为物理机缓存了后端服务器的数据。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值