Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> 關於 Linux

Linux 雙伺服器 IP 無縫切換實戰:ifconfig 別名介面 + arping 免費 ARP 宣告秒級遷移

編輯:關於 Linux

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

IP 切換架構圖

場景定義

  • 主節點:192.168.110.12 (實體 IP),持有 VIP 192.168.110.100
  • 備節點:192.168.110.13,待接管 VIP
  • 閘道/交換機:192.168.110.1
  • 目標:不斷網 將 VIP 從主遷移至備

核心指令序列 (在備節點執行)

# 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 表更新

arping 參數詳解

參數說明
-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。

自動化腳本範例 (搭配 keepalived/pacemaker)

#!/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

進階:Keepalived 完整高可用配置

# /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"
}
  • Keepalived 自動處理 VRRP 選舉、VIP 漂移、arping 通知
  • 支援多 VIP、多實例、健康檢查腳本整合

驗證切換效果

# 客戶端持續 ping VIP
ping 192.168.110.100

# 手動觸發切換 (主節點 systemctl stop keepalived)
# 觀察 ping 是否中斷 (正常 < 1 秒丟包 0-1 個)

注意事項

  • 雙節點 **必須同一 L2 網段** (同一 VLAN/交換機)
  • 交換機需啟用 **ARP 學習** (預設開啟),無 Port Security 封鎖
  • VIP 不可與實體 IP 衝突
  • 雲環境 (AWS/Azure/GCP) **不支援 Gratuitous ARP**,需用 API 修改路由表/負載平衡器

掌握 ifconfig eth0:0 + arping -U 核心組合,即可在傳統機房/私有雲實現秒級 IP 無縫漂移,為資料庫主從切換、Nginx 熱備、服務發現提供網路層高可用基石。

Copyright © Windows教程網 All Rights Reserved