一、简介
1、介绍以及作用
keepalived是一个基于vrrp(Virtual Router Redundancy Protocol)协议的高可用解决方案,主要用于防止lvs(Linux Virtual Server)系统中的单点故障问题。它通过监控lvs节点的工作状态,当主节点出现故障时,Keepalived能够自动将VIP(Virtual IP)转移到备用节点上,从而确保服务的连续性和高可用性。Keepalived的设计初衷是为了与LVS一起使用,以实现负载均衡和故障转移,但它也可以独立使用,通过监控各种服务和端口的状态来实现高可用性。(负载均衡可看之前作品讲解)
2、功能
- VRRP协议实现:Keepalived使用VRRP协议来检测主节点的状态,并在主节点故障时接管其IP地址和提供服务。
- 服务健康检查:Keepalived可以监控后端服务器的健康状况,如果检测到某个服务器故障,它将从负载均衡池中移除该服务器,确保只有健康的服务器提供服务。
- 故障通知:当检测到故障时,Keepalived可以通过配置的SMTP服务器发送警报通知管理员。
二、部署
1、架构图
2、环境准备
确保防火墙,selinux关闭,最后是直接移除防火墙,能实现上网(一般来说配置好了网卡也没问题)
3、搭建配置
3.1、全局配置
配置四台主机,realserver1,2;ka1,2;
在realserver里面下载并启动httpd,ip 分别为172.25.254.110,120;172.25.254.10,20
接着在realserver1,2中echo 对应ip >/var/www/html/index.html中
在ka1,2中curl realserver1,2
接着在ka1,2中yum install keepalived -y安装keepalived
在ka1中Vim /etc/keepalived/keepalived.conf然后复制到ka2中
3.2、优先级实验
然后启动keepalived服务
Ka2中更改为备用,降低优先级。然后重启keepalived服务
优先使用IP a查看eth0是否有vip地址inet
使用tcpdump -i eth0 -nn host 224.0.0.18抓包,出现如下就代表成功,可以ka1和ka2切换master和bakcup看效果 。
3.3、实现日志功能
Vim /etc/rsyslog.conf
重启服务并查看是否生效
Systemctl restart keepalived.service
Systemctl restart rsyslog
Ll /var/log/keepalive.log
3.4、实现独立子配置文件
把上面的全部注释掉并复制
在上图中include的文件位置创建172.25.254.100.conf并复制进去也能成功。
3.5、实现keepalived单主架构
master配置
接着重启服务
Systemctl restart keepalived
IP a
可以看到出现了vip的地址
3.5.1、组播换单播
Vim /etc/keepalived/keepalived.conf
注意一定要写空格,我这里因为没注意到,排了很久的错!!!!!!!!!!!
使用tcpdump -i eth0 -nn src host 172.25.254.10 and dst 172.25.254.20 抓包
三、其他功能
1、实现邮箱配置
1.1、前提条件
这里以QQ邮箱为例子
在如图的位置,将服务打开,生成授权码
1.2、步骤
Ka1和ka2同理
Yum install mailx -y
vim /etc/mail.rc
#######mail set##########
set from=xxxxxxx@qq.com
set smtp=smtp.qq.com
set smtp-auth-user=xxxxxxx@qq.com
set smtp-auth-password=你的授权码
set smtp-auth=login set ssl-verify=ignore
Smtp-auth-password需要到QQ邮箱的安全设置里面打开
测试发邮箱
echo test message |mail -s test xxxxxxx@qq.com
1.3、编写脚本发送
vim /etc/keepalived/mail.sh
2、实现master/master双主架构
2.1、ka主机中
接下来vim /etc/keepalived/keepalived.conf
2.2、在两台realserver中
Ip a a 172.25.254.100/32 dev lo
Vim /etc/sysctl.d/arp.conf
net.ipv4.conf.all.arp_ignore=1
net.ipv4.conf.all.arp_announce=2
net.ipv4.conf.lo.arp_ignore=1
net.ipv4.conf.lo.arp_announce=2
重启systemctl restart keepalived.service
完成后在ka2 curl vip
能curl两个主机ip代表设置正确。
3、实现haproxy高可用
haproxy在以往博客里可见
1、应用层监听
在ka1、ka2中yum install haproxy
然后 vim /etc/sysctl.conf
添加net.ipv4.ip_nonlocal_bind=1
Sysctl -p查看
接着在ka1和ka2中vim /etc/haproxy/haproxy.conf
2、虚拟服务器配置
Server 后面的IP是两个realserver的IP
接着在ka1和ka2中vim /etc/keepalived/keepalived.conf,把之前配置的server全部注释掉
同时配置,在如图的位置配置脚本,其内容为
#!/bin/bash
killall -0 haproxy
添加track_script调用函数
ps:记得在realserver中删掉原VIP(这里很容易忘掉)
ip a del 172.25.254.100/32 dev lo
然后在一台主机中死循环
While true
Do
Curl 172.25.254.100
Done
成功