CentOS服务器热备方案详解
针对CentOS服务器的热备(高可用性)方案,核心目标是实现业务连续性,确保在硬件故障、维护或其他意外情况下服务不中断。以下是常见的几种热备方案及其实现思路:
1. 基于共享存储的高可用方案(如 RHCS、Pacemaker+Corosync)
原理:
- 多台服务器共享同一块存储(如SAN/NAS/iSCSI)。
- 主节点挂载存储运行服务,备用节点监控主节点状态。
- 主节点故障时,备用节点接管存储并启动服务。
部署步骤:
-
配置共享存储:
# 安装iSCSI客户端(如使用iSCSI) yum install iscsi-initiator-utils iscsiadm -m discovery -t st -p <存储服务器IP> iscsiadm -m node -T <目标名称> -p <存储服务器IP> -l
-
安装集群管理工具:
yum install pacemaker corosync pcs systemctl enable pcsd corosync pacemaker systemctl start pcsd
-
配置集群:
passwd hacluster # 设置集群密码 pcs cluster auth node1 node2 # 节点互信 pcs cluster setup --name my_cluster node1 node2 pcs cluster start --all pcs property set stonith-enabled=false # 禁用STONITH(测试环境)
-
定义资源(以虚拟IP和Nginx为例):
pcs resource create Virtual_IP ocf:heartbeat:IPaddr2 ip=192.168.1.100 cidr_netmask=24 op monitor interval=30s pcs resource create Web_Server systemd:nginx op monitor interval=5s pcs constraint colocation add Web_Server Virtual_IP INFINITY pcs constraint order Virtual_IP then Web_Server
优点:
- 数据一致性高(共享存储)。
- 切换速度快(秒级)。
缺点:
- 依赖共享存储硬件,成本较高。
- 需要避免脑裂(Split-Brain),需配置STONITH。
2. 基于数据同步的热备方案(如 DRBD + Keepalived)
原理:
- DRBD(Distributed Replicated Block Device)实现磁盘级实时同步。
- Keepalived 管理虚拟IP,实现故障转移。
部署步骤:
-
安装DRBD:
yum install drbd kmod-drbd84 modprobe drbd
-
配置DRBD资源(
/etc/drbd.d/resource.res
):resource my_res { protocol C; # 同步模式(完全同步) on node1 { device /dev/drbd0; disk /dev/sdb1; address 192.168.1.1:7788; meta-disk internal; } on node2 { device /dev/drbd0; disk /dev/sdb1; address 192.168.1.2:7788; meta-disk internal; } }
-
初始化并启动DRBD:
drbdadm create-md my_res systemctl enable drbd systemctl start drbd drbdadm primary my_res --force # 主节点初始化 mkfs.ext4 /dev/drbd0 # 格式化文件系统
-
配置Keepalived(主备节点配置不同优先级):
vrrp_instance VI_1 { state MASTER # 备用节点设为BACKUP interface eth0 virtual_router_id 51 priority 100 # 备用节点设为50 virtual_ipaddress { 192.168.1.100/24 } }
优点:
- 纯软件方案,无需共享存储硬件。
- 数据实时同步,可靠性高。
缺点:
- DRBD同步可能对网络带宽和延迟敏感。
- 需要手动处理脑裂问题。
3. 应用层热备(Nginx/HAProxy + Keepalived)
原理:
- 使用负载均衡器(如Nginx/HAProxy)作为前端代理。
- Keepalived管理负载均衡器的虚拟IP,实现双机热备。
部署步骤:
-
安装负载均衡器(以Nginx为例):
yum install nginx systemctl enable nginx systemctl start nginx
-
配置Keepalived(主备节点):
vrrp_script chk_nginx { script "pgrep nginx || exit 1" interval 2 weight 2 } vrrp_instance VI_1 { state MASTER interface eth0 virtual_router_id 51 priority 100 virtual_ipaddress { 192.168.1.100/24 } track_script { chk_nginx } }
-
配置后端服务器:
- 确保应用服务器(如Web、数据库)已配置集群或主从复制。
优点:
- 实现负载均衡和高可用双重功能。
- 适用于无状态服务(如Web应用)。
缺点:
- 需结合后端服务的高可用方案(如数据库主从)。
4. 数据库热备(如 MySQL主从复制 + MHA)
原理:
- 主数据库实时同步数据到从库。
- MHA(Master High Availability) 自动监控主库状态并切换。
部署步骤:
-
配置MySQL主从复制:
-- 主库配置 CREATE USER 'repl'@'%' IDENTIFIED BY 'password'; GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%'; SHOW MASTER STATUS; # 记录File和Position -- 从库配置 CHANGE MASTER TO MASTER_HOST='主库IP', MASTER_USER='repl', MASTER_PASSWORD='password', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=107; START SLAVE;
-
部署MHA:
yum install mha4mysql-manager mha4mysql-node
-
配置MHA管理节点(
/etc/mha/app1.conf
):[server default] manager_workdir=/var/log/mha/app1 manager_log=/var/log/mha/app1/manager.log ssh_user=root [server1] hostname=master_ip [server2] hostname=slave_ip
-
启动MHA监控:
masterha_manager --conf=/etc/mha/app1.conf
优点:
- 数据库层高可用,自动故障转移。
- 支持数据一致性检查。
缺点:
- 配置复杂度较高。
- 主从同步可能存在延迟。
5. 云环境热备(如 AWS/Aliyun 负载均衡 + 多可用区)
原理:
- 利用云平台的负载均衡(如AWS ELB、阿里云SLB)将流量分发到多台ECS实例。
- 结合云存储(如EBS、OSS)实现数据持久化。
部署步骤:
-
创建云服务器实例:
- 在多个可用区部署CentOS实例。
-
配置负载均衡器:
- 添加监听规则,绑定后端服务器组。
-
挂载共享存储:
# 例如挂载阿里云NAS yum install nfs-utils mount -t nfs nas.aliyuncs.com:/ /mnt
优点:
- 无需自行管理物理硬件。
- 弹性扩展能力强。
缺点:
- 依赖云服务商,成本可能较高。
选择建议
- 关键业务:共享存储 + Pacemaker/Corosync。
- 预算有限:DRBD + Keepalived。
- Web应用:Nginx/HAProxy + Keepalived。
- 数据库:MySQL主从 + MHA 或 Galera Cluster。
- 云环境:云平台负载均衡 + 多可用区部署。
注意事项
- 网络稳定性:确保节点间心跳网络低延迟、高可靠。
- 脑裂处理:配置STONITH或仲裁机制。
- 数据一致性:优先选择同步复制模式。
- 测试验证:定期模拟故障测试切换流程。
- 监控告警:集成Zabbix/Prometheus监控集群状态。
通过上述方案,可显著提升CentOS服务器的可用性,根据实际场景选择最适合的架构。