天天看點

LVS負載均衡篇4---Lvs+keepalived+apche 安裝部署

1.簡介

  • Keepalived的設計目标是建構高可用的LVS負載均衡群集,可以調用ipvsadm工具來建立虛拟伺服器、管理伺服器池,而不僅僅是雙機熱備。優點:keepalived對lvs負載排程器實作熱備切換,提高可用性,對伺服器池中的節點進行健康檢查,自動移除失效節點,恢複後再重新加入。
  • 基于lvs+keepalived實作的lvs群集結構中,至少包含兩台熱備的負載排程器。使用keepalived建構lvs群集時,也需要用到ipvsadm管理工具,但是大部分工作會由keepalived自動完成,不需要手動執行ipvsadm(除了檢視和監控群集以外)。
  • LVS群集是針對Linux核心開發的一個負載均衡項目,基于IP位址虛拟化應用VIP,為基于IP位址和内容請求分發的負載均衡提出了一種高效的解決辦法。可使用ipvsadm管理工具。通過整合多台相對廉價的普通伺服器,以同一個位址對外提供相同的服務。
  • 負載均衡的直接路由工作模式。簡稱DR工作模式,負載排程器僅作為客戶機的通路入口,各節點伺服器與排程器位于同一個實體網絡,節點伺服器直接回應客戶機的請求,而不再經過負載排程器。
  • Keepalived是專門針對LVS設計的一款強大的輔助工具,主要用來提供故障切換(Failover)和健康檢查(Health Checking)功能--判斷LVS負載排程器,節點伺服器的可用性,及時隔離并替換為新的伺服器,當故障主機恢複後将其重新加入叢集。

2.配置清單

LVS-DR-MASTER         192.168.253.130          centos7.5

LVS-DR-BACKUP          192.168.253.135          centos7.5

LVS-DR-VIP                    192.168.253.100         centos7.5

WEB1-Realserver          192.168.253.178           centos6.5

WEB2-Realserver           192.168.253.179          centos6.5

基本思路如下圖(忽略ip)

LVS負載均衡篇4---Lvs+keepalived+apche 安裝部署

3.分别在master和backup上安裝lvs(LVS采用dr模式)和keepalived軟體包

[ro[email protected] ~]# yum -y install ipvsadm.x86_64 keepalived.x86_64

[[email protected] ~]# service keepalived start

配置主keepalived:

[[email protected] ~]# vim /etc/keepalived/keepalived.conf 

! Configuration File for keepalived                       #http://www.keepalived.org/pdf/UserGuide.pdf 官方配置文檔

global_defs {

   router_id LVS_R1               #辨別本節點的字條串,通常為hostname,但不一定非得是hostname。故障發生時,郵件通知會用到,主機和備機上的router_id設定為一緻,同一個網絡中必須唯一,注意在一個網段裡有多個叢集的話需要設定成不同的router_id。

}

vrrp_instance VI_1 {

    state MASTER                      #指定執行個體狀态,配置為MASTER

    interface eth0                        #指定執行個體運作在哪個網絡接口上

    virtual_router_id 51               #虛拟路由ID(0-255),在一個VRRP執行個體中主備伺服器ID必須一樣,但是在同一個網絡中不可存在同樣的virtual_router_id,不要和其他叢集重複,如果一個配置檔案中配置了多個VRRP執行個體,各個執行個體的virtual_router_id也必須區分開來

    priority 100                          #優先級值設定:MASTER要比BACKUP的值大

    advert_int 1                         #設定MASTER與BACKUP負載均衡器之間同步檢查的時間間隔,機關是秒。

    authentication {                   #認證機制

        auth_type PASS            #預設PASS; 有兩種:PASS或AH

        auth_pass 1111             #預設1111; 可多位字元串,但僅前8位有效,設定驗證密碼,在一個vrrp_instance下,MASTER與BACKUP必須使用相同的密碼才能正常通信。 }

    }

    virtual_ipaddress {

        192.168.253.100          #虛拟IP,可多個,寫法為每行一個

    }

}

virtual_server 192.168.253.100 80 {

    delay_loop 6

    lb_algo rr

    lb_kind DR

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

    protocol TCP       #指定轉發協定類型,有tcp和udp兩種。

    real_server 192.168.253.178 80 {

        weight 1

        TCP_CHECK {      #使用TCP_CHECK檢測RS的使用可用性

            connect_port 80    #指定連接配接的RS端口

           connect_timeout 3   #指定連接配接RS逾時時間

            nb_get_retry 3        #重試次數

            delay_before_retry 3   #重試間隔

        }

    }

   real_server 192.168.253.179 80 {

        weight 1

        TCP_CHECK {

            connect_port 80

            connect_timeout 3

            nb_get_retry 3

            delay_before_retry 3

        }

    }

}                     

[[email protected] ~]# service keepalived start

正在啟動 keepalived:                                      [确定]

通過ip指令檢視(ifconfig看不到),實際狀态為MASTER的主伺服器上将為eth0自動添加VIP位址。在主上:

[[email protected] ~]# ip a

4.備keepalived配置檔案配置資訊:備用伺服器可以有多台,配置時候基本相同隻要修改路由器名稱,熱備狀态,優先級就可以

[[email protected] ~]# vim /etc/keepalived/keepalived.conf 

! Configuration File for keepalived

global_defs {

   router_id LVS_R2

}

vrrp_instance VI_1 {

    state BACKUP

    interface eth0

    virtual_router_id 51

    priority 99

    advert_int 1

    authentication {

        auth_type PASS

        auth_pass 1111

    }

! Configuration File for keepalived

global_defs {

   router_id LVS_R2

}

vrrp_instance VI_1 {

    state BACKUP

    interface eth0

    virtual_router_id 51

    priority 99

    advert_int 1

    authentication {

        auth_type PASS

        auth_pass 1111

    }

    virtual_ipaddress {

        192.168.253.100

    }

}

virtual_server 192.168.253.100 80 {

    delay_loop 6

    lb_algo rr

    lb_kind DR

!    persistence_timeout 50

    protocol TCP

    real_server 192.168.253.178 80 {

        weight 1

        TCP_CHECK {

            connect_port 80

            connect_timeout 3

            nb_get_retry 3

            delay_before_retry 3

        }

    }

   real_server 192.168.253.179 80 {

        weight 1

        TCP_CHECK {

            connect_port 80

            connect_timeout 3

            nb_get_retry 3

            delay_before_retry 3

        }

    }

}

[[email protected] ~]# service keepalived start

正在啟動 keepalived:                                      [确定]

5.節點伺服器配置

使用DR模式的時候,節點伺服器也需要配置vip位址,并且調整核心的ARP響應參數以阻止更新VIP的MAC位址,避免發生沖突。

[[email protected] ~]# cd /etc/sysconfig/network-scripts/

[[email protected] network-scripts]# cp ifcfg-lo ifcfg-lo:0

[[email protected] network-scripts]# vim ifcfg-lo:0

DEVICE=lo:0

IPADDR=192.168.253.100

NETMASK=255.255.255.255

ONBOOT=yes

[[email protected] ~]# systemctl  restart network  #重新開機下網卡

添加VIP本地通路路由(将通路VIP的資料限制正在本地,避免通信紊亂)

[[email protected] network-scripts]# vim /etc/rc.local 

/sbin/route add -host 192.168.253.100 dev lo:0

[[email protected] network-scripts]# route add -host 192.168.253.100 dev lo:0

修改核心參數

[[email protected] network-scripts]# vim /etc/sysctl.conf   #在最下面添加

net.ipv4.conf.all.arp_ignore = 1

net.ipv4.conf.all.arp_announce = 2

net.ipv4.conf.default.arp_ignore = 1

net.ipv4.conf.default.arp_announce = 2

net.ipv4.conf.lo.arp_ignore = 1

net.ipv4.conf.lo.arp_announce = 2

#注意:

arp_announce為2時:隻向該網卡回應與該網段比對的ARP封包。

arp_ignore為1:隻響應目的IP位址為接收網卡上的本地位址的arp請求

其主要是實作禁止響應ARP的請求。

[[email protected] network-scripts]# sysctl -p   #檢測參數是否寫錯

6.另一個節點也是同樣的操做.

7.安裝httpd,建立網頁測試lvs叢集

[[email protected] ~]# yum -y install httpd

[[email protected] ~]# vim /var/www/html/index.html

welcome to web1!

[[email protected] ~]# systemctl  start httpd

#web2跟上面操作一樣

8.測試

在外面直接通路虛拟ip位址,則可以通路到對應節點上的網站資訊,當主排程器壞掉的時候,會自動切換到備用的排程器上面,網站通路量根據權重和算法來計算。

檢視負載配置設定情況可以執行下面指令

LVS負載均衡篇4---Lvs+keepalived+apche 安裝部署
LVS負載均衡篇4---Lvs+keepalived+apche 安裝部署
LVS負載均衡篇4---Lvs+keepalived+apche 安裝部署

這時候我們的部署就完成了.

繼續閱讀