實驗開始前,先搞懂為什么要部署該集群?
這個方案的目標是讓網站?永不宕機,即使某臺服務器掛了,用戶也感覺不到。它主要涉及?負載均衡(LVS)?+?高可用(Keepalived)?+?共享存儲(NFS),下面用最易懂的方式解釋每個部分的作用和關鍵知識點。
1. Keepalived(高可用 VIP 管理)
作用:讓兩臺服務器(主+備)共同管理一個?虛擬IP(VIP),如果主服務器掛了,備服務器自動接管這個IP,用戶無感知。
核心知識點
-
VRRP協議(類似"選舉"機制):
-
主服務器(Master)平時持有VIP,并不斷向備服務器(Backup)發送心跳包。
-
如果備服務器收不到心跳,就認為主服務器掛了,自己接管VIP。
-
-
健康檢查:
-
Keepalived 可以監控 LVS 或 Web 服務是否正常,如果發現服務掛了,就自動切換。
-
-
配置示例:
vrrp_instance VI_1 {state MASTER # 主服務器是MASTER,備服務器是BACKUPinterface eth0 # 網卡名稱virtual_router_id 51 # 主備必須一致priority 100 # 主服務器優先級高(比如100),備服務器低(比如90)virtual_ipaddress {192.168.1.100 # 虛擬IP(VIP),用戶訪問這個IP} }
2. LVS(負載均衡,分攤流量)
作用:把用戶請求?均勻分發?到多臺 Web 服務器,避免單臺服務器壓力過大。
核心知識點
-
三種工作模式(最常用的是DR模式):
-
DR模式(直接路由)(性能最好):
-
LVS 只修改請求的MAC地址,讓數據包直接返回給用戶,不經過LVS。
-
-
NAT模式(較慢):
-
LVS 修改IP地址,所有流量都要經過它,容易成為瓶頸。
-
-
TUN模式(IP隧道,適用于跨機房):
-
用IP封裝技術,讓請求可以跨網絡傳輸。
-
-
-
調度算法:
-
rr
(輪詢):依次分發給每臺服務器。 -
wrr
(加權輪詢):給性能好的服務器更多請求。 -
lc
(最少連接):誰當前連接數少,就發給誰。
-
-
配置示例(DR模式):
ipvsadm -A -t 192.168.1.100:80 -s rr # 對VIP的80端口使用輪詢 ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.101:80 -g # 添加Web服務器1(DR模式) ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.102:80 -g # 添加Web服務器2
3. Web服務器(Nginx/Apache)
作用:真正處理用戶請求的服務器,多臺Web服務器通過LVS分攤流量。
核心知識點
-
所有Web服務器內容要一致:
-
通過?NFS 共享存儲?或者?rsync同步?保證文件一致。
-
-
Session會話保持(如果網站需要登錄):
-
方法1:用?
ip_hash
(Nginx)讓同一用戶始終訪問同一臺Web服務器。 -
方法2:用?Redis?存儲Session,所有Web服務器共用。
-
-
健康檢查:
-
LVS 或 Keepalived 會定期檢查Web服務器是否存活,掛了的機器會被踢出集群。
-
4. NFS(共享存儲,讓多臺Web服務器用同一套文件)
作用:所有Web服務器掛載同一個NFS目錄,保證網站內容一致(比如上傳的圖片、配置文件等)。
核心知識點
-
NFS服務器配置:
# NFS服務器(假設IP是192.168.1.200) vim /etc/exports /data/web 192.168.1.0/24(rw,sync,no_root_squash) # 允許Web服務器讀寫/data/web
-
Web服務器掛載NFS:
mount -t nfs 192.168.1.200:/data/web /var/www/html
-
注意事項:
-
NFS單點故障:如果NFS服務器掛了,所有Web服務器都會受影響!解決方案:
-
NFS + DRBD(實時同步到另一臺備份NFS)
-
改用分布式存儲(如GlusterFS、Ceph)
-
-
整體架構圖
常見問題 & 優化
-
LVS DR模式ARP問題:
-
要在Web服務器上隱藏VIP,避免它們響應ARP請求:
echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
-
-
NFS性能慢:
-
可以換用?GlusterFS?或?Ceph?這類分布式存儲。
-
-
Session不一致:
-
用Redis存Session,所有Web服務器共用。
-
總結
-
Keepalived?= 高可用,VIP自動切換(主備模式)。
-
LVS?= 負載均衡,把請求分發給多臺Web服務器。
-
Web服務器?= 真正處理請求的機器,多臺保證冗余。
-
NFS?= 共享存儲,讓所有Web服務器數據一致。
這樣,即使某臺Web服務器、LVS、甚至Keepalived主節點掛了,整個網站仍然可以正常訪問! 🚀