天天看點

Keepalived+lvs 叢集的 部署(二)

 第六 配置keepalived 主配置檔案,修改keepalived.conf    

#cd  /etc/keepalived

           #vim  keepalived.conf

    #全局配置子產品

 ! Configuration File for keepalived 

global_defs {

   #notification_email {

   #       fenfa0826#msn.cn

   #    }

 注: 指定keepalived 在發生事件時,需要發送Emial 給SA ,可以是多個使用者,

   #notification_email_from    #注

   smtp_server  127.0.0.1 #注smtp 伺服器的Ip 或者是域名

   smtp_connect_timeout 30 # 注:連接配接smtp伺服器的逾時時間

    router_id ha1  #注:該處的ha1必須是主機名,而且也必須和uname  -n 的 主機名相同   

}

   #static_ipaddress

   #   {

   #     192.168.2.188 brd + dev eth0 scope global

   #     }

   # static_routers

   #    {   src 192.168.2.188 to 192.168.2.188 dev eth0

   #      }

         注:,如果伺服器中已經設定好,在該處就不需要設定,

  # VRRP  configuration    vrrpd  的配置   

vrrp_sync_group VG_1 {

         group {

             VG_1   #注: 該處是執行個體的名字

             }

          #notify_master  /etc/keepalived/apache.sh  #注:當切換到Master時,執行的腳本,該腳本可以傳遞參數,如果是傳遞參數時需要用雙引号引起

          #notify_backup  /etc/keepalived/apache.sh#注: 當切換到Backup 時執行的腳本

          #notify   /path/to/notify.sh   #注:該指令有三個參數,該參數有keepalived 提供

          #smtp_alert  #注: 使用global_defs 裡面定義的郵件位址和smtp 伺服器在切換後發送Email 通知

           } 

vrrp_instance VI_1 {     #vrrp  執行個體的配置

    state MASTER  #注:指定instance 的初始狀态,在兩台 router 都啟動後,就會立即發生競選, priority 高的會競選為Master ,是以該處的state 并不能表示這台就是Master

    interface eth0  #注:  執行個體綁定的網卡

    dont_track_primary  # 注: 忽略VRRP的interface 錯誤,預設不設負責置

    lvs_sync_daemon_interface eth0  #注:負載均衡器之間監聽的接口,和Heartbeat 的心跳線類似,但是不會出現腦裂問題,該處與服務接口interface 使用同一網絡接口

    track_interface {     

eth0

      eth1

     }  # 注:設定額外的監控,該處的任意一塊網卡出現問題,都會進入FAULT狀态

   mcast_src_ip eth1  #發送多點傳播包的位址,如果不設定,預設使用保定的網卡primary  IP

       garp_master_delay  10 #注: 在切換到MASTER 狀态後,延遲進行gratuitous ARP 請求

              virtual_router_id 51  #注VRID 标記(0…255)該處一定要與BACKUP 的相同

             priority 151  #優先級設定,數值越大,優先級越高,在同一個執行個體中Master 的優先級一定要大于BACKUP  MASTER 要高于BACKUP至少50

             advert_int 1 #同步通知間隔 MASTER與BACKUP 負載均衡器之間的同步檢查時間間隔機關秒

             authentication {

             auth_type PASS

             auth_pass 1111

            }  注: 設定認證,包含認證類型和認知密碼,類型主要分為PASS,AH 兩種,,驗證密碼為明文,同一個vrrp 執行個體中MASTER與BACKUP中的密碼必須相同才能正常通信 

         #nopreempt  #注:設定為不搶占,該處配置隻有在BACKUP的priority 優先級高于master 時,才在BACKUP上設定的

         # preempt_delay #注:設定的搶占延遲時間,預設5分鐘,我沒有設定

       virtual_ipaddress {

        192.168.2.188  dev eth0 label eth0:0

 }  注: 虛拟的IP位址,該處的IP位址必須和RealServer 中配置的虛拟IP相同

     }

#LVS 子產品,即 虛拟伺服器子產品

virtual_server 192.168.2.188 80 {  #設定的虛拟virtual server :VIP:Vport

    delay_loop 3     #注: 健康監測的時間間隔,機關是秒

    lb_algo rr  #注:負載均衡的排程算法

    lb_kind DR #注: 負載均衡的轉發規則

persistence_timeout 10  #注: 會話保持時間 機關是秒,該項對動态網站很有作用

#persistence_ granularity  <NETMASK>   #  注: LVS 會話保持粒度 ipvsadm 中的-M參數 ,根據每個用戶端做會話保持

    protocol TCP #注: 使用的協定是TCP還是UDP

    sorry_server 127.0.0.1 80  # 注: 備用機,所有的real server 失效後啟用,如果設定的是本地機器,同樣也需要在本機上進行arp隐藏

     #注: RealServer 的配置

    real_server 192.168.2.153 80  { 

        weight 1              #注: 設定的權重 預設為1,0為失效

        inhibit_on_failure       #注在伺服器健康監查失效後,将其的權重設定為0,而不是直接從IPVS裡面删除

        TCP_CHECK {

            connect_timeout 3  # 注:連接配接逾時時間

            nb_get_retry 3    #注:重連次數

            delay_before_retry 3  #注: 重連的時間間隔

            connect_port 80      #注: 健康檢查端口

        }

    }

   real_server 192.168.2.155 80 {

        weight 1

        #inhibit_on_failure

            connect_timeout 3

            nb_get_retry 3

            delay_before_retry 3

            connect_port 80

    } 

第七 配置BAKUP

    BACKUP keepalived 主配置檔案基本上都是相同的vrrp_instance VI_1{

             state  BACKUP

             priority   100 # 該值一定要小于MASTER 中的優先級,如果要是和 MASTER 中的優先級相等或者大于MASTER的優先級的話,一定在VRRP_instance V      I_1中設定nopreempt

    ….

   } 

 第八 .配置真實伺服器

     在每台真實伺服器上進行arp 隐藏。

        #!/bin/bash

#chkconfig:345 20 80

#description: lvs real server

VIP=192.168.2.188

host=`/bin/hostname`

case "$1" in

                start)

                        #start lvs

                        /sbin/ifconfig lo down

                        /sbin/ifconfig lo up

                        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

                        /sbin/ifconfig lo:0 $VIP netmask 255.255.255.255 up

                        /sbin/route add -host $VIP dev lo:0

                        ;;

                stop)

                        #stop lvs

                        /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

                status)

                        #status of lvs

                        islothere=`/sbin/ifconfig lo:0 |grep $VIP`

                        isrothere=`/netstat -rn |grep "lo" |grep "$VIP"`

                        if [ ! "islothere" -o ! "isrothere" ];then

                                        echo "the realserver is stopped"

                                else

                echo "realserver is running"

                        fi

                *)

                        echo "Usage:$0{start|stop|status}"

                exit 1

esac

第九.在每個RealServer 上運作上面的腳本,并檢視

  # ip  addr list

     1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue

    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

    inet 127.0.0.1/8 scope host lo

   <b> inet 192.168.2.188/32 brd 192.168.2.188 scope global lo:0</b>

<b></b>

    inet6 ::1/128 scope host

       valid_lft forever preferred_lft forever

2: eth0: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc pfifo_fast qlen 1000

    link/ether 00:0c:29:34:2b:8d brd ff:ff:ff:ff:ff:ff

    inet 192.168.2.155/24 brd 192.168.2.255 scope global eth0

    inet6 fe80::20c:29ff:fe34:2b8d/64 scope link

3: sit0: &lt;NOARP&gt; mtu 1480 qdisc noop

     link/sit 0.0.0.0 brd 0.0.0.0

    注:紅色部分為VIP一定要注意vip的子網路遮罩必須是為32

 第十 在keepalived 主機上啟動keepalived,先啟動MASTER,然後再啟動BACKUP

  自啟動之前先看看VIP是不是有vip

        #service keepalived start

        #ip  addr list

    2: eth0: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc pfifo_fast qlen 1000

    link/ether 00:0c:29:03:4a:b8 brd ff:ff:ff:ff:ff:ff

    inet 192.168.2.211/24 brd 192.168.2.255 scope global eth0

    <b>inet 192.168.2.188/32 scope global eth0:0</b>

    inet6 fe80::20c:29ff:fe03:4ab8/64 scope link

 注: 此處隻取eth0  的資訊,如果您要是執行該指令的話,會把所有的網卡資訊都顯示出來

第十.可以進行測試keepalived 的高可用性叢集lvs 負載均衡,我測試的是成功的,再次就不再進行書寫測試結果了

本文轉自 freehat08 51CTO部落格,原文連結:http://blog.51cto.com/freehat/415960,如需轉載請自行聯系原作者