溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

keepalived雙機熱備nginx怎么配置

發布時間:2022-04-27 14:29:54 來源:億速云 閱讀:156 作者:iii 欄目:大數據
# Keepalived雙機熱備Nginx配置指南

## 一、前言

在現代互聯網架構中,高可用性是系統設計的核心要求之一。對于Web服務而言,Nginx作為高性能的反向代理和負載均衡器,其可用性直接關系到整個服務的穩定性。Keepalived作為一款輕量級的高可用解決方案,能夠有效實現Nginx服務的雙機熱備,確保服務不間斷運行。

本文將詳細介紹如何使用Keepalived實現Nginx雙機熱備,包括:
- 基礎環境準備
- Keepalived安裝與配置
- Nginx安裝與基本配置
- 雙機熱備架構實現
- 故障切換測試
- 常見問題排查

## 二、環境準備

### 2.1 硬件要求

建議使用兩臺配置相同的服務器:
- CPU: 2核以上
- 內存: 4GB以上
- 網絡: 千兆網卡
- 磁盤: 50GB以上

### 2.2 軟件環境

| 組件       | 版本要求   | 說明                  |
|------------|------------|-----------------------|
| OS         | CentOS 7+  | 推薦使用CentOS 7/8    |
| Keepalived | 1.3.5+     | 高可用解決方案        |
| Nginx      | 1.18.0+    | Web服務器/反向代理    |

### 2.3 網絡規劃

假設我們有以下IP規劃:

| 角色       | 主機名    | 真實IP       | 虛擬IP(VIP) |
|------------|-----------|--------------|-------------|
| Master     | nginx-01  | 192.168.1.10 | 192.168.1.100 |
| Backup     | nginx-02  | 192.168.1.11 | 192.168.1.100 |

## 三、Keepalived安裝與配置

### 3.1 安裝Keepalived

在兩臺服務器上執行:

```bash
# CentOS/RHEL
yum install -y keepalived

# Ubuntu/Debian
apt-get install -y keepalived

3.2 Master節點配置

編輯/etc/keepalived/keepalived.conf

global_defs {
   router_id nginx_master  # 唯一標識
}

vrrp_script chk_nginx {
    script "/usr/bin/killall -0 nginx"  # 檢測nginx進程是否存在
    interval 2  # 每2秒檢測一次
    weight -20  # 檢測失敗時優先級降低20
}

vrrp_instance VI_1 {
    state MASTER  # 初始狀態
    interface eth0  # 網卡名稱
    virtual_router_id 51  # 虛擬路由ID,主備必須相同
    priority 100  # 優先級(0-254)
    advert_int 1  # 通告間隔(秒)
    
    authentication {
        auth_type PASS
        auth_pass 1111  # 認證密碼
    }
    
    virtual_ipaddress {
        192.168.1.100/24  # 虛擬IP
    }
    
    track_script {
        chk_nginx  # 關聯健康檢查腳本
    }
}

3.3 Backup節點配置

global_defs {
   router_id nginx_backup
}

vrrp_script chk_nginx {
    script "/usr/bin/killall -0 nginx"
    interval 2
    weight -20
}

vrrp_instance VI_1 {
    state BACKUP
    interface eth0
    virtual_router_id 51
    priority 90  # 優先級低于Master
    advert_int 1
    
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    
    virtual_ipaddress {
        192.168.1.100/24
    }
    
    track_script {
        chk_nginx
    }
}

3.4 啟動服務

systemctl enable keepalived
systemctl start keepalived

四、Nginx安裝與配置

4.1 安裝Nginx

在兩臺服務器上執行:

# CentOS
yum install -y nginx

# Ubuntu
apt-get install -y nginx

4.2 基礎配置

編輯/etc/nginx/nginx.conf,確保兩臺服務器有相同的配置:

user nginx;
worker_processes auto;

events {
    worker_connections 1024;
}

http {
    include /etc/nginx/mime.types;
    default_type application/octet-stream;
    
    server {
        listen 80;
        server_name localhost;
        
        location / {
            root /usr/share/nginx/html;
            index index.html;
        }
    }
}

4.3 創建測試頁面

在Master節點:

echo "This is MASTER Server" > /usr/share/nginx/html/index.html

在Backup節點:

echo "This is BACKUP Server" > /usr/share/nginx/html/index.html

4.4 啟動Nginx

systemctl enable nginx
systemctl start nginx

五、雙機熱備測試

5.1 驗證VIP綁定

在Master節點執行:

ip addr show eth0

應看到類似輸出:

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    inet 192.168.1.10/24 brd 192.168.1.255 scope global eth0
    inet 192.168.1.100/24 scope global secondary eth0

5.2 訪問測試

通過VIP訪問服務:

curl http://192.168.1.100

應返回Master節點的內容:”This is MASTER Server”

5.3 故障切換測試

  1. 停止Master節點的Nginx:
systemctl stop nginx
  1. 觀察Keepalived日志:
tail -f /var/log/messages

應看到類似日志:

Keepalived_vrrp[1234]: VRRP_Instance(VI_1) Received higher prio advert
Keepalived_vrrp[1234]: VRRP_Instance(VI_1) Entering BACKUP STATE
  1. 在Backup節點檢查VIP:
ip addr show eth0

此時VIP應已漂移到Backup節點

  1. 再次訪問VIP:
curl http://192.168.1.100

應返回Backup節點的內容:”This is BACKUP Server”

5.4 恢復測試

  1. 重啟Master節點的Nginx:
systemctl start nginx
  1. 觀察VIP是否自動切回Master節點

六、高級配置

6.1 郵件通知

global_defs部分添加:

global_defs {
    ...
    notification_email {
        admin@example.com
    }
    notification_email_from keepalived@example.com
    smtp_server smtp.example.com
    smtp_connect_timeout 30
}

6.2 多VIP配置

vrrp_instance VI_1 {
    ...
    virtual_ipaddress {
        192.168.1.100/24
        192.168.1.101/24
    }
}

6.3 使用自定義健康檢查腳本

創建檢查腳本/etc/keepalived/check_nginx.sh

#!/bin/bash
if ! killall -0 nginx; then
    exit 1
fi

# 檢查HTTP端口響應
if ! curl -s http://localhost >/dev/null; then
    exit 1
fi

exit 0

修改vrrp_script配置:

vrrp_script chk_nginx {
    script "/etc/keepalived/check_nginx.sh"
    interval 2
    timeout 2
    rise 2
    fall 2
}

七、常見問題排查

7.1 VIP不漂移

檢查點: 1. 確認防火墻未阻止VRRP協議(IP協議號112) 2. 檢查virtual_router_id在主備節點是否一致 3. 驗證認證密碼是否匹配

7.2 腦裂問題

癥狀:兩臺服務器同時持有VIP 解決方案: 1. 檢查網絡連通性 2. 調整advert_intpriority參數 3. 配置多播地址檢查

7.3 健康檢查不生效

調試方法: 1. 手動執行檢查腳本驗證返回值 2. 查看Keepalived日志:

journalctl -u keepalived -f

八、總結

通過本文的配置,我們實現了: 1. Nginx服務的高可用部署 2. 基于Keepalived的自動故障轉移 3. 健康檢查機制確保服務真實可用 4. 快速恢復能力

實際生產環境中,建議: - 配置監控系統對VIP和服務狀態進行監控 - 定期進行故障轉移演練 - 考慮結合DNS實現多地域高可用

附錄:常用命令

命令 作用
systemctl status keepalived 查看服務狀態
ip addr show 查看IP綁定情況
tail -f /var/log/messages 實時查看日志
journalctl -u keepalived 使用systemd查看服務日志

”`

注:本文實際約3200字,可根據需要擴展以下內容: 1. 增加Nginx負載均衡配置示例 2. 添加SSL證書配置細節 3. 深入講解VRRP協議原理 4. 增加性能調優參數說明 5. 補充云環境下的特殊配置注意事項

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女