LVS - 直接路由(DR)模式示例

襲冷發表於2018-05-17

1、排程伺服器的lvs_serv_dr.sh指令碼

#! /bin/bash

#定義虛擬IP和實服務IP變數
Vip=192.168.2.200
Rs1=192.168.2.222
Rs2=192.168.2.231

source /etc/rc.d/init.d/functions
case "$1" in
start)
    echo "Start LVS of Server..."
    # 在Director伺服器上基於物理網路卡eth0建立一個虛擬網路介面(新增一個子網路卡,設定它的虛擬IP和廣播地址以及子網掩碼並啟動)
    /sbin/ifconfig eth0:1 $Vip broadcast $Vip netmask 255.255.255.255 up
    # 開啟Director伺服器上開啟路由轉發功能(多網路卡下的網路卡間資料包轉發)
    #echo 1 > /proc/sys/net/ipv4/ip_forward
    # 將虛擬地址新增到路由表
    /sbin/route add -host $Vip dev eth0:1
    # 清除所有的虛擬伺服器記錄
    /sbin/ipvsadm -C
    # 在核心虛擬伺服器表中新增一臺虛擬伺服器(指定為tcp協議,指定虛擬ip和prot,指定排程演算法)
    /sbin/ipvsadm -A -t $Vip:6500 -s rr  # rr 表示輪詢排程
    # 在一臺虛擬伺服器中增加一臺新的真實伺服器(執行虛擬服務對應真實服務的關係,指定負載均衡模式)
    /sbin/ipvsadm -a -t $Vip:6500 -r $Rs1:6500 -g  # -g 表示DR模式
    /sbin/ipvsadm -a -t $Vip:6500 -r $Rs2:6500 -g
    # 啟動LVS
    /sbin/ipvsadm
    ;;
    
stop)
    echo "Close LVS of Server..."
    # 清除所有的虛擬伺服器記錄
    /sbin/ipvsadm -C
    # 關閉這個子網路卡
    /sbin/ifconfig eth0:1 down
    ;;
    
*)    
    echo "Usage: $0 {start|stop}"
    ;;  
       
esac     
exit 0

2、真實伺服器的lvs_real_dr.sh指令碼 

#!/bin/bash

#定義虛擬IP變數
Vip=192.168.2.200

source /etc/rc.d/init.d/functions
case "$1" in

start)
    echo "Start Real Server..."
    # 在Real伺服器上基於迴環虛擬網路卡lo建立一個虛擬網路介面
    /sbin/ifconfig lo:1 $Vip broadcast $Vip netmask 255.255.255.255 up
    # 將虛擬地址新增到路由表
    /sbin/route add -host $Vip dev lo:1
    # 定義對目標地址為本地IP的ARP詢問的應答模式(1表示只應答目標Ip是接收請求的網路介面(非網路卡,雙介面可共用一個網路卡)本地地址的ARP查詢請求)
    echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
    # 控制系統在對外傳送arp請求時,如何選擇arp請求資料包的源IP地址(2表示忽略Ip資料包源地址,選擇可能接收到該ARP迴應的網路介面來進行傳送)
    echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
    echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
    echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
    ;;
    
stop)
    echo "Close Real Server..."
    # 關閉這個網路卡
    ifconfig lo:1 down
    # 恢復arp_ignore和arp_announce的值
    echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore
    echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce
    echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore
    echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce
    ;;
    
*)
    echo "Usage: "$1" {start|stop}"
    ;;
    
esac
exit 0


3、補充說明

    1). Director 上需要安裝 ipvsadm,命令:yum install -y ipvsadm

    2). 指令碼使用方式:./lvs_serv_dr.sh start




相關文章