高可用架構中,需將虛擬 IP (VIP) 從主節點秒級遷移至備節點,且不中斷現有連線。核心技術:**介面別名 (eth0:0) 啟用 VIP** + **arping 發送免費 ARP (Gratuitous ARP) 更新交換機 MAC 表**。本文提供生產級指令序列與腳本化範例。

192.168.110.12 (實體 IP),持有 VIP 192.168.110.100192.168.110.13,待接管 VIP192.168.110.1# 1. 主節點先關閉 VIP (若仍存活)
# ssh root@192.168.110.12 "ifconfig eth0:0 down"
# 2. 備節點啟用 VIP 別名介面
ifconfig eth0:0 192.168.110.100/24 up
# 3. 發送免費 ARP 宣告 (關鍵步驟)
arping -c 3 -I eth0 -s 192.168.110.100 192.168.110.1
# -c 3: 發送 3 個 ARP 回覆
# -I eth0: 綁定發送介面
# -s 192.168.110.100: 發送者 IP (VIP)
# 192.168.110.1: 目標 IP (閘道/交換機),觸發 MAC 表更新
| 參數 | 說明 |
|---|---|
-c COUNT |
發送請求/回覆次數 (建議 3-5) |
-I INTERFACE |
指定發送介面 (必須為 L2 可達) |
-s SOURCE_IP |
ARP 封包中 Sender Protocol Address (此處為 VIP) |
-U |
發送 **ARP Reply** (Unsolicited/Gratuitous),而非 Request (預設) |
-A |
同 -U,明確語意為 Gratuitous ARP |
建議加上 -U 或 -A 明確發送免費 ARP 回覆,某些交換機忽略 Request 只學習 Reply。
#!/bin/bash
# /usr/local/bin/vip-takeover.sh
VIP="192.168.110.100/24"
IFACE="eth0"
GW="192.168.110.1"
ARPING="/usr/sbin/arping"
case "$1" in
start)
ip addr add $VIP dev $IFACE label $IFACE:0
$ARPING -c 5 -A -I $IFACE -s ${VIP%/*} $GW
;;
stop)
ip addr del $VIP dev $IFACE label $IFACE:0
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
;;
esac
# /etc/keepalived/keepalived.conf
vrrp_instance VI_1 {
state MASTER # 備節點設 BACKUP
interface eth0
virtual_router_id 51
priority 100 # 備節點 90
advert_int 1
authentication {
auth_type PASS
auth_pass secret
}
virtual_ipaddress {
192.168.110.100/24 dev eth0 label eth0:0
}
notify_master "/usr/local/bin/vip-takeover.sh start"
notify_backup "/usr/local/bin/vip-takeover.sh stop"
notify_fault "/usr/local/bin/vip-takeover.sh stop"
}
# 客戶端持續 ping VIP
ping 192.168.110.100
# 手動觸發切換 (主節點 systemctl stop keepalived)
# 觀察 ping 是否中斷 (正常 < 1 秒丟包 0-1 個)
掌握 ifconfig eth0:0 + arping -U 核心組合,即可在傳統機房/私有雲實現秒級 IP 無縫漂移,為資料庫主從切換、Nginx 熱備、服務發現提供網路層高可用基石。
Linux 禁止特定 IP 存取:hosts.allow / hosts.deny 與 tcpd 實戰配置
Linux 下修改 MySQL root 密碼導致資料庫消失的修復方法
CentOS 安裝 StarDict 离線字典完整教學:RPM 套件下載、yum 本地安裝、字典檔案部署
Linux 檔案類型與副檔名關係解析:一般檔/目錄/字元裝置/區塊裝置/符號連結/管道/Socket 完整分類
Ubuntu Qt Creator 無法輸入中文?Fcitx5 + Sogou 輸入法完整配置指南
Linux 救援模式实战:修复 /etc/fstab 错误导致的启动失败
Linux VLAN、三層交換與 Trunk 概念釐清:Bridge 實作 VLAN、802.1Q 標記、Router-on-a-Stick 實戰