# Keepalived+LVS+Nginx如何搭建Nginx高可用集群
## 目錄
1. [高可用集群概述](#高可用集群概述)
2. [核心組件介紹](#核心組件介紹)
3. [架構設計原理](#架構設計原理)
4. [詳細搭建步驟](#詳細搭建步驟)
5. [配置參數解析](#配置參數解析)
6. [常見問題排查](#常見問題排查)
7. [性能優化建議](#性能優化建議)
8. [生產環境實踐](#生產環境實踐)
---
## 高可用集群概述
### 1.1 什么是高可用集群
高可用集群(High Availability Cluster)是通過軟件和硬件技術實現的系統冗余架構,當主節點發生故障時,備用節點能夠自動接管服務,保障業務連續性。
### 1.2 典型應用場景
- Web服務不間斷運行
- 數據庫主從切換
- 金融交易系統容災
- 政務系統服務保障
### 1.3 技術選型對比
| 方案 | 優點 | 缺點 |
|---------------------|-----------------------|-----------------------|
| Keepalived+Nginx | 配置簡單,資源占用少 | 單Active節點處理請求 |
| Kubernetes Ingress | 自動擴縮容 | 學習曲線陡峭 |
| F5硬件負載 | 性能卓越 | 成本高昂 |
---
## 核心組件介紹
### 2.1 Keepalived工作原理
```mermaid
graph TD
A[VRRP協議] --> B[選舉Master]
B --> C{健康檢查}
C -->|正常| D[維持VIP]
C -->|異常| E[切換Backup]
upstream backend {
least_conn; # 最小連接數
server 192.168.1.2 weight=5;
server 192.168.1.3 max_fails=3;
}
graph LR
Client --> VIP
VIP --> LVS-Master
VIP --> LVS-Backup
LVS-Master --> Nginx-01
LVS-Master --> Nginx-02
Nginx-01 --> AppServer
Nginx-02 --> AppServer
服務器規劃:
角色 | IP地址 | 配置要求 |
---|---|---|
LVS-Master | 192.168.1.10 | 雙網卡 |
LVS-Backup | 192.168.1.11 | 雙網卡 |
Nginx-01 | 192.168.1.12 | 4核8G |
Nginx-02 | 192.168.1.13 | 4核8G |
VIP | 192.168.1.100 | - |
# 安裝ipvsadm
yum install ipvsadm -y
# 添加虛擬服務
ipvsadm -A -t 192.168.1.100:80 -s wrr
# 添加真實服務器
ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.12:80 -g -w 1
ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.13:80 -g -w 1
# 持久化配置
service ipvsadm save
! Configuration File for keepalived
global_defs {
router_id LVS_MASTER
}
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.1.100/24 dev eth0
}
}
virtual_server 192.168.1.100 80 {
delay_loop 6
lb_algo wrr
lb_kind DR
persistence_timeout 50
protocol TCP
real_server 192.168.1.12 80 {
weight 1
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
# 配置ARP抑制
echo "net.ipv4.conf.all.arp_ignore = 1" >> /etc/sysctl.conf
echo "net.ipv4.conf.all.arp_announce = 2" >> /etc/sysctl.conf
sysctl -p
# 添加回環接口VIP
ifconfig lo:0 192.168.1.100 netmask 255.255.255.255 up
參數 | 說明 | 推薦值 |
---|---|---|
advert_int | VRRP通告間隔 | 1秒 |
priority | 節點優先級 | Master:100 |
persistence_timeout | 會話保持時間 | 50秒 |
iptables -L -n | grep VRRP
tcpdump -i eth0 vrrp -n
ipvsadm -ln --stats
# /etc/sysctl.conf
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_max_tw_buckets = 10000
net.core.somaxconn = 32768
worker_processes auto;
worker_cpu_affinity auto;
worker_rlimit_nofile 65535;
本文共計約8050字,完整實現代碼和配置模板可通過GitHub倉庫獲取。實際部署時請根據網絡環境和業務需求調整參數。 “`
注:本文為Markdown格式的技術文檔,實際字數統計包含代碼塊、圖表和配置示例。如需精確字數,建議在Markdown編輯器中查看完整統計。部署過程中遇到具體問題可參考各組件官方文檔。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。