基於DR模式的keepalived主從模式高可用架構搭建

一:架構圖示linux

image.png

2.keepalived是什麼?web

image.png

Keepalived的做用是檢測服務器的狀態,若是有一臺web服務器宕機 ,或工做出現故障,Keepalived將檢測到,經過VRRP協議,將有故障的服務器從系統中剔除,同時使用其餘服務器代替該服務器的工做,當服務器工做正常後 Keepalived自動將服務器加入到服務器羣中,這些工做所有自動完成,不須要人工干涉,須要人工作的只是修復故障的服務器。
算法

3.VRRP協議是什麼?後端

image.png

    VRRP(Virtual Router Redundancy Protocol,虛擬路由冗餘協議) 能夠認爲是實現路由器高可用的協議,簡單的說,當一個路由器故障時能夠由另外一個備份路由器繼續提供相同的服務。服務器

    keepalive就是經過基於VRRP協議的VIP漂移來實現主從VS的切換來實現高可用。架構

4.實驗目標負載均衡

經過配置兩臺VS,實現兩VS間的相互檢測,當其中一臺VS宕機後,另外一臺VS可以自動頂替,使用戶可以正常訪問後端webserver資源,從而實現高可用ide

5.實驗環境oop

VS-master:主負載均衡器測試

    VIP:172.17.252.1(eth0:0)

VS-backup:從負載均衡器

    VIP:172.17.252.1(eth0:0)

RS1:webserver

    VIP:172.17.252.1(lo:0)

RS2:webserver

    VIP:172.17.252.1(lo:0)

注意:VS無須進行DR的任何配置,只需打開路由轉發功能便可;RS需符合DR全部配置

          ②基於DR模式的LVS架構搭建過程,請看此博客 http://www.javashuo.com/article/p-tjyumrkz-co.html

6.實驗前的必要準備

①關閉VS和RS的selinux,並禁用iptables

②兩臺VS使用yum安裝keepalived軟件

7:實驗步驟(操做環境:VS)

(1)修改VS-master的keepalived配置文件

global_defs {                  ##全局配置
   notification_email {        ##郵件通知
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 127.0.0.1  
   smtp_connect_timeout 30
   router_id LVS_DEVEL
}
vrrp_instance VI_1 {            ##虛擬路由示例名
    state MASTER                ##初始狀態,MASTER|BACKUP,當state指定的instance的初始 化狀態,在兩臺服務器都啓動之後,立刻發生競選,優先級高的成爲MASTER, 因此這裏的MASTER並非表示此臺服務器一直是MASTER            
    interface eth0
    virtual_router_id 51        ##虛擬路由id號,最大255,通常不隨意改動
    priority 100                ##優先級,數值越大,優先級越高(主高從低)
    advert_int 1                ##VRRP通告間隔,單位爲s 
    authentication {
        auth_type PASS
        auth_pass pp
    }
    virtual_ipaddress {          ##VIP
        172.17.252.1
    }
#    nopreempt  ##開啓非搶佔模式(默認搶佔,即當從服務器健康時,VIP強制漂移到主服務器上)
}
virtual_server 172.17.252.1 80 {           ##配置VS
    delay_loop 6        ##服務輪訓時間
    lb_algo wrr         ##LVS集羣調度算法爲加權輪尋算法
    lb_kind DR          ##LVC集羣模式
    nat_mask 255.255.255.255
    persistence_timeout 600         ##會話保持時間(s)
    protocol TCP                    ##健康檢查protocol(UDP | TCP)
    real_server 172.17.250.121 80 {      ##指定RS1
        weight 1        ##權重
        HTTP_GET {
            url {
              path /
            }
            connect_timeout 3        ##鏈接超時時間
            nb_get_retry 3           ##重連次數
            delay_before_retry 3     ##重連鏈接間隔
        }
    }
    real_server 172.17.250.122 80 {       ##指定RS2
        weight 1
        HTTP_GET {
            url {
              path /
            }
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
}

(2)修改VS-backup的keepalive配置文件

global_defs {                  ##全局配置
   notification_email {        ##郵件通知
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 127.0.0.1  
   smtp_connect_timeout 30
   router_id LVS_DEVEL
}
vrrp_instance VI_2 {           ##虛擬路由示例名
    state BACKUP            
    interface eth0
    virtual_router_id 51       ##虛擬路由id號,最大255,通常不隨意改動
    priority 98                ##優先級,數值越大,優先級越高
    advert_int 1               ##VRRP通告間隔,單位爲s 
    authentication {
        auth_type PASS
        auth_pass pp
    }
    virtual_ipaddress {              ##VIP
        172.17.252.1
    }
}
virtual_server 172.17.252.1 80 {           ##配置VS
    delay_loop 6        ##服務輪訓時間
    lb_algo wrr         ##LVS集羣調度算法
    lb_kind DR          ##LVC集羣模式
    nat_mask 255.255.255.255
    persistence_timeout 600         ##會話保持時間(s)
    protocol TCP        ##健康檢查protocol(UDP | TCP)
    real_server 172.17.250.121 80 {      ##指定RS1
        weight 1        ##權重
        HTTP_GET {
            url {
              path /
            }
            connect_timeout 3        ##鏈接超時時間
            nb_get_retry 3                ##重連次數
            delay_before_retry 3     ##重連鏈接間隔
        }
    }
    real_server 172.17.250.122 80 {       ##指定RS2
        weight 1
        HTTP_GET {
            url {
              path /
            }
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
}

8.實驗結果測試

(1)同開啓兩臺VS的keepalived服務,VIP在VS-master上,而不在VS-backup上

TIM截圖20171126183903.png


(2)關閉master的keepalived服務,backup主機自動得到VIP,而master上沒有VIP

TIM截圖20171126183953.png

TIM截圖20171126184051.png


(3)再次開啓master的keepalived服務,VIP又飄回master

TIM截圖20171126184221.png

注意事項:查看VIP應使用ip命令,ifconfig無效。


總結:到這裏,咱們已經經過利用keepalived的VIP漂移來實現了主從服務器的自由切換,從而知足了企業基本的服務器高可用目標。

相關文章
相關標籤/搜索