集羣---Keepalived+lvs

****************** Keepalived+lvs ******************

服務器 IP 分配:

服務器:

ip地址

Load Balancer:

172.25.7.1

Backup:

172.25.7.4

Real Server 1:

172.25.7.2

Real Server 2:

172.25.7.3

 

主、備機上的軟件包安裝與配置

# tar zxf keepalived-1.3.5.tar.gz

# cd keepalived-1.3.5

# ./configure --prefix=/usr/local/keepalived --with-init=SYSV

# make && make install

 

# ln -s /usr/local/keepalived/sbin/keepalived /sbin/

# ln -s /usr/local/keepalived/etc/keepalived/ /etc/

# ln -s /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/

# ln -s /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/

# chmod +x /usr/local/keepalived/etc/rc.d/init.d/keepalived

 

# vim /etc/keepalived/keepalived.conf

! Configuration File for keepalived

 

global_defs {

   notification_email {

     root@localhost                            #接收警報的 email 地址,可以添加多個

   }

   notification_email_from keepalived@server1     #設置郵件的發送地址

   smtp_server 172.25.7.1           #設置 smtp server 地址

   smtp_connect_timeout 30          #設置連接 smtp 服務器超時時間

   router_id LVS_DEVEL         #load balancer 的標識 ID,用於 email 警報

   vrrp_skip_check_adv_addr

   vrrp_strict

   vrrp_garp_interval 0

   vrrp_gna_interval 0

}

 

vrrp_instance VI_1 {

    state MASTER          #備機改爲BACKUP,此狀態是由priority的值來決定的,當前priority 的值小於備機的值,那麼將會失去 MASTER 狀態

    interface eth0              #HA 監測網絡接口

    virtual_router_id 70       #主、備機的 virtual_router_id 必須相同

    priority 100                  #主機的優先級,備份機改爲 50

    advert_int 1             #主備之間的通告間隔秒數

    authentication {        #主備切換時的驗證

        auth_type PASS        #設置驗證類型,主要有 PASS 和 AH 兩種

        auth_pass 1111     #設置驗證密碼,在一個 vrrp_instance ,MASTER 與 BACKUP 必須使用相同的密碼才能正常通信

    }

    virtual_ipaddress {     #HA 虛擬 ip,可加多個,每行一個

       172.25.7.100 

    }

}

 

virtual_server 172.25.7.100 80 {    #定義虛擬服務器

    delay_loop 6                         #每隔 秒查詢 realserver狀態

    lb_algo rr                             #lvs 調度算法,這裏使用輪叫

    lb_kind DR                          #LVS 使用 DR 模式

#  persistence_timeout 50         #會話保持時間,單位是秒,這個選項對於動態網頁是非常有用的,爲集羣系統中 session 共享提供了一個很好的解決方案。有了這個會話保持功能,用戶的請求會被一直分發到某個服務節點,直到超過這個會話保持時間。需要注意的是,這個會話保持時間,是最大無響應超時時間,也就是說用戶在操作動態頁面時,如果在 50 秒內沒有執行任何操作,那麼接下來的操作會被分發到另外節點,但是如果一直在操作動態頁面,則不受 50 秒的時間限制。

    protocol TCP    #指定轉發協議類型檢查 realserver 狀態,有 tcp 和 udp 兩種,

    real_server 172.25.7.2 80 {      #配置服務節點

        weight 1       #配置服務節點的權值,權值大小用數字表示,數字越大,

值越高,設置權值的大小可以爲不同性能的服務器分配不同的負載,可以對性能高的服務器設置較高的權值,而對性能較低的服務器設置相對較低的權值,這樣就合理的利用和分配了系統資源

        TCP_CHECK {          #realserve 的狀態檢測設置部分,單位是秒

            connect_timeout 3   #3 秒無響應超時

            nb_get_retry 3        #故障重試秒數

            delay_before_retry 3   #重試延遲

        }

    }

    real_server 172.25.7.3 80 {

        weight 1

        TCP_CHECK {

            connect_timeout 3

            nb_get_retry 3

            delay_before_retry 3

        }# ipvsadm -ln

    }

}

:備機的 keepalived 配置文件只改動紅色字體部分!


# /etc/init.d/keepalived start      ## 啓動keepalived

iptables -F    ## 啓動時刷新防火牆配置(當前keepalived版本需要刷新)


測試:

###在主備機上

# ip addr查看虛擬ip添加

wKioL1l4gj6TPgr0AALyzKpn0sM023.png


# ipvsadm -ln查看lvs連接


wKiom1l4gj-BvPv6AAFb7hJHMTA340.png

 

# arp -an |grep 100    ##查看哪個主機正在服務
 

wKioL1l4gkDC-o0MAAJgXIWtQVo269.png


1. 高可用測試:停止 master 上的 keepalived 服務,看 backup 是否接管。


wKiom1l4gkHQ_ASyAALo3UQ8OMw024.png

wKioL1l4gkKByjCeAAGxRrSS7FI796.png


2. 負載均衡測試:訪問 http://192.168.0.163,看到頁面在兩個 realserver 上切換表示成功!你也可以通過 ipvsadm -Lnc 查看詳細連接情況!


wKiom1l4gkPwCGe1AAKIYFRFy18226.png

 

3. 故障切換測試:任意關閉 realserver 上的 httpd 服務,Keepalived 監控模塊是否能及時發現,然後屏蔽故障節點,同時將服務轉移到正常節點來執行。


server2httpd停止時,Keepalived只檢測到server3

wKioL1l4gkTivIYqAAHV7e5zG-A391.png

 

wKioL1l4gkXC-zinAAIo7l7K8bo790.png


server23httpd都停止時轉移到本機上。

wKiom1l4gkaT8pxXAAHX_uwzcKs364.png


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