linux企业运维--LVS负载均衡集群

一、LVS简介

LVS(Linux Virtual Server)即Linux虚拟服务器,是一个虚拟的服务器集群系统,可以在unix/linux平台下实现负载均衡集群功能。LVS是一种集群(Cluster)技术,采用IP负载均衡技术和基于内容请求分发技术。调度器具有很好的吞吐率,将请求均衡地转移到不同的服务器上执行,且调度器自动屏蔽掉服务器的故障,从而将一组服务器构成一个高性能的、高可用的虚拟服务器。整个服务器集群的结构对客户是透明的,而且无需修改客户端和服务器端的程序。
根据LVS工作模式的不同,真实服务器会选择不同的方式将用户需要的数据发送到终端用户,LVS工作模式分为NAT模式、TUN模式、以及DR模式。

二、DR模式

DR模式:

(直接路由模式:Virtual Server via Direct Routing) 
DR模式是通过改写请求报文的目标MAC地址,将请求发给真实服务器的,而真实服务器响应后的处理结果直接返回给客户端用户。同TUN模式一样,DR模式可以极大的提高集群系统的伸缩性。而且DR模式没有IP隧道的开销,对集群中的真实服务器也没有必要必须支持IP隧道协议的要求。但是要求调度器LB与真实服务器RS都有一块网卡连接到同一物理网段上,必须在同一个局域网环境。DR模式是互联网使用比较多的一种模式。
该模式中LVS仅承担数据的入站请求以及根据算法选出合理的真实服务器,最终由后端真实服务器负责将响应数据包发送返回给客户端。与隧道模式不同的是,直接路由模式(DR模式)要求调度器与后端服务器必须在同一个局域网内,VIP地址需要在调度器与后端所有的服务器间共享,因为最终的真实服务器给客户端回应数据包时需要设置源IP为VIP地址,目标IP为客户端IP,这样客户端访问的是调度器的VIP地址,回应的源地址也依然是该VIP地址(真实服务器上的VIP),客户端是感觉不到后端服务器存在的。由于多台计算机都设置了同样一个VIP地址,所以在直接路由模式中要求调度器的VIP地址是对外可见的,客户端需要将请求数据包发送到调度器主机,而所有的真实服务器的VIP地址必须配置在Non-ARP的网络设备上,也就是该网络设备并不会向外广播自己的MAC及对应的IP地址,真实服务器的VIP对外界是不可见的,但真实服务器却可以接受目标地址VIP的网络请求,并在回应数据包时将源地址设置为该VIP地址。调度器根据算法在选出真实服务器后,在不修改数据报文的情况下,将数据帧的MAC地址修改为选出的真实服务器的MAC地址,通过交换机将该数据帧发给真实服务器。整个过程中,真实服务器的VIP不需要对外界可见。

在这里插入图片描述

原理:

LVS通过控制IP来实现负载均衡。ipvsadm是其具体的实现模块。

1.当客户端请求VIP时,会将请求先发给LVS(调度器)
2.调度器发现请求的是一组集群服务,根据调度算法将这一请求转发给RealServer,注意在转发的过程中,仅仅是修改了数据报文中的MAC地址,所以这也是为什么我们要求LVS和RS必须在同一个物理网络内,就是为了保证可以通过修改MAC地址而进行数据报文的转发。
3.当RealServer处理请求,响应数据,发送响应数据给客户端,按理说此时的数据包的源IP为RIP,目标IP为CIP,虽然能找到客户端,但是客户端是不收该数据包的,因为并没有请求该RIP ,现在的做法就是进行IP欺骗,即就是修改源 IP 为 VIP,但是不可以将VIP设置在出口网卡上,否则会响应客户端的arp request,造成client/gateway arp table紊乱,以至于整个load balance都不能正常工作。要在lo接口上配置VIP,并将此 VIP 屏蔽,但是出去时候的数据包被路由转换,转换后的 IP不再是 VIP,所以要重新设置路由。
另外关于各服务器网络的配置,首先每个服务有一个独立网卡即可。在LVS上将DIP配置eth0上,将VIP配置在网络别名上,这样是为了以后调度器做高可用方便VIP做IP地址飘移。在各RS上同样需要配置好VIP,这样个RS就可以直接响应Client,而不需要再经过DR,但是一个物理网络之内是不允许有多个同名IP的,所以需要修改RS的内核参数,并且将VIP配置在LO上,让其保留VIP但是不允许对外进行广播,这样从RS出去的报文源地址就是VIP,当然这需要从真实的物理网卡出去,所以必须加一条路由,让访问VIP的数据包请求,对其响应的是配置了VIP的网卡,这样响应出去的报文源地址就是VIP,可以被Client接受。

ipvsadm的主要作用:

安装在调度器上面,在调度器上虚拟一个对外访问的IP(VIP)。用户访问VIP,到达调度器,调度器根据一定的规则选择一个真实服务器,处理完成后然后返回给客户端数据。

三、使用DR模式实现负载均衡

(1)实验环境:server1为调度器,负载流量均衡(基于4层即传输层进行调度,调度算法有WRR/WLC等,传输协议为TCP/UDP),server2和server3为真实服务器节点。
(2)server1安装ipvsadm(用于用户端管理LVS的策略规则)
(3)书写策略:在server1上添加虚拟一个对外访问的IP:172.25.33.100(vip),即提供虚拟服务的ip地址,也可以直接用原有IP,但最好独立出来
请添加图片描述
请添加图片描述
在这里插入图片描述(4)ipvsadm -A 添加规则;-t tcp协议;-s 调度;rr 轮叫

-a向tcp虚拟服务添加
-r real server
-g 直连即DR模式
ipvsadm -ln:查看当前连接情况(-ln不用解析)
在这里插入图片描述
(5)server2和server3安装httpd服务,并开启

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
此时真机使用curl 192.168.3.100可以显示server的发布页面,但curl 192.168.3.100没有反应,这是因为LVS-DR集群类型要求,当用户向vip发起请求时,调度器和真实服务器上必须都要有vip,因此需要给server2和server3添加虚拟IP。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
请添加图片描述
(6)server2和server3分别添加vip
请添加图片描述
此时真机使用curl 172.25.33.100,出现轮叫
在这里插入图片描述

(7)ARP协议是将IP地址映射为MAC地址的协议,其在协议上使用ARP请求及ARP应答报文来实现

arp -d是删除ARP缓存列表的命令,可以删除所有的ARP缓存,也可以删除指定的ARP缓存

此时使用arp -an查看本地ARP缓存的192.168.3.100对应的MAC地址为调度器server1的地址,当真机执行arp -d 删除指定虚拟IP的ARP缓存后,此时不能过滤得到172.25.33.100的MAC地址。再次Ping之后又可以得到,但是是server3的地址,不是调度器的地址(谁先响应就缓存谁的MAC地址)

此时curl 172.25.33.100,只出现了server2的发布页面,说明此时客户端向vip发起请求时,并没有经过调度器直接到达了真实服务器
在这里插入图片描述
(8)为了解决这一问题,需要给server2和server3安装ARP防火墙arptables(用于管理内核中的ARP包过滤规则表)

请添加图片描述
请添加图片描述
设定APR配置规则,DR模式要求服务器节点应该禁掉设备的APR响应

arptable_filter 只有一个表 filter ,不指定 -t 表名时默认就是 filter 表。
filter表有三个链,一个是INPUT,表示外面发进来的ARP包;另外一个是OUTPUT,表示本机发出的ARP包;第三个是FORWARD,转发ARP包。
-A:向规则链中追加规则;
-d:指定要匹配ARP包的目的IP地址;
-j:指定满足添加的规则时执行的动作;
-s:指定要匹配ARP包的源ip地址;
-g:直连
-r:真实服务器地址

当数据包的目的地址时100时就丢弃该数据包,当从本机发送出的数据包IP是100时,mangle转换数据包源地址,伪装源地址IP为172.25.0.2。
请添加图片描述设定完毕,保存arptables规则,此时重启arptables服务后,即可看到所添加的规则。
请添加图片描述
请添加图片描述
此时当真机执行arp -d 删除指定的虚拟IP,ping 之后,过滤得到172.25.33.100的MAC地址是server1的MAC地址,此时使用curl 172.25.33.100,可以轮叫
在这里插入图片描述

NAT模式(masq)

网络地址转换(Virtual Server via Network Address Translation)
NAT(network address translation) 网络地址转换,其主要原理是修改数据报头,使得位于企业内部的私有ip地址可以访问外王,以及外部用户可以访问位于公司内部的私有的ip主机。
这个是通过网络地址转换的方法来实现调度的。首先调度器(LVS)接收到客户的请求数据包时(请求的目的IP为VIP),根据调度算法决定将请求发送给哪个后端的真实服务器(RS)。然后调度就把客户端发送的请求数据包的目标IP地址及端口改成后端真实服务器的IP地址(RIP),这样真实服务器(RS)就能够接收到客户的请求数据包了。真实服务器响应完请求后,查看默认路由(NAT模式下我们需要把RS的默认路由设置为LB服务器。)把响应后的数据包发送给LVS,LVS再接收到响应包后,把包的源地址改成虚拟地址(VIP)然后发送回给客户端。
在这里插入图片描述

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值