Nginx+keepalived主從,雙主架構(gòu)詳解
一、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 地址 | 備注 |
|---|---|---|
| web01 | 192.168.10.103 | 提供 Web 服務(wù),端口 8081 |
| web02 | 192.168.10.104 | 提供 Web 服務(wù),端口 8082 |
| nginx01 | 192.168.10.101 | Nginx 主服務(wù)器(主從架構(gòu)中為 master) |
| nginx02 | 192.168.10.102 | Nginx 從服務(wù)器(主從架構(gòu)中為 backup) |
| 虛擬 IP(主從) | 192.168.10.100 | 對(duì)外服務(wù) IP |
| 虛擬 IP1(雙主) | 192.168.10.100 | nginx01 為主時(shí)使用 |
| 虛擬 IP2(雙主) | 192.168.10.200 | nginx02 為主時(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)
- 健康檢查機(jī)制:通過腳本實(shí)時(shí)監(jiān)控 Nginx 狀態(tài),確保故障及時(shí)發(fā)現(xiàn)
- VRRP 協(xié)議:實(shí)現(xiàn) VIP 的自動(dòng)切換,保證服務(wù)連續(xù)性
- 配置一致性:主從服務(wù)器配置需保持一致,避免切換失敗
- 測(cè)試驗(yàn)證:定期進(jìn)行故障切換測(cè)試,確保架構(gòu)可靠性
7.3 進(jìn)一步優(yōu)化方向
- 添加日志記錄:在檢查腳本中添加日志,方便故障排查
# 修改檢查腳本 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
- 配置郵件告警:當(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
# 其他配置保持不變...
}
- 優(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;
}
}
- 添加磁盤監(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
- 配置 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ù)且state為BACKUP - 確認(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è)參考,也希望大家多多支持腳本之家。
- nginx+keepalived雙主模式雙主熱備方式
- Docker+Nginx+KeepaLived實(shí)現(xiàn)Nginx一主一從高可用方式
- keepalived+nginx+httpd實(shí)現(xiàn)的雙機(jī)熱備+負(fù)載均衡
- Keepalived搭建nginx高可用的實(shí)現(xiàn)
- Nginx使用Keepalived部署web集群(高可用高性能負(fù)載均衡)實(shí)戰(zhàn)案例
- Nginx+keepalived配置的實(shí)現(xiàn)步驟
- Keepalived+Nginx雙機(jī)配置小結(jié)
- keepalived+nginx實(shí)現(xiàn)網(wǎng)站高可用性
相關(guān)文章
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反向代理實(shí)現(xiàn)Vue跨域的示例
本文主要介紹了Nginx反向代理實(shí)現(xiàn)Vue跨域的示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-06-06
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中的proxy_pass配置項(xiàng),需要的朋友可以參考下2016-04-04
nginx配置中proxy_pass反向代理502的bug記錄
這篇文章主要介紹了nginx配置中proxy_pass反向代理502的bug記錄,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-01-01

