LVS + KEEPAlived 配置 DIR模式

1 .1 Lvs

LVS是Linux Virtual Server的簡寫,意即Linux虛擬服務器,是一個虛擬的服務器集羣系統。本項目在1998年5月由章文嵩博士成立,是中國國內最先出現的自由軟件項目之一。目前有三種IP負載均衡技術(VS/NAT、VS/TUN和VS/DR)linux

本文主要介紹DR模式運用算法

1 .2 DR模式     

DR模式是什麼?撇開lvs調度算法部分,DR模式的原理就是,將報文直接路由給目標服務器(Direct Routing),其實這裏沒有routing啥事情,叫作Direct Select更準確一些,爲何這麼說呢?由於他直接不修改數據包,他直接把數據包打包成以太網的數據幀,只是這個數據幀裏的目標MAC地址是最終的真實服務器的MAC地址,因此DR模式要求在同一個物理網段,不能跨路由。shell

當目標服務器收到這個數據幀的時候,把它解包,當服務器發現數據包的目標地址(也就是VIP)是在本地的網絡設備上(通常都是在真實服務器的lo:0上綁定一個vip地址),服務器處理這個數據包,而後根據本地路由表將響應報文直接返回給客戶vim

2.1 keepalived  bash

這裏是用keepalived來進行lvs的創建和服務器和vip的健康檢查,其實keepalived就像一個shell,他自動的給你作lvs+vrrp。服務器

keepalived自己來作真實服務器的健康檢查,vrrp來作vip的冗餘。網絡

VIP:192.168.2.240負載均衡

LVS:192.168.2.210 192.168.2.211oop

Realserver: 192.168.2.212 192.168.2.213spa

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

   所需軟件:keepalived

             Ipvsadm(主要是管理查看做用)

# ln -s /usr/src/kernels/2.6.18-92.el5-i686 /usr/src/linux

# tar -zxvf ipvsadm-1.24.tar.gz

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

先配置 Realserver  腳本:

/opt/lvs_server.sh  192.168.2.212

#!/bin/bash
# description: Config realserver
VIP=192.168.2.240
/etc/rc.d/init.d/functions
case "$1" in
start)
        /sbin/ifconfig lo:0 $VIP netmask 255.255.255.255 broadcast $VIP
        /sbin/route add -host $VIP dev lo:0
        echo "1" > /proc/sys/net/ipv4/conf/lo/arp_ignore
        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
        sysctl -p > /dev/null 2>&1
        echo "RealServer Start OK"
        ;;
stop)
        /sbin/ifconfig lo:0 down
        /sbin/route del $VIP > /dev/null 2>&1
        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 "RealServer Stoped"
        ;;
*)
        echo "Usage: $0 {start|stop}"
        exit 1
esac
exit 0

# scp /opt/lvs_server.sh root@192.168.2.213:/opt/  

加入到開

vim /etc/rc.d/rc.local

/bin/bash /opt/lvs_real start

 

配置keepalived :

vim /etc/keepalived/keepalived.conf 192.168.2.210

! Configuration File for keepalived

global_defs {
   notification_email {
     jackchengwc@gmail.com
   }
   notification_email_from jackchengwc@163.com
   smtp_server smtp.163.com
   smtp_connect_timeout 30
   router_id LVS_DEVEL
}

vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 51
    priority 100
    advert_int 5
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.2.240
    }
}

virtual_server 192.168.2.240 80 {
    delay_loop 6
    lb_algo wlc
    lb_kind DR
    persistence_timeout 60
    protocol TCP

    real_server 192.168.2.212 80 {
        weight 3
        TCP_CHECK {
          connect_timeout 10
          nb_get_retry 3
          delay_before_retry 3
          connect_port 80
        }
}
    real_server 192.168.2.213 80 {
        weight 3
        TCP_CHECK {
          connect_timeout 10
          nb_get_retry 3
          delay_before_retry 3
          connect_port 80
        }
    }

}

# scp /etc/keepalived/keepalived.conf root@192.168.2.211:/etc/keepalived/

 

 

lvs_sync_daemon_inteface eth0  #負載均衡器之間的監控接口,相似於HA HeartBeat的心跳線。但它的機制優於Heartbeat,由於它沒有「裂腦」這個問題,它是以優先級這個機制來規避這個麻煩的。在DR模式 中,lvs_sync_daemon_inteface 與服務接口interface 使用同一個網絡接口

    virtual_router_id 51 #虛擬路由標識,這個標識是一個數字,而且同一個vrrp實例使用惟一的標識。即同一個vrrp_stance,MASTER和BACKUP的virtual_router_id是一致的,同時在整個vrrp內是惟一的

 mcast_src_ip 192.168.2.240

    #mcast_src_ip #多播的源ip,設置爲這臺lvs的ip 好像不用也行

    priority 100 #路由的優先級別,主lvs要設置的比從lvs要高

    advert_int 1

    authentication {

        auth_type PASS #同一vrrp實例MASTER與BACKUP 使用相同的密碼才能正常通訊

        auth_pass 1111

    }

    virtual_ipaddress {

        192.168.11.240 #虛擬ip,也就是vip地址。能夠設置不少組vip

    }

delay_loop 3 #健康檢查的間隔

lb_algo wlc #lvs的調度算法

lb_kind DR #lvs的調度模式

persistence_timeout 50 #鏈接保持的超時時間,保證一個用戶的鏈接老是導向到同一個服務器,當用戶第一次訪問的時候,他的訪問請求被負載均衡器轉給某個真實服務器,這樣他看到一個登錄頁面,第一次訪問完畢;接着他在登錄框填寫用戶名和密碼,而後提交;這時候,問題就可能出現了—登錄不能成功。由於沒有會話保持,負載均衡器可能會把第2次的請求轉發到其餘的服務器

    #用ipvsadm -Lcn 觀察是否生效

protocol TCP

     ha_suspend  #禁止,vip失效的時候對真實服務器進行健康檢查(也就是說備用服務器不會去作真實服務器的健康檢查)

 

# ipvsadm -L -n 這個命令查看 

相關文章
相關標籤/搜索