在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