LVS+Keepalived实现负载均衡和高可用

1、LVS三种模式:

LVS四层负载均衡

引入虚拟服务(virtual ip,VIP)的原因,早期服务器少,使用DNS作负载均衡,DNS容易被直接破坏

DNS负载均衡:

LVS+Keepalived实现负载均衡和高可用_第1张图片

引入虚拟服务(vip)

LVS+Keepalived实现负载均衡和高可用_第2张图片

LVS是4层负载均衡,LVS三种模式,DR、NAT、隧道TUN

DR模式工作在数据链路层,

1.1DR模式:client客户端 -> VS -> RS -> client

LVS+Keepalived实现负载均衡和高可用_第3张图片

整个架构在同一个VLAN是因为要走二层数据链路层,不经过路由。arp协议工作。

LVS+Keepalived实现负载均衡和高可用_第4张图片

client:客户端(宿主机38)   VS:调度器(server1,有vip)   rs:real server(server2、3 均有vip)

客户端请求vs调度器,vs上面有vip,vs调度到后端的rs;

数据包ip:cip(源地址)>vip(目标地址),mac地址:dmac>rmac,dmac是目标,是vs的mac。

整个过程中目标地址不变都是vip。DR,最主要在二层数据链路层,数据包到达vs上,没改数据包源地址和目标地址,把数据包的mac地址改为real server的mac地址是lvs三种模式最佳的,检测到mac改变为real server的mac,通过vs上FORWARD转发数据包到rs上,在向上第三层网络层解,然后rs上需要vip解(rs如果没有vip,数据包转到rs上时没有vip,数据包被丢弃,客户端访问失败)

1、经过vs的时候更改mac,通过mac转发,到数据链路层,到rs(real server),再往上解

2、real server上作arp屏蔽,调度器和rs都在同一个VLAN交换机上,客户端访问vip时候,有可能rs直接访问vip,导致无法负载均衡。

两条策略:直接访问server2、3的vip是被禁止的:此策略加到server2、3的INPUT链(进入server2、3时);OUTPUT链上加策率,不能对外广播。源地址是254.100时进行源地址转换,转换ip为172.25.254.2(正常调度到server2,server2使用vip254.100完成三次握手后,转换为254.2)

DR详细图:

LVS+Keepalived实现负载均衡和高可用_第5张图片

1.2NAT模式:client客户端 -> VS -> RS -> VS -> client原路经返回

进来时在input链作DNAT(目标地址重定向)

出去时作SNAT(源地址重定向),原路经返回

所有RS网关要指向vs调度器,到rs后又要回包到调度器

LVS+Keepalived实现负载均衡和高可用_第6张图片

1.3TUN隧道模式:client客户端 -> VS -> RS -> client,

虚拟隧道,通过隧道协议对原数据包进行封装,但数据包会增加一个ip头(所以数据包的数据帧要预留一个位填充ip头),real server要求有ipip模块(能满足隧道协议) ,real server上解封装拿到ip头(源地址、目标地址信息),rs也要vip,通过源地址、目标地址返回客户端。

工作方式:把原始cip、vip通过ipip模块(隧道协议)封包,到达rs之后解包,解包之后拿到地址依旧是cip和vip,所以rs上也要增加vip

LVS+Keepalived实现负载均衡和高可用_第7张图片

TCP7层及协议工作

图文并茂:16张图详解网络协议 - 知乎icon-default.png?t=M5H6https://zhuanlan.zhihu.com/p/517011243

LVS+Keepalived实现负载均衡和高可用_第8张图片

2、使用LVS DR模式的问题:

问题1:某台real server down了,怎么办?

上一篇LVS存在弊端:

调度器对后端的real server没有健康检查,不知道后端real server是否出现故障,从而无法更新调度列表,把故障的主机从调度列表中去掉,直接影响客户端宿主机38的访问。

server2上停止httpd服务:

 在客户端宿主机38访问172.25.254.100,调度server3成功,server2全失败,导致 一半访问失败

LVS+Keepalived实现负载均衡和高可用_第9张图片

但是查看调度器,调度策略增加表示正常调度 ,意味着调度器对后端的real server没有健康检查,不知道后端real server是否出现故障LVS+Keepalived实现负载均衡和高可用_第10张图片

server2上打开httpd:

 

 在客户端宿主机38访问172.25.254.100,正常论调;查看调度器,调度策略增加表示正常调度LVS+Keepalived实现负载均衡和高可用_第11张图片

上述说明调度器对后端的real server没有健康检查,不知道后端real server是否出现故障

某台real server down了,调度到此real server上的全部失败,但是调度器调度策略显示正常。待解决没有健康检查问题

问题2:LVS本身down了,怎么办?

指令依次为显示lvs策略(有策略);清除策略;显示策略(没策略)

LVS+Keepalived实现负载均衡和高可用_第12张图片

 宿主机38(客户端)上curl 172.25.254.100时,由于lvs本身down了,所以调度全部失败LVS+Keepalived实现负载均衡和高可用_第13张图片

解决上述问题1、2:某台real server down了    ---健康检测

                               lvs本身down了    ---LVS冗余

3、LVS+Keepalived负载均衡+高可用

LVS+Keepalived实现负载均衡和高可用_第14张图片

   -健康检测:支持4/7监测;

   -主备冗余:采用VRRP协议的HeartBeat;

   -如何配置:更改keepalived主配置文件:/etc/keepalived/keepalived.conf

实验前:快照虚拟机vm4:

使用母镜像base7.6-new.qcow2快照新的虚拟机硬盘文件vm4

使用虚拟机硬盘文件新建虚拟机

内存 2048 cpus=2 ;虚拟机名称vm4 ;网络选择网桥br0

LVS+Keepalived实现负载均衡和高可用_第15张图片

 进入虚拟机vm4,更改hostname和ip,重启网络

 LVS+Keepalived实现负载均衡和高可用_第16张图片

 

开始配置Keepalived+LVS:

 server1和server4作高可用集群,用来负责LVS冗余;server1用作主节点(MASTER),server2用作备份节点(BACKUP)。

1、server4上安装ipvsadm

 server1上安装keepalived:

 server1和server4作免密(copy文件方便一点),并且server4上下载keepalived(使用server1  ssh远程  server4下载)LVS+Keepalived实现负载均衡和高可用_第17张图片

LVS+Keepalived实现负载均衡和高可用_第18张图片

 server1上安装mail软件,用来发邮件和查看邮件

2、 server1上修改keepalived主配置文件:

配置文件只有下面三部分:

 配置文件第1部分:LVS+Keepalived实现负载均衡和高可用_第19张图片

心跳验证:server1(MASTER主节点)上每秒一直发送心跳给server4从节点,当server1挂掉后,发送停止,从节点server4知道主节点down掉了,从节点状态从BACKUP变为MASTER;当主节点server1好了,重启keepalived服务后(可设置开机自启),server1因为优先级高,又变为MASTER状态,server4从节点状态又变为BACKUP状态

 配置文件第2部分:

LVS+Keepalived实现负载均衡和高可用_第20张图片 上面配置操作:删除vip,查看没有vip172.25.254.100;删除lvs策略,之前已经删除,ipvsadm -ln查看已无策略。LVS+Keepalived实现负载均衡和高可用_第21张图片

 配置文件第3部分:LVS+Keepalived实现负载均衡和高可用_第22张图片

 把此配置文件发给server4:

 server4上还要更改状态和优先级:

LVS+Keepalived实现负载均衡和高可用_第23张图片

3、开始测试:

 先启动server1上keepalived服务,查看日志

LVS+Keepalived实现负载均衡和高可用_第24张图片

ip addr发现server1上成功自动添加vip

LVS+Keepalived实现负载均衡和高可用_第25张图片 ipvsadm -ln发现server1上策略成功自动添加

LVS+Keepalived实现负载均衡和高可用_第26张图片备机server4上启动服务,看日志,当前是BACKUP状态,ip addr查看没有VIP

LVS+Keepalived实现负载均衡和高可用_第27张图片

 客户端38上,curl 172.25.254.100,成功调度;

LVS+Keepalived实现负载均衡和高可用_第28张图片

测试1:real server down掉,down掉server2:

server1上查看策略:

 坏掉的节点server2在调度策略中被移除,并收到邮件提示server2已经DOWN掉,对后端成功健康监测。

LVS+Keepalived实现负载均衡和高可用_第29张图片

 策略更新后,客户端38上,curl 172.25.254.100,成功健康监测,调度器调度到server3LVS+Keepalived实现负载均衡和高可用_第30张图片

 调度策略正确LVS+Keepalived实现负载均衡和高可用_第31张图片

 恢复server2后

 调度策略中server2恢复,加入列表中

server1上mail查看邮件,server2恢复,加入列表中

LVS+Keepalived实现负载均衡和高可用_第32张图片

 客户端38上,curl 172.25.254.100,成功论调;LVS+Keepalived实现负载均衡和高可用_第33张图片

测试2:lvs down掉了

server1上reboot重启,server4上直接接管VIP

LVS+Keepalived实现负载均衡和高可用_第34张图片

 server4查看日志:成为MASTER状态,并且向网内发布arp,广播vip在server4上,使客户端更新arp缓存信息。LVS+Keepalived实现负载均衡和高可用_第35张图片

 server4上有调度策略LVS+Keepalived实现负载均衡和高可用_第36张图片

 客户端38上,curl 172.25.254.100,成功论调; server4上调度策略正常增加LVS+Keepalived实现负载均衡和高可用_第37张图片

server1重启后,重新打开keepalived服务,又将VIP抢过来,因为server1优先级为100大于server4优先级50。

LVS+Keepalived实现负载均衡和高可用_第38张图片

查看server1日志为MASTER,server4日志又变为BACKUP

LVS+Keepalived实现负载均衡和高可用_第39张图片

 server4上:

你可能感兴趣的:(运维,linux)