Keepalive + Lvs 实现高可用负载均衡


实验环境:
封装一台版本为redhat7.6的操作系统,配置好yum源(通过宿主机的httpd服务,搭建网络仓库),本地解析,关闭防火墙以及selinux,再清理过滤和压缩后克隆域名分别为vm1、vm2、vm3、vm4, 主机名分别为server11、server12、server13、server14的四台虚拟机。
给四台主机分别配置好各自的ip地址使互相可以ping通。

4层负载平衡:

将网络流量负载平衡到多个服务器的最简单方法是使用第4层(传输层)负载平衡。以这种方式进行负载均衡将根据IP范围和端口转发用户流量
用户访问负载均衡器,负载均衡器将用户的请求转发给后端服务器的Web后端组。无论选择哪个后端服务器,都将直接响应用户的请求。通常,Web后端中的所有服务器应该提供相同的内容 - 否则用户可能会收到不一致的内容。

一、lvs 的四种工作模式

  • DR 工作模式

当用户访问lvs调度器(vs)上的vip时,是通过修改请求报文的目标mac地址,在数据链路层通过调度算法将请求转发给真实服务器(rs),而真实服务器响应后的处理结果直接返回给客户端用户;所以说,vs 和rs 要都有vip,只是用arptables 处理了rs在数据链路层arp转发。由于必须处于同一vlan下,受到了局限性,但是其工作效率很高。client --> vs --> rs --> client
DR的不足:LVS - RS 间必须在同一个VLAN
RS上绑定VIP,风险太大

  • NAT 工作模式

通过网络地址转换的方法来实现调度的。首先调度器(LB)接收到客户的请求数据包时(请求的目的IP为VIP),根据调度算法决定将请求发送给哪个后端的真实服务器(RS)。然后调度就把客户端发送的请求数据包的目标IP地址及端口改成后端真实服务器的IP地址(RIP),这样真实服务器(RS)就能够接收到客户的请求数据包了。真实服务器响应完请求后,查看默认路由(NAT模式下我们需要把RS的默认路由设置为LB服务器。)把响应后的数据包发送给LB,LB再接收到响应包后,把包的源地址改成虚拟地址(VIP)然后发送回给客户端。client --> vs --> rs --> vs --> client
相当于数据流进入到VS时,做了一次DNAT,从VS出去的时候做了一次DNAT
NAT 不足: RS/ROUTER 要配置策略路由

  • TUN 工作模式(隧道工作模式)

客户请求包封装在一个IP tunnel里面,然后发送给RS节点服务器,节点服务器接收到之后解开IP tunnel后,进行响应处理。并且直接把包通过自己的外网地址发送给客户不用经过LB服务器
TUN不足:RS配置复杂(IPIP模块),RS上绑定VIP,风险比较大

  • FULLNAT 工作模式(不是系统自带)

引入local address(内网ip地址),cip-vip转换为lip->rip,而 lip和rip均为IDC内网ip,可以跨vlan通讯

LVS在大规模网络中应用存在不足
各转发模式,网络拓扑复杂,运维成本高
和商用LB设备相比
缺少TCP标志位DDOS攻击防御
主备部署方式不足
性能无法线性扩展

二、关于实现httpd的负载均衡

【利用DR工作模式和轮询调度算法实现】

调度器:
yum install -y ipvsadm | 安装lvs管理器

ipvsadm -A -t 172.25.0.100:80 -s rr | 添加虚拟IP,‘rr’ 轮询调度算法
ipvsadm -a -t 172.25.0.100:80 -r 172.25.0.12:80 -g ipvsadm -a -t 172.25.0.100:80 -r 172.25.0.13:80 -g | 添加虚拟IP的rs服务器
ipvsadm -ln | 查看lvs 调度器
在这里插入图片描述
rs端:
server12和server13上开启httpd服务
为观察方便 把测试页写成各自的主机名
并添加虚拟ip 172.25.0.100,

访问测试:
curl 172.25.0.100来测试
访问到的测试页为两台机子轮询,实现了负载均衡
在这里插入图片描述
arp -an | grep 100可以查看收到arp报文对应的mac地址
在这里插入图片描述
arp -d 172.25.3.100 | 删除指定ip的arp缓存

但这样不是很安全,因为server12和13他们同样有虚拟ip,宿主机访问虚拟ip时也可能会被这两台机子抢去而访问它,这就会使调度器无用,为了避免这类问题,我们给两台rs服务器添加相应的规则来使他们的虚拟IP不被直接访问。

rs服务器端:
yum install arptables -y| 安装arp防火墙
systemctl start arptables| 开启服务
添加arptables访问规则
在这里插入图片描述在这里插入图片描述
访问测试:
这样在测试时就不会直接访问到以172.25.0.100为ip的server12 和server13,只会先访问调度器,通过调度器的设定来访问rs服务器
在这里插入图片描述

三、keepalive + lvs

针对若rs服务器出现故障或者调度器单点故障等问题,keepalive很好的解决了相应的问题,健康检查和失败切换(LVS冗余)是keepalived的两大核心功能。利用keepalive中的vrrp协议实现高可用解决单点故障,TCP_CHECK实现对后端rs进行健康检测。

keepalive服务会自动添加虚拟ip和编写ipvsadm规则,所以可以把之前添加过的删掉。

在server11和server14上
yum install keepalive -y
修改server11配置文件,让server11做主用机
在这里插入图片描述
在这里插入图片描述
启动keepalive自动生成规则
在这里插入图片描述
备用主机(server14):
其他与主用机的内容一样,只需改它的状态和优先级
在这里插入图片描述
启动服务

访问测试:
在这里插入图片描述

当server11的keepalive停止之后,vip会自动漂移到server14上,不会影响客户端对后端服务器的访问
在这里插入图片描述

但是设置成主备机时,当server11的keepalive重新启动时,会抢占资源。
在这里插入图片描述
若不想被抢占,则可修改server11主用机的配置文件,当重启服务时,vip 就不会从server14自动漂移到server11上
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值