本文利用两块树莓派4B来玩一下漂移,可不是扔到地上哈,而是VIP(Virtual IP Address)。网页用pi-dashboard来演示。为了配置keepalived,笔者试了一次失败,中间一直没有时间捡起来,今天闲下来终于成功了,有些高兴!我猜可能是开始前吃的那个苹果帮助了我,当然和牛顿的那个苹果还是不一样。
两个树莓派通过sudo apt-get install keepalived安装keepalived,安装完成会生成/etc/keepalived/目录,按照网络上的资源,应该有个配置文件keepalived.conf,安装完成后后就是没有看到。辗转反侧,apt-ge这种方法安装是没有配置文件的,需要手动建立一个配置文件,keepalived启动时会读取,没有就会默认。
进入目录/etc/keepalived/,创建配置文件sudo nano keepalived.conf,需要root权限。
master:
vrrp_instance lamp {
state MASTER
interface wlan0
virtual_router_id 100
priority 200
advert_int 2
authentication {
auth_type PASS
auth_pass 123456
}
virtual_ipaddress {
192.168.31.100
}
}
slave:
vrrp_instance lamp {
state BACKUP
interface wlan0
virtual_router_id 100
priority 50
advert_int 2
authentication {
auth_type PASS
auth_pass 123456
}
virtual_ipaddress {
192.168.31.100
}
}
需要配置的项为:state,interface,priority,virtual_ipaddress,virtual_router_id,advert_int。state表明主备master backup。interface就是网卡名称,可以ifconfig或者ip addr命令查看,笔者使用的是wifi,所以是wlan0。priority是优先级别,取值范围0~254,数字越大优先级越高,在同一个vrrp_instance下,MASTER的优先级必须大于BACKUP的优先级,这样MASTER故障恢复后,就可以将VIP资源再次抢回来。virtual_ipaddress虚拟IP地址池,可以有多个IP,每个IP占一行,主备一致。virtual_router_id:虚拟路由的ID号,每个节点设置必须一样。advert_int:MASTER与BACKUP节点间同步检查的时间间隔,单位为秒。
这是只是核心的参数,其他参数包括脚本检查等请自行搜索资料或者上官网有详细的介绍。
配置完成后就需要在两个树莓派上面重启keepalived进程 /etc/init.d/keepalived restart。下面三个命令可以查看启动停止进程。
/etc/init.d/keepalived status # 查看状态
/etc/init.d/keepalived stop # 停止
/etc/init.d/keepalived start # 启动
还有一个主要的命令tail -f /var/log/messages可以动态刷新查看日志,对于 /etc/init.d/keepalived status是静态查看来说,可以实时查看切换过程日志信息。下图是master进程正常后的信息,抢占VIP资源。
master抢占VIP资源查看vip在master或者backup上面,可以使用ip addr查看。
ip addr查看VIP最后试一试网页pi-dashboard,可以通过hostname来确定vip在哪里。
pi-dashborrd演示疑难杂症。
笔者配置好后,master抢占vip,,杀掉进程后,vip没有漂移到slave。读者从下图可以定位到是什么原因吗,这个可以找了我一个小时的时间,真系阴功啰。只能说要养成看日志的习惯,呈现给你的信息比网络上乱七八糟的信息有用很多。
日志信息目前树莓派安装了LAMP,上面的mariadb数据库只配置了主从复制,下一步再搭建双主结构,配合检查数据库状态的脚本来漂移VIP,提升高可用性。双主结构+keepalived有啥用处呢?根据笔者学习书籍“高可用MYSQL”,双主复制在生产中很少用到,因为数据一致性是个大问题,也无法扩展写操作。但是局域网小型服务器就可以用来做灾备,比如笔者见到用pgsql+vip漂移来实现服务器的高可用。但vip漂移不知是否是keepalived来实现,毕竟还有heartbeat。
本文keepalived配置只是配了VIP功能,其他详细的参数没有配置,特别是脚本检查方面的功能,待下个专题来测试吧。
同时,keepalived和heartbeat也找个专题来分析一下区别。
最后还是说一下日志信息里面的故障,少了个} 。
网友评论