高可用集群是以減少服務(wù)中斷時(shí)間為目標(biāo)的服務(wù)器集群技術(shù),通過冗余節(jié)點(diǎn)實(shí)現(xiàn)故障自動(dòng)切換以確保業(yè)務(wù)連續(xù)性。高可用集群通過多節(jié)點(diǎn)冗余設(shè)計(jì)消除單點(diǎn)故障,核心組件包括心跳檢測(cè)、資源管理和數(shù)據(jù)同步。主節(jié)點(diǎn)處理請(qǐng)求時(shí),備節(jié)點(diǎn)實(shí)時(shí)監(jiān)控其狀態(tài),若檢測(cè)到故障,備節(jié)點(diǎn)立即接管服務(wù),確保業(yè)務(wù)連續(xù)性。
高可用集群搭建詳細(xì)步驟
一、基礎(chǔ)環(huán)境準(zhǔn)備
服務(wù)器規(guī)劃
節(jié)點(diǎn)數(shù)量:至少2臺(tái)物理/虛擬機(jī),例如:
Node1: 192.168.1.10
Node2: 192.168.1.11
VIP(虛擬IP): 192.168.1.100
系統(tǒng)初始化:
關(guān)閉防火墻:systemctl stop firewalld && systemctl disable firewalld
禁用SELinux:setenforce 0 && sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
時(shí)間同步:安裝NTP服務(wù)(如ntpdate pool.ntp.org)或Chrony。
SSH互信配置
所有節(jié)點(diǎn)生成密鑰并互相分發(fā):
bashssh-keygen -t rsassh-copy-id -i ~/.ssh/id_rsa.pub root@node1ssh-copy-id -i ~/.ssh/id_rsa.pub root@node2
二、Web服務(wù)器高可用方案
負(fù)載均衡器高可用
安裝Keepalived:yum install -y keepalived
主節(jié)點(diǎn)配置(/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 }}
備節(jié)點(diǎn)配置:修改state為BACKUP,priority為90。
啟動(dòng)服務(wù):
bashsystemctl enable keepalived && systemctl start keepalived
負(fù)載均衡配置(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
三、數(shù)據(jù)庫(kù)高可用方案
安裝Galera Cluster
所有節(jié)點(diǎn)執(zhí)行:
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
初始化集群
在第一個(gè)節(jié)點(diǎn)啟動(dòng):galera_new_cluster
其他節(jié)點(diǎn)加入:systemctl start mariadb
驗(yàn)證集群狀態(tài):
sqlSHOW STATUS LIKE 'wsrep_cluster_size';
四、通用應(yīng)用高可用
安裝集群組件
安裝Pacemaker、Corosync和PCS:
bashyum install -y pacemaker corosync pcssystemctl enable pcsd && systemctl start pcsdpasswd hacluster # 設(shè)置集群認(rèn)證密碼(所有節(jié)點(diǎn)一致)
配置Corosync
認(rèn)證節(jié)點(diǎn):pcs cluster auth node1 node2
創(chuàng)建集群:
bashpcs cluster setup --name my_cluster node1 node2pcs cluster start --allpcs cluster enable --all
配置資源
創(chuàng)建虛擬IP資源:
bashpcs resource create Virtual_IP ocf:heartbeat:IPaddr2 ip=192.168.1.100 cidr_netmask=24 op monitor interval=30s
創(chuàng)建Apache服務(wù)資源:
bashpcs resource create Web_Server systemd:httpd op monitor interval=60s
綁定資源組:
bashpcs resource group add Web_Group Virtual_IP Web_Server
五、存儲(chǔ)高可用
安裝DRBD
安裝DRBD和內(nèi)核模塊:
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
啟動(dòng)服務(wù):
bashsystemctl enable drbd && systemctl start drbd
主節(jié)點(diǎn)初始化:
bashdrbdadm primary r0 --forcemkfs.xfs /dev/drbd0
六、驗(yàn)證與測(cè)試
故障轉(zhuǎn)移測(cè)試
手動(dòng)觸發(fā)主節(jié)點(diǎn)故障:
bashpcs node standby node1 # Pacemaker集群systemctl stop keepalived # Keepalived測(cè)試
腦裂防護(hù)配置
在Pacemaker中配置Quorum:
bashpcs property set no-quorum-policy=freeze

高可用集群的工作原理
一、核心機(jī)制
心跳檢測(cè)
節(jié)點(diǎn)間周期性交換心跳包,通過私網(wǎng)或公網(wǎng)傳輸。若主節(jié)點(diǎn)心跳超時(shí),備用節(jié)點(diǎn)立即接管資源。
資源約束管理
位置約束:指定資源運(yùn)行節(jié)點(diǎn)。
順序約束:控制服務(wù)啟動(dòng)次序。
排列約束:協(xié)調(diào)資源依賴關(guān)系。
數(shù)據(jù)同步
共享磁盤:通過SAN/iSCSI存儲(chǔ)架構(gòu)確保所有節(jié)點(diǎn)訪問同一數(shù)據(jù)副本。
數(shù)據(jù)庫(kù)復(fù)制:MySQL主從復(fù)制或Galera多節(jié)點(diǎn)同步復(fù)制,防止腦裂導(dǎo)致的數(shù)據(jù)損壞。
分布式文件系統(tǒng):如Ceph提供對(duì)象存儲(chǔ)、塊存儲(chǔ)和文件系統(tǒng)接口,支持多節(jié)點(diǎn)冗余和自動(dòng)故障恢復(fù)。
透明切換
通過IP漂移或資源代理實(shí)現(xiàn)用戶無(wú)感知的系統(tǒng)切換,典型切換時(shí)間可控制在秒級(jí)。
二、典型架構(gòu)
雙機(jī)熱備
兩臺(tái)服務(wù)器互相備份,主節(jié)點(diǎn)處理請(qǐng)求,備節(jié)點(diǎn)實(shí)時(shí)同步數(shù)據(jù)。當(dāng)主節(jié)點(diǎn)故障時(shí),備節(jié)點(diǎn)自動(dòng)接管服務(wù)。
適用場(chǎng)景:中小企業(yè)Web服務(wù)、文件服務(wù)器等。
多節(jié)點(diǎn)集群
支持3個(gè)以上節(jié)點(diǎn),提供比雙機(jī)熱備更多、更高級(jí)的功能,如負(fù)載均衡、分布式存儲(chǔ)等。
示例:Hadoop HDFS通過備用NameNode解決元數(shù)據(jù)服務(wù)單點(diǎn)問題,支持PB級(jí)數(shù)據(jù)存儲(chǔ)。
共享存儲(chǔ)架構(gòu)
所有節(jié)點(diǎn)連接共享存儲(chǔ)設(shè)備,確保數(shù)據(jù)一致性。當(dāng)某個(gè)節(jié)點(diǎn)故障時(shí),其他節(jié)點(diǎn)可立即掛載存儲(chǔ)并繼續(xù)提供服務(wù)。
優(yōu)勢(shì):數(shù)據(jù)同步效率高,適合讀寫頻繁的場(chǎng)景。
分布式存儲(chǔ)架構(gòu)
通過多節(jié)點(diǎn)冗余和自動(dòng)故障恢復(fù)實(shí)現(xiàn)高可用。數(shù)據(jù)分片存儲(chǔ)在不同節(jié)點(diǎn)上,即使部分節(jié)點(diǎn)故障,數(shù)據(jù)仍可完整讀取。
優(yōu)勢(shì):擴(kuò)展性強(qiáng),適合大規(guī)模數(shù)據(jù)存儲(chǔ)場(chǎng)景。
三、關(guān)鍵技術(shù)組件
Heartbeat
三層架構(gòu),支持資源級(jí)故障轉(zhuǎn)移。
適用場(chǎng)景:傳統(tǒng)Linux高可用集群。
Keepalived
基于VRRP協(xié)議實(shí)現(xiàn)IP地址漂移,廣泛用于LVS負(fù)載均衡集群。
優(yōu)勢(shì):輕量級(jí)、配置簡(jiǎn)單,適合快速搭建Web服務(wù)器高可用集群。
Pacemaker + Corosync
Pacemaker:新一代集群管理器,支持節(jié)點(diǎn)級(jí)和資源級(jí)的高可用配置,兼容物理機(jī)、虛擬機(jī)及云環(huán)境。
Corosync:提供穩(wěn)定的消息傳遞和成員管理功能,常與Pacemaker搭配使用,支持Quorum機(jī)制防止腦裂。
適用場(chǎng)景:企業(yè)級(jí)核心業(yè)務(wù)系統(tǒng)。
Zookeeper
提供分布式協(xié)調(diào)服務(wù),基于類似Paxos算法的投票機(jī)制保證集群高可用性和數(shù)據(jù)一致性。
應(yīng)用:Hadoop、Kafka等分布式系統(tǒng)的服務(wù)注冊(cè)、配置維護(hù)和命名服務(wù)。
其工作原理依賴分布式協(xié)調(diào)機(jī)制,節(jié)點(diǎn)間通過私網(wǎng)交換心跳包,結(jié)合Quorum投票防止腦裂。資源管理器按約束規(guī)則調(diào)度服務(wù),確保資源單一運(yùn)行。數(shù)據(jù)層通過共享存儲(chǔ)或同步復(fù)制保持一致,切換時(shí)間通常在秒級(jí),用戶無(wú)感知。