高可用 - 06 Keepalived基础功能应用实例
Posted 小小工匠
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了高可用 - 06 Keepalived基础功能应用实例相关的知识,希望对你有一定的参考价值。
文章目录
概述
作为一个高可用集群软件,Keepalived提供了vrrp_script、notify_master、notify_backup
等多个功能模块,通过这些模块也可以实现对集群资源的托管以及集群服务的监控。
Keepalived基础HA功能演示
在默认情况下,Keepalived可以实现对系统死机、网络异常及Keepalived本身进行监控。也就是说,当系统出现死机、网络出现故障或Keepalived进程异常时,Keepalived会进行主备节点的切换。
但这些还是不够的,因为集群中运行的服务也随时可能出现问题,所以,还需要对集群中运行服务的状态进行监控,当服务出现问题时也进行主备切换。作为一个优秀的高可用集群软件,Keepalived提供了一个vrrp_script
模块专门用来对集群中服务资源进行监控。
配置Keepalived
这里我们要部署一套基于HTTPD的高可用集群系统。
keepalived-master节点的keepalived.conf文件
# 全局配置
global_defs
# 邮件通知信息
notification_email
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
# 定义发件人
notification_email_from Alexandre.Cassen@firewall.loc
# SMTP服务器地址
smtp_server 192.168.200.1
smtp_connect_timeout 30
# 路由器标识,一般不用改,也可以写成每个主机自己的主机名
router_id LVS_DEVEL
# VRRP的ipv4和ipv6的广播地址,配置了VIP的网卡向这个地址广播来宣告自己的配置信息,下面是默认值
vrrp_mcast_group4 224.0.0.18
vrrp_mcast_group6 ff02::12
# 定义用于实例执行的脚本内容,比如可以在线降低优先级,用于强制切换 名称自定义
vrrp_script check_httpd
script "killall -0 httpd"
interval 2
# 一个vrrp_instance就是定义一个虚拟路由器的,实例名称
vrrp_instance HA_1
# 定义初始状态,可以是MASTER或者BACKUP
state MASTER
# 工作接口,通告选举使用哪个接口进行
interface eth0
# 虚拟路由ID,如果是一组虚拟路由就定义一个ID,如果是多组就要定义多个,而且这个虚拟
# ID还是虚拟MAC最后一段地址的信息,取值范围0-255
virtual_router_id 80
# 使用哪个虚拟MAC地址
use_vmac XX:XX:XX:XX:XX
# 监控本机上的哪个网卡,网卡一旦故障则需要把VIP转移出去
track_interface
eth0
ens33
# 如果你上面定义了MASTER,这里的优先级就需要定义的比其他的高
priority 100
# 通告频率,单位为秒
advert_int 2
# 通信认证机制,这里是明文认证还有一种是加密认证
authentication
auth_type PASS
auth_pass qwaszx
# 设置虚拟VIP地址,一般就设置一个,在LVS中这个就是为LVS主机设置VIP的,这样你就不用自己手动设置了
virtual_ipaddress
# IP/掩码 dev 配置在哪个网卡
192.168.66.80/24 dev eth0
# 工作模式,nopreempt表示工作在非抢占模式,默认是抢占模式 preempt
nopreempt|preempt
# 如果是抢占默认则可以设置等多久再抢占,默认5分钟
preempt delay 300
# 追踪脚本,通常用于去执行上面的vrrp_script定义的脚本内容
track_script
check_httpd
# 三个指令,如果主机状态变成Master|Backup|Fault之后会去执行的通知脚本,脚本要自己写
notify_master "/etc/keepalived/master.sh "
notify_backup "/etc/keepalived/backup.sh"
notify_fault "/etc/keepalived/fault.sh"
其中,master.sh
文件的内容如下。
#!/bin/bash
LOGFILE=/var/log/keepalived-mysql-state.log
echo "[Master]" >> $LOGFILE
date >> $LOGFILE
backup.sh
文件的内容如下。
#!/bin/bash
LOGFILE=/var/log/keepalived-mysql-state.log
echo "[Backup]" >> $LOGFILE
date >> $LOGFILE
fault.sh
文件的内容如下。
#!/bin/bash
LOGFILE=/var/log/keepalived-mysql-state.log
echo "[Fault]" >> $LOGFILE
date >> $LOGFILE
这三个脚本的作用是监控Keepalived
角色的切换过程,进一步理解notify
参数的执行过程。
keepalived-backup节点的keepalived.conf文件
keepalived-backup
节点上的keepalived.conf
配置文件内容与keepalived-master
节点上的基本相同,需要修改的地方有两个。
- 将“
state MASTER
”更改为“state BACKUP
”。 - 将
priority 100
更改为一个较小的值,这里改为“priority 80
”。
Keepalived启动过程分析
将配置好的keepalived.conf文件及master.sh、backup.sh、fault.sh三个文件一起复制到keepalived-backup备用节点对应的路径下,然后在两个节点启动http服务,最后启动Keepalived服务。
首先在keepalived-master节点启动keepalived服务,执行如下操作。
[root@keepalived-master keepalived]# chkconfig --level 35 httpd on
[root@keepalived-master keepalived]# /etc/init.d/httpd start
[root@keepalived-master keepalived]# /etc/init.d/keepalived start
Keepalived
正常运行后共启动了3个进程,其中一个进程是父进程,它负责监控其余两个子进程(分别是vrrp
子进程和healthcheckers
子进程)。然后观察keepalived-master
上Keepalived的运行日志
【keepalived-master上Keepalived的启动日志】
以上是关于高可用 - 06 Keepalived基础功能应用实例的主要内容,如果未能解决你的问题,请参考以下文章
高可用 - 07 Keepalived 通过 vrrp_script实现对集群资源的监控的几种方式