目录

  • 一、keepalived是什么?
  • 二、问题解决
  • 1.某台RS down 了
  • 1.lvs down 了

一、keepalived是什么?

Keepalived起初是为LVS设计的,专门用来监控集群系统中各个服务节点的状态,它根据TCP/IP参考模型的第三、第四层、第五层交换机制检测每个服务节点的状态,如果某个服务器节点出现异常,或者工作出现故障,Keepalived将检测到,并将出现的故障的服务器节点从集群系统中剔除,这些工作全部是自动完成的。Keepalived 是以 VRRP(Virtual Router Redundancy Protocol,虚拟路由冗余协议)协议为实现基础的。

二、问题解决

1.某台RS down 了

如果停止server2的httpd服务,进行负载均衡测试

keepalived的负载均衡配置 keepalived 负载均衡_keepalived的负载均衡配置


此时curl 172.25.0.100 调度器依然正常工作,但是客户端将会有错误连接提示,这就说明调度器并不关心后端real server的状态,即使已经down掉了也依然会对其进行调度

keepalived的负载均衡配置 keepalived 负载均衡_优先级_02


解决方法:

调度器(server1)安装 keepalived (健康检测,高可用)

keepalived的负载均衡配置 keepalived 负载均衡_优先级_03


编辑配置文件

keepalived的负载均衡配置 keepalived 负载均衡_keepalived的负载均衡配置_04


root@localhost :邮件通知,如果主机联网的话可以写外部邮箱,用于通知集群状态,如果写localhost(本机)的话需要安装mailx;
 notification_email_from keepalived@localhost:邮件发送方;
 #vrrp_strict :禁掉这个选项,这一参数功能是在出问题时抓取数据包;

keepalived的负载均衡配置 keepalived 负载均衡_服务器_05


vrrp_instance VI_1 :指定 keepalived 的角色,MASTER 表示此主机是主服务器,BACKUP 表示此主机是备用服务器;
 interface eth0:指定网卡;
 virtual_router_id 51:虚拟路由标识,这个标识是一个数字,同一个vrrp实例使用唯一的标识。 即同一vrrp_instance下,MASTER和BACKUP必须是一致的;
 priority 100:定义优先级,数字越大,优先级越高(0-255),在同一个vrrp_instance下,MASTER 的优先级必须大于 BACKUP 的优先级;

keepalived的负载均衡配置 keepalived 负载均衡_服务器_06


virtual_server 172.25.1.100 80:这部分相当于将lvs的策略以文本的方式写出来了,集群将会根据这部分内容来制定lvs策略;
 delay_loop 6:每隔6秒钟对后端做一次健康检查;
 lb_algo rr:定义调度算法;
 lb_kind DR:lvs模式;
 persistence_timeout 50 :50秒内同一个客户端发过来的请求将会交给同一个后端处理,为了实验效果,将其注释。

keepalived的负载均衡配置 keepalived 负载均衡_服务器_07


修改完毕之后重启服务:systemctl start keepalived;

查看server1的邮件服务状态(端口为25)

keepalived的负载均衡配置 keepalived 负载均衡_keepalived的负载均衡配置_08


keepalived的负载均衡配置 keepalived 负载均衡_优先级_09


此时删掉server1上的虚拟ip172.25.0.100后

keepalived的负载均衡配置 keepalived 负载均衡_keepalived的负载均衡配置_10

ipvsadm -C :清除LVS的策略规则的所有记录;
 ipvsadm -ln:查看当前连接情况(-ln不用解析)

keepalived的负载均衡配置 keepalived 负载均衡_服务器_11


此时重启keepalived服务后,vip自动添加到server1上

keepalived的负载均衡配置 keepalived 负载均衡_keepalived的负载均衡配置_12


轮叫正常

keepalived的负载均衡配置 keepalived 负载均衡_服务器_13


此时停止server2的http服务

keepalived的负载均衡配置 keepalived 负载均衡_优先级_14


ipvsadm -ln 将检测不到server2

keepalived的负载均衡配置 keepalived 负载均衡_优先级_15


curl 172.25.36.100 调度器依然正常工作,但是客户端不在有错误连接提示,这就说明调度器上的keepalived对后端RS进行了健康检测,不再让server2提供服务

keepalived的负载均衡配置 keepalived 负载均衡_客户端_16


查看日志,发现有server2 down掉的邮件信息

keepalived的负载均衡配置 keepalived 负载均衡_keepalived的负载均衡配置_17

1.lvs down 了

解决方法:创建虚拟机快照文件server4作BACKUP(高可用(master>backup)),同样的修改其主机名、IP

keepalived的负载均衡配置 keepalived 负载均衡_客户端_18


server4安装keepalived,并拷贝server1的keepalived.conf文件

keepalived的负载均衡配置 keepalived 负载均衡_服务器_19


keepalived的负载均衡配置 keepalived 负载均衡_服务器_20


编辑配置文件,修改其state为BACKUP;优先权为50,重启keepalived服务

keepalived的负载均衡配置 keepalived 负载均衡_客户端_21


keepalived的负载均衡配置 keepalived 负载均衡_优先级_22


安装ipvsadm(用于管理LVS的策略规则)

keepalived的负载均衡配置 keepalived 负载均衡_keepalived的负载均衡配置_23


ipvsadm -ln:查看当前连接情况

keepalived的负载均衡配置 keepalived 负载均衡_服务器_24


之后查看server4的日志,可以看到此时的server4是BACKUP

keepalived的负载均衡配置 keepalived 负载均衡_优先级_25


当server1停止keepalived服务后

keepalived的负载均衡配置 keepalived 负载均衡_优先级_26


再次查看server4的日志,可以看到此时的server4是MASTER

keepalived的负载均衡配置 keepalived 负载均衡_优先级_27


仍然不影响客户端的正常访问,调度依然可以进行

keepalived的负载均衡配置 keepalived 负载均衡_优先级_28

查看vip所对应的MAC,此时正是server4(master)的MAC,vip也飘过来了

keepalived的负载均衡配置 keepalived 负载均衡_keepalived的负载均衡配置_29


keepalived的负载均衡配置 keepalived 负载均衡_客户端_30

再次开启server1的 keepalived服务后

keepalived的负载均衡配置 keepalived 负载均衡_keepalived的负载均衡配置_31

过滤得到172.25.0.100的MAC地址是server1的MAC地址

keepalived的负载均衡配置 keepalived 负载均衡_优先级_32

此时server4为BACKUP(优先级低)

keepalived的负载均衡配置 keepalived 负载均衡_keepalived的负载均衡配置_33