高可用集群是以减少服务中断时间为目标的服务器集群技术,通过冗余节点实现故障自动切换以确保业务连续性。高可用集群通过多节点冗余设计消除单点故障,核心组件包括心跳检测、资源管理和数据同步。主节点处理请求时,备节点实时监控其状态,若检测到故障,备节点立即接管服务,确保业务连续性。
高可用集群搭建详细步骤
一、基础环境准备
服务器规划
节点数量:至少2台物理/虚拟机,例如:
Node1: 192.168.1.10
Node2: 192.168.1.11
VIP(虚拟IP): 192.168.1.100
系统初始化:
关闭防火墙:systemctl stop firewalld && systemctl disable firewalld
禁用SELinux:setenforce 0 && sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
时间同步:安装NTP服务(如ntpdate pool.ntp.org)或Chrony。
SSH互信配置
所有节点生成密钥并互相分发:
bashssh-keygen -t rsassh-copy-id -i ~/.ssh/id_rsa.pub root@node1ssh-copy-id -i ~/.ssh/id_rsa.pub root@node2
二、Web服务器高可用方案
负载均衡器高可用
安装Keepalived:yum install -y keepalived
主节点配置(/etc/keepalived/keepalived.conf):
confglobal_defs { router_id LVS_MASTER }vrrp_instance VI_1 {state MASTERinterface eth0virtual_router_id 51priority 100advert_int 1authentication { auth_type PASS auth_pass 1111 }virtual_ipaddress { 192.168.1.100/24 dev eth0 }}
备节点配置:修改state为BACKUP,priority为90。
启动服务:
bashsystemctl enable keepalived && systemctl start keepalived
负载均衡配置(HAProxy示例)
安装HAProxy:yum install -y haproxy
配置文件(/etc/haproxy/haproxy.cfg):
conffrontend http_frontbind 192.168.1.100:80default_backend http_backbackend http_backbalance roundrobinserver web1 192.168.1.10:80 checkserver web2 192.168.1.11:80 check
三、数据库高可用方案
安装Galera Cluster
所有节点执行:
bashyum install -y mariadb-server galera
配置文件(/etc/my.cnf.d/galera.cnf):
conf[galera]wsrep_on=ONwsrep_provider=/usr/lib64/galera/libgalera_smm.sowsrep_cluster_address="gcomm://node1,node2"binlog_format=rowdefault_storage_engine=InnoDB
初始化集群
在第一个节点启动:galera_new_cluster
其他节点加入:systemctl start mariadb
验证集群状态:
sqlSHOW STATUS LIKE 'wsrep_cluster_size';
四、通用应用高可用
安装集群组件
安装Pacemaker、Corosync和PCS:
bashyum install -y pacemaker corosync pcssystemctl enable pcsd && systemctl start pcsdpasswd hacluster # 设置集群认证密码(所有节点一致)
配置Corosync
认证节点:pcs cluster auth node1 node2
创建集群:
bashpcs cluster setup --name my_cluster node1 node2pcs cluster start --allpcs cluster enable --all
配置资源
创建虚拟IP资源:
bashpcs resource create Virtual_IP ocf:heartbeat:IPaddr2 ip=192.168.1.100 cidr_netmask=24 op monitor interval=30s
创建Apache服务资源:
bashpcs resource create Web_Server systemd:httpd op monitor interval=60s
绑定资源组:
bashpcs resource group add Web_Group Virtual_IP Web_Server
五、存储高可用
安装DRBD
安装DRBD和内核模块:
bashyum install -y drbd kmod-drbd84
配置文件(/etc/drbd.d/global_common.conf):
confresource r0 {protocol C;disk { on-io-error detach; }on node1 {device /dev/drbd0;disk /dev/sdb1;address 192.168.1.10:7788;}on node2 {device /dev/drbd0;disk /dev/sdb1;address 192.168.1.11:7788;}}
初始化并启用DRBD
初始化资源:drbdadm create-md r0
启动服务:
bashsystemctl enable drbd && systemctl start drbd
主节点初始化:
bashdrbdadm primary r0 --forcemkfs.xfs /dev/drbd0
六、验证与测试
故障转移测试
手动触发主节点故障:
bashpcs node standby node1 # Pacemaker集群systemctl stop keepalived # Keepalived测试
脑裂防护配置
在Pacemaker中配置Quorum:
bashpcs property set no-quorum-policy=freeze
高可用集群的工作原理
一、核心机制
心跳检测
节点间周期性交换心跳包,通过私网或公网传输。若主节点心跳超时,备用节点立即接管资源。
资源约束管理
位置约束:指定资源运行节点。
顺序约束:控制服务启动次序。
排列约束:协调资源依赖关系。
数据同步
共享磁盘:通过SAN/iSCSI存储架构确保所有节点访问同一数据副本。
数据库复制:MySQL主从复制或Galera多节点同步复制,防止脑裂导致的数据损坏。
分布式文件系统:如Ceph提供对象存储、块存储和文件系统接口,支持多节点冗余和自动故障恢复。
透明切换
通过IP漂移或资源代理实现用户无感知的系统切换,典型切换时间可控制在秒级。
二、典型架构
双机热备
两台服务器互相备份,主节点处理请求,备节点实时同步数据。当主节点故障时,备节点自动接管服务。
适用场景:中小企业Web服务、文件服务器等。
多节点集群
支持3个以上节点,提供比双机热备更多、更高级的功能,如负载均衡、分布式存储等。
示例:Hadoop HDFS通过备用NameNode解决元数据服务单点问题,支持PB级数据存储。
共享存储架构
所有节点连接共享存储设备,确保数据一致性。当某个节点故障时,其他节点可立即挂载存储并继续提供服务。
优势:数据同步效率高,适合读写频繁的场景。
分布式存储架构
通过多节点冗余和自动故障恢复实现高可用。数据分片存储在不同节点上,即使部分节点故障,数据仍可完整读取。
优势:扩展性强,适合大规模数据存储场景。
三、关键技术组件
Heartbeat
三层架构,支持资源级故障转移。
适用场景:传统Linux高可用集群。
Keepalived
基于VRRP协议实现IP地址漂移,广泛用于LVS负载均衡集群。
优势:轻量级、配置简单,适合快速搭建Web服务器高可用集群。
Pacemaker + Corosync
Pacemaker:新一代集群管理器,支持节点级和资源级的高可用配置,兼容物理机、虚拟机及云环境。
Corosync:提供稳定的消息传递和成员管理功能,常与Pacemaker搭配使用,支持Quorum机制防止脑裂。
适用场景:企业级核心业务系统。
Zookeeper
提供分布式协调服务,基于类似Paxos算法的投票机制保证集群高可用性和数据一致性。
应用:Hadoop、Kafka等分布式系统的服务注册、配置维护和命名服务。
其工作原理依赖分布式协调机制,节点间通过私网交换心跳包,结合Quorum投票防止脑裂。资源管理器按约束规则调度服务,确保资源单一运行。数据层通过共享存储或同步复制保持一致,切换时间通常在秒级,用户无感知。