在Linux系统中,热备(Hot Standby)是指通过高可用集群技术,确保主节点故障时备用节点能自动接管服务,保障业务连续性,要查看Linux系统是否配置了热备及热备状态,需结合集群管理工具、服务状态、系统资源等多维度进行排查,以下从常见集群场景出发,详细说明查看方法。
基于Pacemaker/Corosync集群的热备状态查看
Pacemaker是主流的高可用集群资源管理器,常与Corosync(集群通信层)配合使用,若系统通过此方案实现热备,可通过以下方式检查:
使用pcs
命令查看集群和资源状态
pcs
是Pacemaker的命令行管理工具,需安装pcs
及相关依赖(如pacemaker
、corosync
),执行以下命令:
pcs status ``` 包含三部分关键信息: - **集群状态**:显示`Cluster Status`,若为`Online`且所有节点(如`node1`、`node2`)状态为`Online`,则集群通信正常; - **资源状态**:在`Resources`部分,查看热备资源(如VIP、虚拟IP、数据库服务等)是否运行在预期主节点(如`Master`状态),备用节点对应资源应为`Slave`或`Stopped`状态; - **节点属性**:检查`Sticky`(节点亲和性)或`location`约束,确认备用节点是否被配置为热备角色。 #### 2. 使用`crm_mon`查看详细资源监控 `crm_mon`是Pacemaker的图形化监控工具,通过`crm_mon -1`(单次输出)或`crm_mon -r`(实时更新)查看: ```bash crm_mon -1
重点关注Resource
列表中资源的Target Role
和Managed
属性:若资源为Started
且Managed: yes
,表示热备机制生效;若资源显示Failed
或Stopped
,则需排查故障。
检查Corosync心跳状态
热备依赖节点间心跳通信,通过corosync-cmapctl
查看心跳状态:
corosync-cmapctl totem
确认heartbeat
值正常(通常为1秒),且members
列表中所有节点状态为active
,若节点状态为lost
,则心跳中断,热备可能失效。
基于Keepalived的热备状态查看
Keepalived通过VRRP协议实现虚拟IP(VIP)的热备,常用于负载均衡(如LVS、Nginx)场景,查看方法如下:
检查VIP状态
通过ip addr show
或ip a
查看VIP是否绑定在主节点网卡:
ip addr show | grep "192.168.1.100" # 假设VIP为192.168.1.100
若主节点显示inet 192.168.1.100/24
且状态为UP
,则VIP正常;备用节点应无此VIP或状态为DOWN
。
查看Keepalived进程及VRRP状态
systemctl status keepalived # 确认服务运行 ipvsadm -Ln # 若使用LVS,查看虚拟服务是否正常 vrrp_track_instance # 查看VRRP实例状态,主节点为MASTER,备用节点为BACKUP
通过cat /var/log/keepalived.log
日志,确认VRRP通告(Advertisement)是否正常发送,备用节点是否成功同步主节点状态。
应用层热备状态(如数据库、中间件)
对于数据库(如MySQL MHA、Redis Sentinel)等应用层热备,需结合工具检查主从复制或哨兵状态:
MySQL MHA热备
- 主从状态:
mysql -e "show slave statusG"
,检查Slave_IO_Running
和Slave_SQL_Running
是否为Yes
; - MHA管理节点:
masterha_check_repl --conf=/etc/mha/app.cnf
,输出MySQL replication health is OK
表示主从正常; - 故障切换日志:
cat /var/log/mha/app/app.log
,查看是否记录了自动切换过程。
Redis Sentinel热备
redis-cli -h sentinel_host -p 26379 info sentinel # 查看哨兵信息 redis-cli -h sentinel_host -p 26379 sentinels mymaster # 查看主从节点列表
确认master
字段指向当前主节点,slaves
字段包含备用节点,且num-other-sentinels
≥1(哨兵数量需满足配置要求)。
通用热备状态检查维度
无论使用哪种方案,均需检查以下共性指标:
- 节点状态:主备节点是否在线(
ping
、ssh
连通性); - 资源约束:集群是否配置了
failover
(故障转移)策略,备用节点是否被允许接管资源; - 日志监控:
/var/log/
下对应服务的日志(如pacemaker.log
、keepalived.log
)是否报错,重点关注failed
、timeout
等关键词; - 监控工具:若部署Prometheus+Grafana,可通过集群状态、资源运行时间、VIP切换频率等仪表盘实时监控热备健康度。
表:常见热备方案查看命令总结
方案类型 | 常用命令 | 作用说明 |
---|---|---|
Pacemaker集群 | pcs status |
查看集群及资源整体状态 |
crm_mon -1 |
查看资源详细监控信息 | |
corosync-cmapctl totem |
检查Corosync心跳通信状态 | |
Keepalived | ip addr show |
检查VIP是否绑定在主节点 |
systemctl status keepalived |
确认Keepalived服务运行状态 | |
cat /var/log/keepalived.log |
查看VRRP协议日志 | |
MySQL MHA | mysql -e "show slave statusG" |
检查MySQL主从复制状态 |
masterha_check_repl --conf=xxx |
验证MHA主从健康度 |
FAQs
问题1:如何判断热备节点是否真正处于“热备”状态,而不是离线?
解答:需综合三方面验证:① 集群管理工具(如pcs node show
)中节点状态为Online
;② 资源状态在备用节点为Slave
或Stopped
(非Started
);③ 心跳通信正常(如Corosync的members
状态为active
),且备用节点能实时同步主节点数据(如MySQL主从延迟为0),若节点在集群中显示Offline
或资源未同步,则热备失效。
问题2:热备切换后如何验证数据一致性?
解答:不同场景验证方法不同:① 数据库类(如MySQL):在原主节点执行唯一值插入(如INSERT INTO test VALUES (1, 'test')
),切换后在新的主节点查询该值是否存在;② 文件服务:检查共享存储(如NFS、GFS2)的挂载状态和文件修改时间是否同步;③ 应用服务:对比切换前后服务的响应内容(如HTTP返回值、API接口数据),确保业务逻辑连续,若数据不一致,需检查同步机制(如binlog、WAL日志)是否正常。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/38376.html