LVS-DR模型實現調度

LVS-DR集羣環境實現

(LVS服務器的網關可以任意配置,只要能出本地接口就行)

    實驗環境:(5臺主機)

        一臺客戶端

        一臺路由器

        一臺LVS服務器

        兩臺RS服務器

1、搭建網絡環境

    路由器配置:

        一個接口連接私網

            私網需要配置兩個

            一個要和發佈出去的私網IP通信(VIP:10.0.0.100,掩碼可以任意)

            一個要和和LVS和RS服務器間通信(DIP:192.168.205.101)

        一個接口連接公網

      配置IP:

            公網IP配置:

DEVICE=eth1
ONBOOT=yes
BOOTPROTO=none
IPADDR=172.18.106.21
PREFIX=16

            私網IP配置:

                cd /etc/sysconfig/network-scripts

                vim ifcfg-eth0

DEVICE=eth0
ONBOOT=yes
BOOTPROTO=none
IPADDR=192.168.205.101
FREFIX=24

                cp ifcfg-eth0 ifcfg-eth0:1

DEVICE=eth0:1
ONBOOT=yes
BOOTPROTO=none
IPADDR=10.0.0.200
PREFIX=24(私網IP,且與LVS的VIP能通信)

          打開IP轉發功能

                vim /etc/sysctl.conf

net.ipv4.ip_forward = 1

          重啓network服務

    LVS網絡配置:

        cd /etc/sysconfig/network-scripts

        vim ifcfg-ens33

NAME=ens33
DEVICE=ens33
ONBOOT=yes
BOOTPROTO=none
IPADDR=192.168.205.132
PREFIX=24
GATEWAY=192.168.205.101(網關可以任意配置,因爲響應報文直接由RS服務器發往Clinet)

        重啓network服務

    RS網絡配置(兩臺配置幾乎相同,IP改一下就行了)

        cd /etc/sysconfig/network-scripts

        vim ifcfg-ens33

NAME=ens33
DEVICE=ens33
ONBOOT=yes
BOOTPROTO=none
IPADDR=192.168.205.132
PREFIX=24
GATEWAY=192.168.205.101(網關需要指定爲路由器,由於只有一個路由器,所以指向路由器接口的IP)

        重啓network服務

2、實現LVS-DR模型

    LVS服務器

#!/bin/bash
vip='10.0.0.100'
iface='ens33:1'
mask='255.255.255.255'
port='80'
rs1='192.168.205.100'
rs2='192.168.205.160'
scheduler='wrr'(調度算法可以修改)
type='-g'
case $1 in
start)
ifconfig $iface $vip netmask $mask 
iptables -F
ipvsadm -A -t ${vip}:${port} -s $scheduler
ipvsadm -a -t ${vip}:${port} -r ${rs1} $type -w 1(修改調度算法的時候這裏可修改窮權重)
ipvsadm -a -t ${vip}:${port} -r ${rs2} $type -w 1
;;
stop)
ipvsadm -C
ifconfig $iface down
;;
*)
echo "Usage $(basename $0) start|stop";exit 1
;;
esac

    RS服務器

#!/bin/bash
vip='10.0.0.100'
mask='255.255.255.255'
dev=lo:1
case $1 in
start)
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore(會還網卡的arp_ignore可以爲默認值,不影響客戶端訪問RS服務器)
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce(迴環網卡的arp_announce可以爲默認值,不影響客戶端訪問RS服務器)
ifconfig $dev $vip netmask $mask 
;;
stop)
ifconfig $dev down
echo 0 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 0 > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo 0 > /proc/sys/net/ipv4/conf/all/arp_announce
echo 0 > /proc/sys/net/ipv4/conf/lo/arp_announce
;;
*)
echo "Usage: $(basename $0) start|stop"
exit 1
;;
esac

注意:此腳本設置的IP沒有保存到文件中,如果重啓網絡服務需重新運行腳本

    瞭解內容:

    限制響應級別:arp_ignore

        0:默認值,表示可使用本地任意接口上配置的任意地址進行響應

        1: 僅在請求的目標IP配置在本地主機的接收到請求報文的接口上時,纔給予響應

    限制通告級別:arp_announce

        0:默認值,把本機所有接口的所有信息向每個接口的網絡進行通告

        1:儘量避免將接口信息向非直接連接網絡進行通告

        2:必須避免將接口信息向非本網絡進行通告

實現http和https在同一集羣調度

    在防火牆上打標籤

        iptables -t mangle -A PREROUTING -d 10.0.0.100 -p tcp -m muliport --dport 80,443 -j MARK  --set-mark 10

    添加集羣(如果之前有別的httpd服務的集羣,可以刪掉)

        ipvsadm -A -f 10 -s wrr

    添加集羣的RS服務器

           ipvsadm -a -f 10 -r 192.168.205.100 -g

           ipvsadm -a -f 10 -r 192.168.205.160 -g

持久連接實現方式:-p選項

    每端口持久(PPC):每個端口對應定義爲一個集羣服務,每集羣服務單獨調度

    每防火牆標記持久(PFWMC):基於防火牆標記(MAKRK)定義集羣服務;可實現將多個端口上的應用統一調度,即所謂的port Affinity

    每客戶端持久(PCC):基於0端口(表示所有服務)定義集羣服務,即將客戶端對所有應用的請求都調度至後端主機,必須定義爲持久模式


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章