1. 程式人生 > 其它 >lvs的DR模式部署

lvs的DR模式部署

目錄

一.環境準備

4臺機器需要在一個內網環境中,或在一個交換機下。

LVS+keepalived主機
真實:10.10.10.10
虛擬:10.10.10.135

LVS+keepalived備機
真實:10.10.10.11
虛擬:10.10.10.135

後端web伺服器A
真實:10.10.10.60
虛擬:10.10.10.135

後端web伺服器B
真實:10.10.10.61
虛擬:10.10.10.135

二.安裝

後端web(A和B操作)

需要A和B均操作如下,在建立測試頁面部分需要變動

1.安裝httpd伺服器
yum install -y httpd
systemctl start httpd
systemctl enable httpd

2.建立測試頁面並測試,A和B機器頁面要不一樣
echo "welcome A" > /var/www/html/index.html
curl http://127.0.0.1

3.編寫轉發指令碼
vim forward.sh

#!/bin/bash

#網絡卡和vip
NET_KA=enp0s8
SNS_VIP=10.10.10.135

case "$1" in
start)
       ifconfig ${NET_KA}:0 $SNS_VIP netmask 255.255.255.255 broadcast $SNS_VIP
	   #/sbin/route add -host $SNS_VIP dev ${NET_KA}:0
       echo "1" >/proc/sys/net/ipv4/conf/${NET_KA}/arp_ignore
       echo "2" >/proc/sys/net/ipv4/conf/${NET_KA}/arp_announce
       echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
       echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
       sysctl -p >/dev/null 2>&1
       echo "RealServer Start OK"
       ;;
stop)
       ifconfig ${NET_KA}:0 down
	   #route del $SNS_VIP >/dev/null 2>&1
       echo "0" >/proc/sys/net/ipv4/conf/${NET_KA}/arp_ignore
       echo "0" >/proc/sys/net/ipv4/conf/${NET_KA}/arp_announce
       echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore
       echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce
       echo "RealServer Stoped"
       ;;
*)
       echo "Usage: $0 {start|stop}"
       exit 1
esac
exit 0

4.執行指令碼
bash forward.sh start

5.測試,可以看到出現虛擬ip
ifconfig

負載均衡(配置主)

1.安裝依賴
yum install -y openssl openssl-devel keepalived ipvsadm

2.路由轉發
echo "1" >/proc/sys/net/ipv4/ip_forward

3.配置
vim /etc/keepalived/keepalived.conf

! Configuration File for keepalived

global_defs {
   router_id LVS_1  # 設定lvs的id,網路內唯一
}

vrrp_instance VI_1 {
    state MASTER   #指定Keepalived的角色,MASTER為主,BACKUP為
    interface enp0s8 #繫結網絡卡
    virtual_router_id 51  #虛擬路由編號,主備要一致
    priority 100  #定義優先順序,數字越大,優先順序越高,主DR必須大於備用DR
	 nopreempt #掛掉再啟動後,不進行搶佔
    advert_int 1  #主從之間心跳間隔,預設1s
    authentication {  #裝置驗證資訊,主從要一樣
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        10.10.10.135  #定義虛擬IP(VIP)
    }
}

#定義對外提供服務的LVS的VIP以及port
virtual_server 10.10.10.135 80 {
    delay_loop 6 # 設定健康檢查時間,單位是秒
    lb_algo rr # 設定負載排程的演算法為輪詢
    lb_kind DR # 設定LVS實現負載的機制
    #persistence_timeout 5 #新增後就持久化
    protocol TCP

    real_server 10.10.10.60 80 {  # 指定real server1的IP地址
        weight 3   # 配置節點權值,數字越大權重越高
        TCP_CHECK { #對後端節點進行檢測
        connect_timeout 3 #超時時間
        nb_get_retry 3 #重試次數
        delay_before_retry 3 #多長時間重試
        connect_port 80
        }
    }

    real_server 10.10.10.61 80 {
        weight 3
        TCP_CHECK {
        connect_timeout 3
        nb_get_retry 3
        delay_before_retry 3
        connect_port 80
        }
     }
}

4.啟動keepalived
systemctl start keepalived
systemctl enable keepalived

5.測試,檢視是否有10.10.10.135這個虛擬ip
ip addr

測試網頁,看是否輪詢了,需要在別的機器上檢測,不能在節點伺服器上檢測。
curl http://10.10.10.135
curl http://10.10.10.135

負載均衡(配置從)

1.安裝依賴
yum install -y openssl openssl-devel keepalived ipvsadm

2.路由轉發
echo "1" >/proc/sys/net/ipv4/ip_forward

3.配置
vim /etc/keepalived/keepalived.conf

! Configuration File for keepalived

global_defs {
   router_id LVS_2  # 設定lvs的id,網路內唯一
}

vrrp_instance VI_1 {
    state BACKUP   #指定Keepalived的角色,MASTER為主,BACKUP為
    interface enp0s8 #繫結網絡卡
    virtual_router_id 51  #虛擬路由編號,主備要一致
    priority 80  #定義優先順序,數字越大,優先順序越高,主DR必須大於備用DR
    nopreempt #掛掉再啟動後,不進行搶佔
	advert_int 1  #主從之間心跳間隔,預設1s
    authentication {  #裝置驗證資訊,主從要一樣
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        10.10.10.135  #定義虛擬IP(VIP)
    }
}

#定義對外提供服務的LVS的VIP以及port
virtual_server 10.10.10.135 80 {
    delay_loop 6 # 設定健康檢查時間,單位是秒
    lb_algo rr # 設定負載排程的演算法為輪詢
    lb_kind DR # 設定LVS實現負載的機制
    #persistence_timeout 5 #新增後就持久化
    protocol TCP

    real_server 10.10.10.60 80 {  # 指定real server1的IP地址
        weight 3   # 配置節點權值,數字越大權重越高
        TCP_CHECK { #對後端節點進行檢測
        connect_timeout 3 #超時時間
        nb_get_retry 3 #重試次數
        delay_before_retry 3 #多長時間重試
        connect_port 80
        }
    }

    real_server 10.10.10.61 80 {
        weight 3
        TCP_CHECK {
        connect_timeout 3
        nb_get_retry 3
        delay_before_retry 3
        connect_port 80
        }
     }
}

4.啟動keepalived
systemctl start keepalived
systemctl enable keepalived

5.測試,檢視是否有10.10.10.135這個虛擬ip
ip addr

測試網頁,看是否輪詢了,需要在別的機器上檢測,不能在節點伺服器上檢測。
curl http://10.10.10.135
curl http://10.10.10.135

三.使用驗證

負載均衡掛掉一個節點,訪問正常

1.在負載均衡主上關機
init 0

2.在瀏覽器測試
curl http://10.10.10.135

web服務掛掉一個節點,訪問正常

1.在web服務A上關機
init 0

2.在瀏覽器測試
curl http://10.10.10.135

本文版權歸作者所有,歡迎轉載,請務必新增原文連結。