最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Nginx+keepalived主從,雙主架構(gòu)詳解

 更新時(shí)間:2026年01月29日 10:44:37   作者:陰影下  
本文詳細(xì)介紹了Nginx和Keepalived的配置過程,包括主從架構(gòu)和雙主架構(gòu)的搭建,通過配置Keepalived,實(shí)現(xiàn)了VIP的自動(dòng)切換和高可用性,確保服務(wù)的連續(xù)性和可靠性,同時(shí),還討論了架構(gòu)對(duì)比、優(yōu)化方向、常見故障排查和生產(chǎn)環(huán)境最佳實(shí)踐

一、Nginx 與 Keepalived 基礎(chǔ)概念

1.1 Keepalived 原理詳解

Keepalived 是 Linux 系統(tǒng)下實(shí)現(xiàn) VRRP(Virtual Router Redundancy Protocol,虛擬路由冗余協(xié)議)的高可靠性軟件。其核心功能是通過 VRRP 協(xié)議實(shí)現(xiàn)服務(wù)器的故障切換,確保服務(wù)的高可用性。

VRRP 協(xié)議的工作機(jī)制如下:

  • 將多臺(tái)提供相同服務(wù)的設(shè)備組成一個(gè)路由器組(Router Group),其中包含一個(gè) master 和多個(gè) backup
  • 對(duì)外呈現(xiàn)一個(gè)虛擬 IP(VIP),master 負(fù)責(zé)處理 ARP 響應(yīng)和數(shù)據(jù)包轉(zhuǎn)發(fā)
  • master 定期發(fā)送組播消息(VRRP 包),backup 通過接收該消息監(jiān)控 master 狀態(tài)
  • 當(dāng) backup 在超時(shí)時(shí)間內(nèi)未收到 VRRP 包時(shí),認(rèn)為 master 故障,會(huì)根據(jù)優(yōu)先級(jí)選舉新的 master
  • 新舊 master 切換時(shí),VIP 會(huì)從原 master 轉(zhuǎn)移到新 master,實(shí)現(xiàn)服務(wù)的無縫接管

1.2 服務(wù)架構(gòu)概述

本次實(shí)踐采用的架構(gòu)包含:

  • 兩臺(tái) Nginx 服務(wù)器(nginx01 和 nginx02)
  • 兩臺(tái) Web 服務(wù)器(web01 和 web02)
  • 虛擬 IP(VIP)用于對(duì)外提供服務(wù)

二、環(huán)境準(zhǔn)備與 IP 規(guī)劃

2.1 服務(wù)器角色與 IP 分配

服務(wù)器角色IP 地址備注
web01192.168.10.103提供 Web 服務(wù),端口 8081
web02192.168.10.104提供 Web 服務(wù),端口 8082
nginx01192.168.10.101Nginx 主服務(wù)器(主從架構(gòu)中為 master)
nginx02192.168.10.102Nginx 從服務(wù)器(主從架構(gòu)中為 backup)
虛擬 IP(主從)192.168.10.100對(duì)外服務(wù) IP
虛擬 IP1(雙主)192.168.10.100nginx01 為主時(shí)使用
虛擬 IP2(雙主)192.168.10.200nginx02 為主時(shí)使用

2.2 基礎(chǔ)環(huán)境配置

在所有服務(wù)器上執(zhí)行以下操作,關(guān)閉防火墻和 SELinux:

# 停止防火墻
systemctl stop firewalld
# 禁用防火墻開機(jī)自啟動(dòng)
systemctl disable firewalld
# 臨時(shí)關(guān)閉SELinux
setenforce 0
# 永久關(guān)閉SELinux(修改配置文件)
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

三、Web 服務(wù)安裝與配置

3.1 安裝 HTTPD 服務(wù)

在 web01 和 web02 上分別安裝 HTTPD:

# 安裝httpd
yum -y install httpd

3.2 配置 Web 測(cè)試頁面

在 web01 上創(chuàng)建測(cè)試頁面:

# 創(chuàng)建測(cè)試頁面
echo "test01" > /var/www/html/index.html
# 修改監(jiān)聽端口為8081
vim /etc/httpd/conf/httpd.conf
# 找到Listen 80行,修改為
Listen 8081
# 啟動(dòng)httpd服務(wù)
systemctl start httpd
# 設(shè)置開機(jī)自啟動(dòng)
systemctl enable httpd

在 web02 上執(zhí)行類似操作,但測(cè)試頁面內(nèi)容為 "test02",監(jiān)聽端口為 8082:

echo "test02" > /var/www/html/index.html
vim /etc/httpd/conf/httpd.conf
Listen 8082
systemctl start httpd
systemctl enable httpd

四、Nginx 服務(wù)安裝與配置

4.1 安裝依賴包

在 nginx01 和 nginx02 上安裝編譯所需的依賴包:

yum -y install pcre-devel zlib-devel gcc*

4.2 創(chuàng)建 Nginx 用戶

創(chuàng)建專用的 Nginx 用戶,提高安全性:

useradd -M -s /sbin/nologin nginx

4.3 編譯安裝 Nginx

下載 Nginx 源碼并編譯安裝:

# 解壓源碼包
tar zxvf nginx-1.12.0.tar.gz
# 進(jìn)入源碼目錄
cd nginx-1.12.0
# 配置編譯參數(shù)
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx
# 編譯并安裝
make && make install
# 創(chuàng)建軟鏈接,方便命令行調(diào)用
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
# 驗(yàn)證安裝結(jié)果
ls -l /usr/local/sbin/nginx

4.4 配置 Nginx 代理

在 nginx01 和 nginx02 上配置 Nginx 代理參數(shù),指向后端 Web 服務(wù)器:

vim /usr/local/nginx/conf/nginx.conf

修改 http 塊內(nèi)容如下:

http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    
    upstream webserver {
        server 192.168.10.103:8081;
        server 192.168.10.104:8082;
    }
    
    server {
        listen       80;
        server_name  localhost;
        location / {
            proxy_pass http://webserver;
        }
    }
}

五、Keepalived 主從架構(gòu)搭建

5.1 Nginx01 上的 Keepalived 配置

安裝 Keepalived 并配置為主節(jié)點(diǎn):

# 安裝keepalived
yum -y install keepalived
# 修改配置文件
vim /etc/keepalived/keepalived.conf

配置內(nèi)容如下:

! Configuration File for keepalived

global_defs {
   notification_email {
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 192.168.200.1
   smtp_connect_timeout 30
   router_id LVS_01
   vrrp_skip_check_adv_addr
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}

vrrp_script check_nginx {
        script "/etc/keepalived/check_nginx.sh"
        interval 2
}

vrrp_instance VI_1 {
    state MASTER
    interface ens33
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.10.100
    }
    track_script {
        check_nginx
    }
}

5.2 Nginx02 上的 Keepalived 配置

安裝 Keepalived 并配置為從節(jié)點(diǎn):

yum -y install keepalived
vim /etc/keepalived/keepalived.conf

配置內(nèi)容如下:

! Configuration File for keepalived

global_defs {
   notification_email {
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 192.168.200.1
   smtp_connect_timeout 30
   router_id LVS_02
   vrrp_skip_check_adv_addr
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}

vrrp_script check_nginx {
        script "/etc/keepalived/check_nginx.sh"
        interval 2
}

vrrp_instance VI_1 {
    state BACKUP
    interface ens33
    virtual_router_id 51
    priority 90
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.10.100
    }
    track_script {
        check_nginx
    }
}

5.3 編寫健康檢查腳本

在 nginx01 和 nginx02 上創(chuàng)建檢查 Nginx 運(yùn)行狀態(tài)的腳本:

cd /etc/keepalived/
vim check_nginx.sh

腳本內(nèi)容如下:

#!/bin/bash
pidof nginx
if [ $? -ne 0 ];then
    /etc/init.d/keepalived stop
fi

賦予腳本執(zhí)行權(quán)限:

chmod +x check_nginx.sh

5.4 啟動(dòng) Keepalived 服務(wù)

在 nginx01 和 nginx02 上啟動(dòng) Keepalived:

systemctl start keepalived
systemctl enable keepalived

5.5 主從架構(gòu)測(cè)試

5.5.1 正常狀態(tài)測(cè)試

在客戶端訪問 VIP,驗(yàn)證負(fù)載均衡效果:

curl 192.168.10.100
# 輸出應(yīng)為test01或test02

5.5.2 故障切換測(cè)試

關(guān)閉 nginx01 上的 Nginx 服務(wù),模擬主節(jié)點(diǎn)故障:

# 停止nginx服務(wù)
/usr/local/sbin/nginx -s stop

觀察 VIP 是否轉(zhuǎn)移到 nginx02,并驗(yàn)證服務(wù)可用性:

# 在nginx02上查看VIP是否存在
ip addr show ens33 | grep 192.168.10.100
# 客戶端訪問VIP
curl 192.168.10.100
# 此時(shí)應(yīng)能正常返回test01或test02

當(dāng) nginx01 恢復(fù)后,VIP 會(huì)重新轉(zhuǎn)移回 nginx01:

# 啟動(dòng)nginx服務(wù)
/usr/local/sbin/nginx
# 等待片刻后,在nginx01上查看VIP
ip addr show ens33 | grep 192.168.10.100

六、Nginx 雙主架構(gòu)搭建

6.1 雙主架構(gòu)介紹

雙主架構(gòu)使用兩個(gè) VIP,兩臺(tái) Nginx 服務(wù)器互為主備,同時(shí)工作,提高資源利用率。當(dāng)一臺(tái)服務(wù)器故障時(shí),另一臺(tái)服務(wù)器接管兩個(gè) VIP 的請(qǐng)求。

6.2 Nginx01 的雙主配置

在 nginx01 上修改 Keepalived 配置,添加第二個(gè) VRRP 實(shí)例:

vim /etc/keepalived/keepalived.conf

完整配置如下:

! Configuration File for keepalived

global_defs {
   notification_email {
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 192.168.200.1
   smtp_connect_timeout 30
   router_id LVS_01
   vrrp_skip_check_adv_addr
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}

vrrp_script check_nginx {
        script "/etc/keepalived/check_nginx.sh"
        interval 2
}

vrrp_instance VI_1 {
    state MASTER
    interface ens33
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.10.100
    }
    track_script {
        check_nginx
    }
}

vrrp_instance VI_2 {
    state BACKUP
    interface ens33
    virtual_router_id 52
    priority 90
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.10.200
    }
    track_script {
        check_nginx
    }
}

6.3 Nginx02 的雙主配置

在 nginx02 上修改 Keepalived 配置,與 nginx01 形成互補(bǔ):

vim /etc/keepalived/keepalived.conf

完整配置如下:

! Configuration File for keepalived

global_defs {
   notification_email {
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 192.168.200.1
   smtp_connect_timeout 30
   router_id LVS_02
   vrrp_skip_check_adv_addr
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}

vrrp_script check_nginx {
        script "/etc/keepalived/check_nginx.sh"
        interval 2
}

vrrp_instance VI_1 {
    state BACKUP
    interface ens33
    virtual_router_id 51
    priority 90
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.10.100
    }
    track_script {
        check_nginx
    }
}

vrrp_instance VI_2 {
    state MASTER
    interface ens33
    virtual_router_id 52
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.10.200
    }
    track_script {
        check_nginx
    }
}

6.4 雙主架構(gòu)測(cè)試

6.4.1 正常狀態(tài)測(cè)試

在客戶端訪問兩個(gè) VIP,驗(yàn)證負(fù)載均衡效果:

curl 192.168.10.100
# 輸出應(yīng)為test01或test02
curl 192.168.10.200
# 輸出應(yīng)為test01或test02

6.4.2 故障切換測(cè)試

關(guān)閉 nginx01 上的 Nginx 服務(wù),模擬故障:

/usr/local/sbin/nginx -s stop

觀察兩個(gè) VIP 是否都轉(zhuǎn)移到 nginx02:

# 在nginx02上查看VIP
ip addr show ens33 | grep 192.168.10.100
ip addr show ens33 | grep 192.168.10.200
# 客戶端訪問兩個(gè)VIP
curl 192.168.10.100
curl 192.168.10.200
# 此時(shí)兩個(gè)VIP應(yīng)都能正常返回結(jié)果

當(dāng) nginx01 恢復(fù)后,VIP 會(huì)按配置轉(zhuǎn)移回各自的主節(jié)點(diǎn)。

6.5 非搶占模式配置

如需配置 master 重新接入后不搶占 VIP,需在配置中添加 nopreempt 參數(shù):

# 在需要設(shè)置非搶占的實(shí)例中添加
vrrp_instance VI_1 {
    state BACKUP
    interface ens33
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.10.100
    }
    track_script {
        check_nginx
    }
    nopreempt  # 添加非搶占參數(shù)
}

注意:state 必須設(shè)置為 BACKUP,MASTER 角色不能設(shè)置 nopreempt 參數(shù)。

七、架構(gòu)對(duì)比與總結(jié)

7.1 主從架構(gòu)與雙主架構(gòu)對(duì)比

指標(biāo)主從架構(gòu)雙主架構(gòu)
VIP 數(shù)量1 個(gè)2 個(gè)
服務(wù)器利用率只有 master 工作,backup 閑置兩臺(tái)服務(wù)器同時(shí)工作
資源消耗較低較高
適用場(chǎng)景服務(wù)器資源有限,對(duì)高可用性要求較高服務(wù)器資源充足,追求資源利用率和高可用性
故障影響一臺(tái)服務(wù)器故障,服務(wù)不受影響一臺(tái)服務(wù)器故障,另一臺(tái)服務(wù)器負(fù)載增加

7.2 高可用架構(gòu)關(guān)鍵點(diǎn)

  1. 健康檢查機(jī)制:通過腳本實(shí)時(shí)監(jiān)控 Nginx 狀態(tài),確保故障及時(shí)發(fā)現(xiàn)
  2. VRRP 協(xié)議:實(shí)現(xiàn) VIP 的自動(dòng)切換,保證服務(wù)連續(xù)性
  3. 配置一致性:主從服務(wù)器配置需保持一致,避免切換失敗
  4. 測(cè)試驗(yàn)證:定期進(jìn)行故障切換測(cè)試,確保架構(gòu)可靠性

7.3 進(jìn)一步優(yōu)化方向

  1. 添加日志記錄:在檢查腳本中添加日志,方便故障排查
# 修改檢查腳本
vim /etc/keepalived/check_nginx.sh
#!/bin/bash
LOG_FILE="/var/log/keepalived/nginx_check.log"
echo "[$(date '+%Y-%m-%d %H:%M:%S')] Checking Nginx status..." >> $LOG_FILE

pidof nginx
if [ $? -ne 0 ]; then
    echo "[$(date '+%Y-%m-%d %H:%M:%S')] Nginx process not found, stopping keepalived..." >> $LOG_FILE
    /etc/init.d/keepalived stop
else
    echo "[$(date '+%Y-%m-%d %H:%M:%S')] Nginx is running normally." >> $LOG_FILE
fi
# 創(chuàng)建日志目錄并賦予權(quán)限
mkdir -p /var/log/keepalived
chmod 755 /var/log/keepalived
chown nginx:nginx /var/log/keepalived -R
  1. 配置郵件告警:當(dāng) Keepalived 發(fā)生切換時(shí)發(fā)送郵件通知
# 修改keepalived.conf配置文件
vim /etc/keepalived/keepalived.conf
global_defs {
   notification_email {
     admin@example.com  # 替換為實(shí)際郵箱
   }
   notification_email_from keepalived@example.com  # 替換為實(shí)際發(fā)件郵箱
   smtp_server 192.168.1.1  # 替換為實(shí)際SMTP服務(wù)器IP
   smtp_connect_timeout 30
   router_id LVS_01
   # 其他配置保持不變...
}
  1. 優(yōu)化 Nginx 配置:添加健康檢查和連接超時(shí)參數(shù)
vim /usr/local/nginx/conf/nginx.conf
upstream webserver {
    server 192.168.10.103:8081 max_fails=3 fail_timeout=30s;
    server 192.168.10.104:8082 max_fails=3 fail_timeout=30s;
    keepalive 32;  # 保持長(zhǎng)連接數(shù)
}

server {
    listen       80;
    server_name  localhost;
    location / {
        proxy_pass http://webserver;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_connect_timeout 10s;
        proxy_read_timeout 60s;
        proxy_send_timeout 60s;
    }
}
  1. 添加磁盤監(jiān)控:避免因磁盤滿導(dǎo)致服務(wù)異常
# 創(chuàng)建磁盤監(jiān)控腳本
vim /usr/local/sbin/disk_monitor.sh
#!/bin/bash
LOG_FILE="/var/log/disk_monitor.log"
THRESHOLD=90  # 磁盤使用率閾值(%)

df -h | grep -v tmpfs | while read line; do
    device=$(echo $line | awk '{print $1}')
    if [ "$device" != "Filesystem" ]; then
        usage=$(echo $line | awk '{print $5}' | tr -d '%')
        if [ $usage -ge $THRESHOLD ]; then
            echo "[$(date '+%Y-%m-%d %H:%M:%S')] WARNING: $device disk usage reaches $usage%, please check!" >> $LOG_FILE
            # 發(fā)送郵件告警
            echo "磁盤 $device 使用率達(dá)到 $usage%,請(qǐng)及時(shí)檢查!" | mail -s "磁盤告警" admin@example.com
        fi
    fi
done
# 賦予執(zhí)行權(quán)限
chmod +x /usr/local/sbin/disk_monitor.sh
# 添加定時(shí)任務(wù),每10分鐘檢查一次
crontab -e
*/10 * * * * /usr/local/sbin/disk_monitor.sh
  1. 配置 Keepalived 優(yōu)先級(jí)動(dòng)態(tài)調(diào)整:根據(jù)服務(wù)器負(fù)載動(dòng)態(tài)調(diào)整優(yōu)先級(jí)
# 創(chuàng)建負(fù)載監(jiān)控腳本
vim /etc/keepalived/load_monitor.sh
#!/bin/bash
LOG_FILE="/var/log/keepalived/load_monitor.log"
VIP1="192.168.10.100"
VIP2="192.168.10.200"
INTERFACE="ens33"
MAX_LOAD=4.0  # 最大負(fù)載閾值

# 獲取1分鐘系統(tǒng)負(fù)載
load=$(cat /proc/loadavg | awk '{print $1}')

echo "[$(date '+%Y-%m-%d %H:%M:%S')] System load: $load" >> $LOG_FILE

if [ $(echo "$load > $MAX_LOAD" | bc -l) -eq 1 ]; then
    echo "[$(date '+%Y-%m-%d %H:%M:%S')] WARNING: System load too high, reducing keepalived priority." >> $LOG_FILE
    # 降低Keepalived優(yōu)先級(jí)(需根據(jù)實(shí)際角色調(diào)整)
    if [ $(cat /etc/keepalived/keepalived.conf | grep "state MASTER" | wc -l) -ge 1 ]; then
        # 如果是主節(jié)點(diǎn),降低優(yōu)先級(jí)使其成為從節(jié)點(diǎn)
        sed -i 's/priority 100/priority 80/g' /etc/keepalived/keepalived.conf
        systemctl restart keepalived
        echo "[$(date '+%Y-%m-%d %H:%M:%S')] Keepalived priority reduced to 80, service migrated." >> $LOG_FILE
    fi
else
    # 負(fù)載正常時(shí)恢復(fù)優(yōu)先級(jí)
    if [ $(cat /etc/keepalived/keepalived.conf | grep "priority 80" | wc -l) -ge 1 ]; then
        sed -i 's/priority 80/priority 100/g' /etc/keepalived/keepalived.conf
        systemctl restart keepalived
        echo "[$(date '+%Y-%m-%d %H:%M:%S')] Keepalived priority restored to 100." >> $LOG_FILE
    fi
fi
# 賦予執(zhí)行權(quán)限
chmod +x /etc/keepalived/load_monitor.sh
# 添加定時(shí)任務(wù),每5分鐘檢查一次
crontab -e
*/5 * * * * /etc/keepalived/load_monitor.sh

7.4 常見故障排查

VIP 無法正常綁定

  • 檢查網(wǎng)絡(luò)接口名稱是否正確(interface ens33需與實(shí)際接口一致)
  • 確認(rèn)兩臺(tái)服務(wù)器的virtual_router_id是否相同
  • 檢查防火墻是否允許 VRRP 協(xié)議通信(UDP 112 端口)
  • 執(zhí)行ip addr show查看 VIP 是否被正確綁定

Nginx 故障時(shí) Keepalived 未切換

  • 檢查check_nginx.sh腳本是否有執(zhí)行權(quán)限
  • 通過/var/log/messages查看 Keepalived 日志,確認(rèn)是否檢測(cè)到 Nginx 故障
  • 手動(dòng)執(zhí)行check_nginx.sh腳本,查看是否能正確停止 Keepalived
  • 確認(rèn)track_script配置是否正確關(guān)聯(lián)到檢查腳本

雙主架構(gòu)中 VIP 搶占異常

  • 檢查是否配置了nopreempt參數(shù)且stateBACKUP
  • 確認(rèn)兩臺(tái)服務(wù)器的優(yōu)先級(jí)配置是否正確(主節(jié)點(diǎn)優(yōu)先級(jí)高于從節(jié)點(diǎn))
  • 檢查網(wǎng)絡(luò)延遲是否過高,導(dǎo)致心跳包丟失

Nginx 代理返回 502 錯(cuò)誤

  • 檢查后端 Web 服務(wù)器是否正常運(yùn)行
  • 查看 Nginx 錯(cuò)誤日志(/usr/local/nginx/logs/error.log
  • 確認(rèn)upstream配置中的服務(wù)器 IP 和端口是否正確
  • 檢查 Web 服務(wù)器防火墻是否允許 Nginx 服務(wù)器訪問

7.5 生產(chǎn)環(huán)境最佳實(shí)踐

硬件配置建議

  • Nginx 服務(wù)器:4 核 CPU、8GB 內(nèi)存、100GB SSD 硬盤
  • Web 服務(wù)器:根據(jù)業(yè)務(wù)需求調(diào)整,建議至少 2 核 CPU、4GB 內(nèi)存
  • 網(wǎng)絡(luò):千兆網(wǎng)卡,交換機(jī)支持組播轉(zhuǎn)發(fā)

監(jiān)控體系搭建

  • 使用 Prometheus+Grafana 監(jiān)控 Nginx 和 Keepalived 狀態(tài)
  • 監(jiān)控指標(biāo)包括:CPU 使用率、內(nèi)存占用、磁盤空間、網(wǎng)絡(luò)流量、Nginx 請(qǐng)求數(shù)、Keepalived 狀態(tài)
  • 設(shè)置告警閾值,當(dāng)指標(biāo)異常時(shí)及時(shí)通知運(yùn)維人員

定期維護(hù)計(jì)劃

  • 每周進(jìn)行一次架構(gòu)切換測(cè)試,確保故障切換正常
  • 每月更新服務(wù)器系統(tǒng)補(bǔ)丁,修復(fù)安全漏洞
  • 每季度檢查硬件狀態(tài),更換老化部件
  • 每年重新評(píng)估架構(gòu)性能,根據(jù)業(yè)務(wù)增長(zhǎng)調(diào)整配置

災(zāi)備方案擴(kuò)展

  • 跨機(jī)房部署 Nginx+Keepalived 架構(gòu),實(shí)現(xiàn)異地容災(zāi)
  • 使用 DNS 輪詢結(jié)合 Keepalived,實(shí)現(xiàn)多機(jī)房流量分發(fā)
  • 對(duì)重要數(shù)據(jù)進(jìn)行異地備份,確保數(shù)據(jù)可靠性

7.6 架構(gòu)擴(kuò)展方案

增加 Nginx 服務(wù)器節(jié)點(diǎn)

  • 在雙主架構(gòu)基礎(chǔ)上,添加更多 Nginx 節(jié)點(diǎn),形成多主多備架構(gòu)
  • 使用 DNS 輪詢或更高層的負(fù)載均衡設(shè)備分發(fā)流量到多個(gè) VIP
  • 調(diào)整 Keepalived 配置,實(shí)現(xiàn)多節(jié)點(diǎn)之間的故障切換

集成 Haproxy 實(shí)現(xiàn)四層負(fù)載均衡

  • 在 Nginx 前端部署 Haproxy,實(shí)現(xiàn) TCP 層負(fù)載均衡
  • Haproxy 監(jiān)控 Nginx 服務(wù)器狀態(tài),當(dāng)某臺(tái) Nginx 故障時(shí)自動(dòng)剔除
  • 配置 Haproxy 的健康檢查機(jī)制,確保流量只轉(zhuǎn)發(fā)到正常工作的 Nginx 節(jié)點(diǎn)

容器化部署

  • 將 Nginx 和 Keepalived 打包為 Docker 容器,便于部署和管理
  • 使用 Kubernetes 管理容器集群,實(shí)現(xiàn)自動(dòng)擴(kuò)縮容和故障轉(zhuǎn)移
  • 通過 Service 和 Ingress 資源暴露服務(wù),實(shí)現(xiàn)高可用架構(gòu)

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • nginx常用基礎(chǔ)模塊詳解

    nginx常用基礎(chǔ)模塊詳解

    文章詳細(xì)介紹了Nginx的強(qiáng)大功能及其高度模塊化設(shè)計(jì),本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2026-03-03
  • nginx使用replace-filter-nginx-module實(shí)現(xiàn)內(nèi)容替換的示例

    nginx使用replace-filter-nginx-module實(shí)現(xiàn)內(nèi)容替換的示例

    本篇文章主要介紹了nginx使用replace-filter-nginx-module實(shí)現(xiàn)內(nèi)容替換的示例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-03-03
  • 詳解Nginx配置文件

    詳解Nginx配置文件

    Nginx是lgor Sysoev為俄羅斯訪問量第二的rambler.ru站點(diǎn)設(shè)計(jì)開發(fā)的,Nginx功能豐富,可作為HTTP服務(wù)器,也可作為反向代理服務(wù)器,郵件服務(wù)器。這篇文章主要介紹了Nginx配置文件,需要的朋友參考下
    2017-01-01
  • Nginx反向代理實(shí)現(xiàn)Vue跨域的示例

    Nginx反向代理實(shí)現(xiàn)Vue跨域的示例

    本文主要介紹了Nginx反向代理實(shí)現(xiàn)Vue跨域的示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • Nginx自定義日志中時(shí)間格式的操作方法

    Nginx自定義日志中時(shí)間格式的操作方法

    工作需要對(duì)接內(nèi)部的日志中臺(tái),對(duì)日志打印有固定的格式要求,為了使Nginx的access日志也能被采集,需要對(duì)日志格式進(jìn)行自定義,這篇文章主要介紹了Nginx自定義日志中時(shí)間格式,需要的朋友可以參考下
    2023-11-11
  • nginx容器配置文件獨(dú)立的實(shí)現(xiàn)

    nginx容器配置文件獨(dú)立的實(shí)現(xiàn)

    本文主要介紹了nginx容器配置文件獨(dú)立,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • Nginx服務(wù)器中配置非80端口的端口轉(zhuǎn)發(fā)方法詳解

    Nginx服務(wù)器中配置非80端口的端口轉(zhuǎn)發(fā)方法詳解

    這篇文章主要介紹了Nginx服務(wù)器中配置非80端口的端口轉(zhuǎn)發(fā)方法詳解,文中使用到了Nginx中的proxy_pass配置項(xiàng),需要的朋友可以參考下
    2016-04-04
  • Nginx 的多站點(diǎn)配置方案

    Nginx 的多站點(diǎn)配置方案

    這篇文章主要介紹了Nginx 的多站點(diǎn)配置方案,需要的朋友可以參考下
    2017-07-07
  • Nginx內(nèi)容緩存以及常見參數(shù)配置詳析

    Nginx內(nèi)容緩存以及常見參數(shù)配置詳析

    這篇文章主要給大家介紹了關(guān)于Nginx內(nèi)容緩存以及常見參數(shù)配置的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Nginx具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • nginx配置中proxy_pass反向代理502的bug記錄

    nginx配置中proxy_pass反向代理502的bug記錄

    這篇文章主要介紹了nginx配置中proxy_pass反向代理502的bug記錄,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-01-01

最新評(píng)論

滨海县| 林西县| 马边| 清原| 阿克苏市| 洛川县| 江孜县| 新巴尔虎左旗| 万宁市| 贵阳市| 宜宾县| 阳春市| 当阳市| 瑞昌市| 乌拉特前旗| 江阴市| 峨边| 淮北市| 临汾市| 新津县| 沙河市| 二手房| 嵩明县| 乌兰察布市| 彭阳县| 吐鲁番市| 京山县| 青铜峡市| 乌兰察布市| 武宣县| 武鸣县| 唐山市| 丰顺县| 榕江县| 华阴市| 麟游县| 开封县| 卢氏县| 池州市| 交城县| 宁蒗|