1. 程式人生 > >實現keepalived企業級高可用基於LVS-DR模式

實現keepalived企業級高可用基於LVS-DR模式

負載均衡 lvs dr模式 keepalived 地址漂移

一、為什麽要使用keepalived

當後端實現了負載均衡後壞掉一臺機器後可以用另一臺後臺web服務器補上,但是當前端的LVS壞掉後,整套服務就徹底廢掉,因此前端的LVS也需要實現負載均衡。

Keepalived的作用是檢測服務器的狀態,如果有一臺web服務器宕機,或工作出現故障,Keepalived將檢測到,並將有故障的服務器從系統中剔除,同時使用其他服務器代替該服務器的工作,當服務器工作正常後Keepalived自動將服務器加入到服務器群中,這些工作全部自動完成,不需要人工幹涉,需要人工做的只是修復故障的服務器。

keepalived:通過實現vrrp協議

實現地址漂移

配置文件簡單:配置文件比較簡單,可通過簡單配置實現高可用功能

穩定性強keepalived是一個類似於layer3,4 & 7交換機制的軟件,具備我們平時說的第3層、第4層和第7層交換機的功能,常用於前端負載均衡器的高可用服務,當主服務器出現故障時,可快速進行切換,監測機制靈活,成功率高。

成本低廉:開源軟件,可直接下載配置使用,沒有額外費用。

應用範圍廣因為keepalived可應用在多個層面,所以它幾乎可以對所有應用做高可用,包括LVS、數據庫、http服務、nginx負載均衡等等

支持多種類型支持主從模式、主主模式高可用,可根據業務場景靈活選擇

二、原理:

1、當用戶訪問前端的VIP時,到達LVS-server上,通過keepalived根據配置文件將虛擬ip VIP綁定到LVS-server-master的網卡上,首先將訪問到主LVS服務器上,通過LVS分配後端realserver,當主LVS服務器出現故障後,keepalived可以將LVS-server-master的網卡上的VIP解除,重新綁定在LVS-server-backup的網卡上,用戶將通過LVS-server-backup去訪問後端真正的服務器。

實現一個VIP在主LVS-server和從LVS-server的漂移技術分享

2、LVS-DR工作方式

技術分享

技術分享

(a) 當用戶請求到達DirectorServer,此時請求的數據報文會先到內核空間的PREROUTING鏈。此時報文的源IP為CIP,目標IP為VIP

(b)PREROUTING檢查發現數據包的目標IP是本機,將數據包送至INPUT鏈

(c) IPVS比對數據包請求的服務是否為集群服務,若是,將請求報文中的源MAC地址修改為DIP的MAC地址,將目標MAC地址修改RIP的MAC地址,然後將數據包發至POSTROUTING鏈。此時的源IP和目的IP均未修改,僅修改了源MAC地址為DIP的MAC地址,目標MAC地址為RIP的MAC地址

(d) 由於DS和RS在同一個網絡中,所以是通過二層(數據鏈路層)來傳輸。POSTROUTING鏈檢查目標MAC地址為RIP的MAC地址,那麽此時數據包將會發至Real Server。

(e)RS發現請求報文的MAC地址是自己的MAC地址,就接收此報文。處理完成之後,將響應報文通過lo接口傳送給eth0網卡然後向外發出。此時的源IP地址為VIP,目標IP為CIP

(f)響應報文最終送達至客戶端

三、實驗:

1、環境準備:兩臺centos系統做DR ,一主一從,兩臺實現過基於LNMP的電子商務網站

LVS-server-master:VIP:172.17.251.239 橋接模式 開啟路由功能,配置keepalived

LVS-server-backup:VIP:172.17.251.239 橋接模式 開啟路由功能,配置keepalived

後端服務器1:RIP:172.17.251.107 橋接模式

VIP:172.17.251.239 lo:0

後端服務器2:RIP:172.17.251.110 橋接模式

VIP:172.17.251.239 lo:0

2、在後端服務器上實現LNMP

在兩個後端服務器上分別實現LNMP,實現方法如下

http://guanm.blog.51cto.com/13126952/1978354

3、安裝步驟:

(1)兩臺LVS-server都使用yum方式安裝keepalived服務

(2)iptables -F&& setenforing 0 清空防火墻策略,關閉selinux

4、配置基於DR模式的LVS負載均衡集群:

配置完成後啟動服務:

centos6:service keepalived start

centos7:ststemctl start keepalived

(1)在LVS-server-master上配置keepalived並啟動服務

vim /etc/keepalived/keepalived.conf

! Configuration File for keepalived
global_defs {
  notification_email {
       root@localhost          #郵件
   }
  notification_email_from root
  smtp_server 127.0.0.1
  smtp_connect_timeout 600
  router_id  KEEPAVILD_LVS
}
 
vrrp_instance VI_1 {
   state MASTER                    Master表示主
   virtual_router_id 51
   interface eth0
   priority 101
   advert_int 1
   authentication {
       auth_type PASS
       auth_pass centos
    }
   virtual_ipaddress {
       172.17.251.239
    }
}
 
virtual_server 172.17.251.239 80{
   delay_loop 6
   lb_algo wrr
   lb_kind DR
   nat_mask 255.255.255.255
   persistence_timeout 50
   protocol TCP
 
   real_server 172.17.251.107 80 {
       weight 1
       HTTP_GET {
           url {
              path /
           }
           connect_timeout 3
           nb_get_retry 3
           delay_before_retry 3
       }
    }
 
   real_server 172.17.251.110 80 {
       weight 1
       HTTP_GET {
           url {
              path /
           }
           connect_timeout 3
           nb_get_retry 3
           delay_before_retry 3
       }
    }
}

(1)在LVS-server-backup上配置keepalived

LVS-server-master上將配置文件復制到從上

scp /etc/keepalived/keepalived.conf 172.17.251.108:/etc/keepalived

修改 vim /etc/keepalived/keepalived.conf

state BACKUP #從負載均衡器

priority 100 #優先級是100

5、在兩臺後端服務器上

要在後端的服務器上配置回環VIP,僅僅自己響應,不然和LVS

ifconfig lo:0 172.17.251.239 broadcast 172.17.251.239 netmask 255.255.255.255 up

#配置VIP到本地回環網卡lo上,並只廣播自己

routeadd -host 172.17.251.239 lo:0

#配置本地回環網卡路由

echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore

#1 只回答目標IP地址是來訪網絡接口本地地址的ARP查詢請求

echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce

#2 對查詢目標使用最適當的本地地址.在此模式下將忽略這個IP數據包的源地址並嘗試選擇與能與該地址通信的本地地址.

echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore

echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce

#關閉arp應答

1: 僅在請求的目標IP配置在本地主機的接收到請求報文的接口上時,才給予響應

2:必須避免將接口信息向非本網絡進行通告

開啟web、php-fpm、mysql服務

6、開啟keepalived服務後,用ip a 查看ip是否成功添加

(1)在LVS-server-master上查看 ,用ifconfig 查看不到,用ip a 查看

技術分享 curl http://172.17.251.239/index.html 可以訪問成功

(2)測試

這時關閉LVS-server-master服務 service keepalived stop

在BACKUP上ip a 查看,可以看到VIP漂移到BACKUP上了。

技術分享

用curl 訪問不影響訪問網站不受影響。

技術分享


本文出自 “Linux 學習記錄” 博客,請務必保留此出處http://guanm.blog.51cto.com/13126952/1980089

實現keepalived企業級高可用基於LVS-DR模式