keepalived 简介
vrrp 协议的软件实现,原生设计目的为了高可用 ipvs服务
功能:
-
基于vrrp协议完成地址流动
-
为vip地址所在的节点生成ipvs规则(在配置文件中预先定义)
-
为ipvs集群的各RS做健康状态检测
-
基于脚本调用接口完成脚本中定义的功能,进而影响集群事务,以此支持nginx、haproxy等服务
官方文档: Keepalived User Guide — Keepalived 1.4.3 documentation
实验环境准备
四台主机 rhel7.9
KA1 KA2 192.168.110.10/20
WB1 WB2 192.168.110.110/120
VIP 192.168.110.100
1,下载httpd(wb1/2)
2,设置自启动
3,创建测试页
4,测试是否成功(ka1/2)
KeepAlived 配置
配置文件组成部分
1,下载keep
2,修改配置文件
因两个修改基本一致可直接粘过去(作完一个后再干)
【1】全局设定(没另一个图就是一样的配置)
【2】配置虚拟路由器
3,启动
4,查看是否可以运行
5,如果此时关闭k1服务,则由k2顶上
6,开启后自动顶替(抢占模式)
7,允许访问vip100
【1】现情况,包直接被不接收
【2】原因
【3】修改配置文件(两个都得改)(也可都禁用)
【4】改后
8,独立日志
【1】修改keepalived日志文件路径
【2】修改日志信息配置文件
【3】重启这俩查看是否创建出来keepalived的日志
9, 实现独立子配置文件
当生产环境复杂时,/etc/keepalived/keepalived.conf 文件中内容过多,不易管理 将不同集群的配置。
比如:不同集群的VIP配置放在独立的子配置文件中利用include 指令可以实现包含 子配置文件
【1】修改主体配置文件
【2】此时无法启动,需设置子配置文件后重新启动
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 100
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.110.100/24 dev eth0 label eth0:1
}
}
【3】重启keep查看是否设定成功
【4】恢复纯净,方便之后好看
10,设置非抢占模式,得把两个都改成backup
【1】K1配置
【2】k2配置
【3】重新启动k1/2
【4】k1权重高于k2,所以vip在k1上
【5】关闭k1的keep,再看
【6】开启后还是k2,因为是非抢占模式
【7】回复纯净
11,抢占延迟模式
抢占延迟模式,即优先级高的主机恢复后,不会立即抢回VIP,而是延迟一段时间(默认300s)再抢回 VIP
注意:需要各keepalived服务器state为BACKUP,并且不要启用 vrrp_strict
【1】k1配置
【2】k2配置
【3】重启
【4】查看(五秒钟后抢回来vip)
【5】纯净环境
K1
K2
重启检测
12, VIP单播配置(有vip通知没有vip的)
【1】k1
【2】k2
【3】重启
13,邮件通知
【1】下载mailx(发邮件的工具)
【2】设置邮件代理
【3】配置邮件客户端
【4】测试
【5】给k2也整上
【6】也测试一下
【7】编写脚本
#!/bin/bash mail_dst="1234567890@qq.com" send_message() { mail_sub="$HOSTNAME to be $1 vip move" mail_msg="'date +%F\ %T': vrrp move $HOSTNAME chage $1" echo $mail_msg | mail -s "$mail_sub" $mail_dst }
case $1 in master) send_message master ;; backup) send_message backup ;; fault) send_message fault ;; *) ;; esac
加权
【8】编辑keep主配置文件
notify_master "/etc/keepalived/mail.sh master" notify_backup "/etc/keepalived/mail.sh backup" notify_fault "/etc/keepalived/mail.sh fault"
【9】重启动(自己发邮件)
【10】回复实验纯净
---------------------------------------------------------------------------------------------------------------------------------
1, 实现 master/master 的 Keepalived 双主架构
master/slave的单主架构,同一时间只有一个Keepalived对外提供服务,此主机繁忙,而另一台主机却 很空闲,利用率低下,可以使用master/master的双主架构,解决此问题。
master/master 的双主架构: 即将两个或以上VIP分别运行在不同的keepalived服务器,以实现服务器并行提供web访问的目的,提高 服务器资源利用率
究极惨痛教训请一定检测大括号是否完善!!!!
【1】K1修改配置文件
【2】k2修改配置文件
【3】效果
【4】如果一台崩了,另一台就有俩个了
2,实现IPVS的高可用性
实现单主的 LVS-DR 模式
【1】在web1,2上添加vip(临时的)
【2】修改内核路由
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
【3】检查是否生效
【4】k1,2下载ipvsadm(主要目的观察自动生成的配置)
【5】修改配置文件(k1/2一样):
【6】重启
【7】检查策略(自己就生成了)
【8】访问vip
【9】如果关闭一个服务,则会自动修改策略
【10】反之亦然
3,实现其它应用的高可用性 VRRP Scrip
keepalived利用 VRRP Script 技术,可以调用外部的辅助脚本进行资源监控,并根据监控的结果实现优先 动态调整,从而实现其它应用的高可用性功能
原理用脚本将俩优先级修改实现主从切换
【1】创建脚本(检测该文件是否存在)
【2】执行查看
【3】合二为一(0正常1不正常)
【4】加权
【5】修改配置文件
【6】重启,查看
【7】理论上添加后vip自动到k2上了,但暂未找到不行的原因
4,实现HAProxy高可用
【1】K1/2上装haproxy
【2】修改内核参数,使haproxy在主机并未有此ip也可启动(k1/2都做)
net.ipv4.ip_nonlocal_bind = 1
【3】修改haproxy配置文件
listen webcluster bind 192.168.110.100:80
mode http
balance roundrobin
server web1 192.168.110.110:80 check inter 3 fall 2 rise 5
server web2 192.168.110.120:80 check inter 3 fall 2 rise 5
【4】启动配置
【5】查看端口是否开启
【6】将之前的ipvs配置删除(web1,2)
删除vip
修改arp响应(俩都做)
【7】注释K1/2上的lvs(会冲突)
【8】现在就可以使用了
【9】但现在如果vip所在主机挂后,则无法提供服务(不知为啥他自己换了)