經過keepalived搭建高可用的LVS負載均衡集羣

1、keepalived軟件簡介算法

keepalived是基於vrrp協議實現高可用功能的一種軟件,它能夠解決單點故障的問題,經過keepalived搭建一個高可用的LVS負載均衡集羣時,keepalived還能檢測後臺服務器的運行狀態。
vim

2、vrrp協議原理簡介bash

vrrp(虛擬路由器冗餘協議),是爲了解決網絡上靜態路由出現的單點故障的問題,舉個例子,以下圖服務器

wKioL1fOteTgGJseAAAiC5Hq1OE050.png

主機A和B均在同一個局域網內,C和D均是該局域網的網關,即A和B想與外網通訊,需指網關到C或D,那究竟指向C好仍是指向D好呢?都很差!當指向C時,若是C出故障時,局域網內的主機就無法與外界通訊了,指向D問題也是同樣,vrrp這時候就有用了,在C和D之間運行vrrp協議,vrrp將C和D虛擬成一個設備E,對外提供一個虛擬ip地址,A和B將網關指向虛擬ip地址便可,在vrrp組內,將各成員分爲MASTER和BACKUP(一個組內只能有1個MASTER,能夠有多個BACKUP),MASTER就是實際上提供服務的節點,MASTER和BACKUP的選舉經過優先級選舉,優先級高的即爲MASTER,VRRP運行時MASTER定時發送VRRP通告信息,表示MASTER工做正常,BACKUP只接收VRRP數據,不發送數據,若是必定時間內沒有接收到MASTER的通告信息,各BACKUP將宣告本身成爲MASTER,發送通告信息,從新進行MASTER選舉狀態。網絡


3、實驗部分負載均衡

ip地址分配:ide

    VIP:192.168.56.110
oop

    Director Server1 IP:192.168.56.101
spa

    Director Server2 IP:192.168.56.102orm

    Realserver1 IP:192.168.56.103

    Realserver2 IP:192.168.56.104

LVS相關配置方案:

    模型:DR

    調度算法:rr(輪循)

安裝配置過程:

經過keepalived搭建LVS高可用集羣配置很是簡單,lvs的配置和節點的監控均在keepalived配置文件中配置完成

一、安裝前先檢查/usr/src/kernels目錄下有沒有內核的源碼,後面keepalived編譯時要用到,若是沒有,則先安裝

yum install kernel-devel

二、編譯安裝keepalived

tar zxvf keepalived-1.2.23.tar.gz 
cd keepalived-1.2.23
./configure --sysconf=/etc --with-kernel-dir=/usr/src/kernels/2.6.32-642.4.2.el6.x86_64/
make && make install
ln -sv /usr/local/sbin/keepalived /sbin/keepalived    #建立連接(不建立的話啓動/etc/init.d/keepalived腳本時會報錯)

三、修改配置文件/etc/keepalived/keepalived.conf

#全局定義部分
global_defs {
   notification_email {
     root@lzs.com
     zsgg@lzs.com
   }                    #設置發生異常時向哪一個郵箱發通知,能夠設>置多個郵箱,每一個一行,服務器上的sendmail服務必須開啓
   notification_email_from keepalived@lzs.com   #設置郵件的發送方
   smtp_server 192.168.56.1    #設置smtp服務器的ip地址
   smtp_connect_timeout 30      #設置鏈接smtp服務器的超時時間
   router_id LVS_LZS            #keepalived服務器的標識,將顯示在報警郵件的主題>中      
}

#定義vrrp實例
vrrp_instance VI_1 {
    state MASTER                #指定此主機的角色是MASTER,注意要大寫
    interface eth0              #指定綁定的接口,即配置虛擬ip地址的接口
    virtual_router_id 51        #指定VRID,該標識爲一個數字,同一個vrrp實例中的MASTER和BACKUP的VRID必須一致
    priority 100                #指定優先級,MASTER的優先級必須高於BACKUP
    advert_int 1                #指定MASTER發送通告信息的時間間隔
    authentication {            #設置同一個vrrp組中各節點的驗證類型和驗證密碼,>即同一vrrp組下,各節點的驗證類型和驗證密碼必須一致才能互相通訊
        auth_type PASS          #設置驗證類型,有PASS和HA兩種
        auth_pass 1111          #設置驗證密碼,
    }
    virtual_ipaddress {         #設置虛擬ip地址,可多個
        192.168.56.110
        192.168.56.120
    }
}

#虛擬服務器定義(在這部分配置LVS)
virtual_server 192.168.56.110 80 {      #設置虛擬服務器的ip和端口,用空格隔開
    delay_loop 6                #每隔6秒對realserver進行健康狀態檢查
    lb_algo rr                  #設置調度算法
    lb_kind DR                  #設置LVS的類型,有DR、NAT和TUN
    persistence_timeout 50      #設置會話保持時間,用戶在請求頁面後,若在50s內有操做時,請求會一直分發到同一服務節點上,並從新開始計時
    protocol TCP                #指定轉發協議類型,有UDP和TCP

    real_server 192.168.56.103 80 {     #配置realserver的ip和端口,用空格隔開
        weight 1                        #設置權重
        TCP_CHECK {                     #對realserver狀態檢查的設置
            connect_timeout 3           #3秒無響應時超時
            nb_get_retry 3              #表示重試的次數
            delay_before_retry 3        #表示重試的時間間隔
        }
    }
    real_server 192.168.56.104 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
}

    注意要點:keepalived啓動時默認查找/etc/keepalived/keepalived.conf配置文件,若想指定配置文件,可」keepalived -f 配置文件 「啓動。


四、將MASTER的配置文件複製到BACKUP上,並修改配置文件中的state和priority

state BACKUP
priority 70    #改得比MASTER小


五、配置realserver服務器

    一、編寫啓動腳本

vim /etc/init.d/lvs_rs

#! /bin/bash
VIP=192.168.56.110
case $1 in
start)
        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
        /sbin/ifconfig lo:0 $VIP netmask 255.255.255.255 broadcast $VIP up
        ;;
stop)
        /sbin/ifconfig lo:0 down
        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:$0 {start|stop}"
        exit 1
        ;;
esac

    二、添加執行權限

chmod +x /etc/init.d/lvs_rs

    三、啓動腳本

./etc/init.d/lvs_rs

六、啓動MASTER和BACKUP上的keepalived服務

/etc/init.d/keepalived start


至此,搭建的LVS集羣系統已正常運行了~~~~

相關文章
相關標籤/搜索