LVS DR +keepalived配置

LVS DR +keepalived配置nginx

咱們先來看看爲何要引入 keepalived,前面的 lvs 雖然已經配置成功也實現了負載均算法

衡,可是咱們測試的時候發現,當某臺 real server 把 nginx 停掉,那麼 director 照樣會把請vim

求轉發過去,這樣就形成了某些請求不正常。因此須要有一種機制用來檢測 real server 的狀服務器

態,這就是 keepalived。它的做用除了能夠檢測 RS 狀態外, 還能夠檢測備用 director 的狀態,curl

也就是說 keepalived 能夠實現 ha 集羣的功能,固然了也須要一臺備用 director 服務器。備用oop

director 也須要安裝一下 keepalived 軟件。兩臺 director 上都執行以下命令:測試

 

# yum install -y keepalivedurl

主 director 上安裝好後,編輯配置文件router

# vim /etc/keepalived/keepalived.conf  //加入以下:server

#全局部分配置主從#

vrrp_instance VI_1 {

    state MASTER   

#備用服務器上爲 BACKUP

    interface eth0

    virtual_router_id 51

    priority 100  

#權重優先級備用服務器上爲90,或比主上小也能夠

    advert_int 1

    authentication {

        auth_type PASS

        auth_pass 1111

#認證機制

    }

    virtual_ipaddress {

        192.168.0.110

#規定虛擬VIP,也是對外的vip

    }

}

#dir部分包含rs部分#

virtual_server 192.168.0.110 80 {

#規定虛擬VIP,也是對外的vip

    delay_loop 6                  

#(每隔6秒查詢realserver狀態)

    lb_algo wlc                  

#(lvs 算法能夠是wlc lc rr wrr)

    lb_kind DR                  

#(Direct Route可自動識別)

    persistence_timeout 60        

#(同一IP的鏈接60秒內被分配到同一臺realserver,長鏈接60秒,可改爲0,不須要長鏈接)

    protocol TCP               

#(用TCP協議檢查realserver狀態)

 

    real_server 192.168.0.43 80 {

#真實real_server

        weight 100               

#(權重)

        TCP_CHECK {

        connect_timeout 10      

#(10秒無響應超時,就自動把這臺server取消掉)

        nb_get_retry 3

        delay_before_retry 3

        connect_port 80

        }

    }

real_server 192.168.0.45 80 {

#真實real_server

        weight 100

        TCP_CHECK {

        connect_timeout 10

        nb_get_retry 3

        delay_before_retry 3

        connect_port 80

        }

     }

}

以上爲主 director 的配置文件,從 director 的配置文件只須要修改以下內容:

state MASTER -> state BACKUP

priority 100 -> priority 90

配置完 keepalived 後,須要開啓端口轉發(主從都要作):

# echo 1 > /proc/sys/net/ipv4/ip_forward

而後,兩個 rs 上執行/usr/local/sbin/lvs_dr_rs.sh 腳本

另外,須要注意的是,啓動keepalived服務會自動生成vip和ipvsadm規則,不須要再去執行上面提到的/usr/local/sbin/lvs_dr.sh 腳本。

測試

把主上的keepalived服務停掉

# service keeplived stop

查看從上的keepalived服務

# ip addr 查看ip地址

把其中的一個real_server1的nginx服務停掉,在打開一個虛擬機,測試

[root@wjh2 ~]# curl 192.168.0.111

rs2rs2

[root@wjh2 ~]# curl 192.168.0.111

rs2rs2

[root@wjh2 ~]# curl 192.168.0.111

rs2rs2

[root@wjh2 ~]# curl 192.168.0.111

rs2rs2

會自動把rs1摘除掉,轉到rs2上

相關文章
相關標籤/搜索