keepalived+LVS高可用Director Server

RHEL6.6_x86_64linux

主要軟件:算法

    keepalived-1.2.16.tar.gzvim

    ipvsadm-1.26-4.el6.x86_64.rpmbash

 

Keepalived是一種高性能的服務器高可用解決方案,架構不一樣於corosyncheartbeatKeepalived的實現是基於VRRPVirtual Router Redundancy Protocol,虛擬路由冗餘協議),VRRP是一種容錯協議。一個網絡內的全部主機都設置有一條默認路由,這樣,主機發出的目的地址不在本網段的報文將經過默認路由發送往RouterA,從而實現主機與外網通訊。當RouterA掛掉,本網段中全部以RouterA爲默認路由下一跳的主機將不能與外網通訊。VRRP就是解決這一問題而出現的。服務器

VRRP將局域網的(兩臺或以上)路由器虛擬成一個設備,對外提供虛擬路由器IP,在路由器組內部,若實際擁有這個對外IP的路由器工做正常的話就是MASTERMASTER實現針對虛擬路由器IP的各類網絡功能,如ARP請求,ICMP,數據轉發等。其餘設備不擁有該IP,則是BACKUPBACKUP只接收MASTERVRRP狀態通告信息。當MASTER宕掉,BACKUP接管MASTER的網絡功能。網絡

 

                             wKioL1WnbNfid2NnAAFN5E5FngE725.jpg

在這個結構圖裏,處於下端的是內核空間,它包括 ipvs NETLINK 兩個部分。netlink 提供高級路由及其餘相關的網絡功能,若是咱們在負載均衡器上啓用 netfilter/iptable,將會直接影響它的性能。出於圖形上方的組件爲用戶空間,架構

1 WatchDog 負責監控 checkers VRRP 進程的情況。app

2 Checkers 負責真實服務器的健康檢查 healthchecking,是 keepalived 最主要的功能。負載均衡

3 VRRP Stack 負責負載均衡器之間的失敗切換 FailOver. 若是隻用一個負載均衡器,則VRRP 不是必須的。ide

4 IPVS wrapper 用來發送設定的規則到內核 ipvs 代碼。

5 Netlink Reflector 用來設定 vrrp vip 地址等。


 

Master_DS : 192.168.1.5 

Backup_DS : 192.168.1.8

RS1:192.168.1.6

RS2: 192.168.1.7

VIP: 192.168.1.10

 

編譯安裝keepalived

# tar xf keepalived-1.2.16.tar.gz
# cd keepalived-1.2.16
# ./configure --prefix=/usr/local/keepalived --sysconfdir=/etc
# make
# make install

 

配置keepalived

vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
   notification_email {
   #keepalived狀態切換時通知email出現故障,郵件報警
   root@localhost
   }
   notification_email_from keepalived@localhost #
指定發件人
   smtp_server 127.0.0.1  #smtp
服務器地址
   smtp_connect_timeout 30 #smtp
鏈接超時時間
   router_id LVS_DEVEL    #
運行keepalived機器的一個標識
}
vrrp_instance VI_1 {
    state MASTER         #
配置爲主
    interface eth1       #
通信網卡
    virtual_router_id 51 #
路由標識
    priority 100         #
優先級
    advert_int 1         #
通告時間間隔:發送通告報文的時間間隔。在VRRPVersion2中單位爲秒,默認值爲1秒。
    authentication {
        auth_type PASS
        auth_pass 1111  #
驗證密碼,通信主機間驗證
    }
    virtual_ipaddress {  #
虛擬IP地址
        192.168.1.10/24 dev eth1 label eth1:0
    }
}
virtual_server 192.168.1.10 80 {
    delay_loop 6
    lb_algo rr    # rr
調度算法, 有rr|wrr|lblc|sh|sh
    lb_kind DR    # DR
模型
    nat_mask 255.255.255.0
    #persistence_timeout 50
    protocol TCP
    sorry_server 127.0.0.1 80  #
全部RS故障,重定向到本機


    real_server 192.168.1.6 80 { 
        weight 1    #
權重,0爲失效
        TCP_CHECK {
            connect_timeout 3    #
鏈接超時時間
            nb_get_retry 3       #
重試次數
            delay_before_retry 3#
重試時間間隔
        }
    }
    real_server 192.168.1.7 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
}

# yum install ivsadm

 

192.168.1.8主機中

安裝keepalived192.168.1.5

配置文件中:

    「state MASTER" 改成 」state BACKUP"

    "priority 100"改成比100小的值,這裏改成「priority 70".

# yum install ipvsadm

 

 

配置Real server

 

編寫Real Server腳本

#/bin/bash
# Author xiaoming
# mail: xiaoming.linux@gmail.com

VIP=192.168.1.10
. /etc/init.d/functions
case "$1" in
    start)
   echo "Start Real Server "
   /sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up
   route add -host $VIP dev lo:0
   echo 1 > /proc/sys/net/ipv4/conf/eth1/arp_ignore
   echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
   echo 2 > /proc/sys/net/ipv4/conf/eth1/arp_announce
   echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
   ;;
     stop)
    echo "Stop Real Server"
    /sbin/ifconfig lo:0 down
    route del $VIP
    echo 0 > /proc/sys/net/ipv4/conf/eth1/arp_ignore
    echo 0 > /proc/sys/net/ipv4/conf/all/arp_ignore
    echo 0 > /proc/sys/net/ipv4/conf/all/arp_announce
    echo 0 > /proc/sys/net/ipv4/conf/eth1/arp_announce
   ;;
    *)
   echo "Usage: $0 {start|stop}"
   exit 1
esac

分別在Real Server1Real Server2上執行此腳本

 

配置完畢,分別在director server上啓動keepalived服務,

# service keepalivedstart

 

 

查看LVS路由表信息

# ipvsadm -LnIP Virtual Server version 1.2.1 (size=4096)Prot LocalAddress:Port Scheduler Flags  -> RemoteAddress:Port           Forward Weight ActiveConn InActConnTCP  192.168.1.10:80 rr  -> 192.168.1.6:80               Route   1      0          0    -> 192.168.1.7:80               Route   1      0          0

相關文章
相關標籤/搜索