天天看點

Keepalived原理與部署配置1. Keepalived簡介2. Keepalived原理3. Keepalived部署配置4. 參考文獻

Keepalived原理與部署配置

  • 1. Keepalived簡介
  • 2. Keepalived原理
  • 3. Keepalived部署配置
    • 3.1 安裝環境
    • 3.2 安裝步驟
    • 3.3 配置說明
  • 4. 參考文獻

靜态路由高可用,一直聽說keepalived+nginx可以實作,結合反思目前參與項目使用dns做主備節點之間的切換問題,查找相關資料進行總結,本文對keepalived的原理進行簡要介紹,并實際搭建keepalived主備節點以及結合主備節點部署nginx進行實際驗證,在此進行記錄,以便後續持續深入學習以及為後來者提供參考借鑒,文中不免疏漏之處,望讀者不吝指教,感激之至!

1. Keepalived簡介

Keepalived起初是專為LVS負載均衡軟體設計的,用來管理并監控LVS叢集系統中各個服務節點的狀态,後來又加入了可以實作高可用的VRRP功能。是以,Keepalived除了能夠管理LVS外,還可以作為其他服務(例如:Nginx、Haproxy、MySQL等)的高可用解決方案。

Keepalived軟體主要是通過VRRP協定實作高可用功能的。VRRP是Virtual Router RedundancyProtocol(虛拟路由器備援協定)的縮寫,VRRP出現的目的就是為了解決靜态路由單點故障問題的,它能夠保證當個别節點當機時,整個網絡可以不間斷地運作。

是以,Keepalived 一方面具有配置管理LVS的功能,同時還具有對LVS下面節點進行健康檢查的功能,另一方面也可實作系統網絡服務的高可用功能。

2. Keepalived原理

Keepalived高可用服務對之間的故障切換轉移,是通過 VRRP來實作的。

VRRP全稱Virtual Router Redundancy Protocol ,中文名為虛拟路由備援協定 ,
VRRP的出現就是為了解決靜态路由的單點故障問題,VRRP是通過一種競選機制來将路由的任務交給某台VRRP路由器的。
           
Keepalived原理與部署配置1. Keepalived簡介2. Keepalived原理3. Keepalived部署配置4. 參考文獻

VRRP的工作過程:

(1)虛拟路由器中的路由器根據優先級選舉出Master,Master路由器通過發送免費ARP封包,将自己的虛拟MAC位址通告給與它連接配接的裝置。
(2)Master路由器周期性發送VRRP封包,以公布自己的配置資訊(優先級等)和工作狀态
(3)如果Master故障,虛拟路由器中的Backup路由器将根據優先級重新選舉新的Master
(4)虛拟路由器狀态切換時,Master路由器由一台裝置切換會另外一台裝置,新的Master路由器隻是簡單的發送一個攜帶虛拟MAC位址和虛拟IP的免費ARP封包,這樣就可以更新其他裝置中緩存的ARP資訊
(5)Backup路由器的優先級高于Master時,由Backup的工作方式(搶占式或者非搶占式)決定是否重新選舉Master。
           

3. Keepalived部署配置

3.1 安裝環境

環境:CentOS Linux release 7.2.1511 (Core)
版本:keepalived-2.2.4.tar.gz
官網:https://www.keepalived.org/download.html
           

3.2 安裝步驟

(1)下載下傳
wget  https://www.keepalived.org/software/keepalived-2.2.4.tar.gz

(2)依賴安裝更新
yum -y install gcc glibc-devel make ncurses-devel openssl-devel xmlto perl wget gtk2-devel binutils-devel

(3)解壓調整安裝路徑
tar -zvxf keepalived-2.2.4.tar.gz
cd /usr/local/keepalived-2.2.4/

(4)配置指定安裝目錄
./configure --prefix=/usr/local/keepalived

(5)編譯并安裝
 make && make install

(6)調整配置檔案
! Configuration File for keepalived
global_defs {
   notification_email {
     [email protected]
   }
   notification_email_from [email protected]
   smtp_server smtp.163.com
   smtp_connect_timeout 30
   router_id LVS_DEVEL_0
   vrrp_skip_check_adv_addr
   vrrp_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}
vrrp_instance VI_1 {
    state MASTER
    # 配置目前機器網卡
    interface eno16777736
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
       # 與目前機器配置同一網段
        192.168.65.16
    }
}

(7)設定linux服務
	mkdir  /etc/keepalived
	cp /usr/local/keepalived-2.2.4/keepalived/etc/init.d/keepalived /etc/init.d/
	cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
	cp /usr/local/keepalived-2.2.4/keepalived/etc/init.d/keepalived /etc/sysconfig/
	cp /usr/local/keepalived/sbin/keepalived /usr/sbin/
	
(8)啟動
systemctl start keepalived
systemctl status keepalived
systemctl stop keepalived

(9)驗證
ps -aux | grep keepalived
systemctl status keepalived

(10)功能驗證
部署兩台機器 keepalived,一個master,一個backup;
兩台機器各部署一個nginx,同時設定預設界面資訊不同,用于區分通路到不同的機器;
同時啟動兩台keepalived和nginx,使用虛拟ip通路,檢視是否是master節點;
關閉master節點的keepalived,繼續使用虛拟ip通路,驗證是否是backup節點;
恢複master節點的keepalived,繼續使用虛拟ip通路,驗證是否恢複到master節點通路。
           
Keepalived原理與部署配置1. Keepalived簡介2. Keepalived原理3. Keepalived部署配置4. 參考文獻

3.3 配置說明

# 全局配置
global_defs {
   # 郵件通知資訊
   notification_email {
     # 定義收件人
     [email protected]
   }
   # 定義發件人
   notification_email_from [email protected]
   # SMTP伺服器位址
   smtp_server 192.168.200.1
   smtp_connect_timeout 30
   # 路由器辨別,一般不用改,也可以寫成每個主機自己的主機名
   router_id LVS_DEVEL
   # VRRP的ipv4和ipv6的廣播位址,配置了VIP的網卡向這個位址廣播來宣告自己的配置資訊,下面是預設值
   vrrp_mcast_group4 224.0.0.18
   vrrp_mcast_group6 ff02::12
}

# 一個vrrp_instance就是定義一個虛拟路由器的,執行個體名稱
vrrp_instance VI_1 {
    # 定義初始狀态,可以是MASTER或者BACKUP
    state MASTER
    # 工作接口,通告選舉使用哪個接口進行
    interface ens33
    # 虛拟路由ID,如果是一組虛拟路由就定義一個ID,如果是多組就要定義多個,而且這個虛拟
    # ID還是虛拟MAC最後一段位址的資訊,取值範圍0-255
    virtual_router_id 51
    # 使用哪個虛拟MAC位址
    use_vmac XX:XX:XX:XX:XX
    # 監控本機上的哪個網卡,網卡一旦故障則需要把VIP轉移出去
    track_interface {
        eth0
        ens33
    }
    # 如果你上面定義了MASTER,這裡的優先級就需要定義的比其他的高
    priority 100
    # 通告頻率,機關為秒
    advert_int 1
    # 通信認證機制,這裡是明文認證還有一種是加密認證
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    # 設定虛拟VIP位址,一般就設定一個,在LVS中這個就是為LVS主機設定VIP的,這樣你就不用自己手動設定了
    virtual_ipaddress {
        # IP/掩碼 dev 配置在哪個網卡
        192.168.200.16/24 dev eth1
        # IP/掩碼 dev 配置在哪個網卡的哪個别名上
        192.168.200.17/24 dev label eth1:1
    }
    # 虛拟路由,在需要的情況下可以設定lvs主機 資料包在哪個網卡進來從哪個網卡出去
    virtual_routes {
        192.168.110.0/24 dev eth2
    }
    # 工作模式,nopreempt表示工作在非搶占模式,預設是搶占模式 preempt
    nopreempt|preempt
    # 如果是搶占預設則可以設定等多久再搶占,預設5分鐘
    preempt delay 300
    # 追蹤腳本,通常用于去執行上面的vrrp_script定義的腳本内容
    track_script {

    }
    # 三個指令,如果主機狀态變成Master|Backup|Fault之後會去執行的通知腳本,腳本要自己寫
    notify_master ""
    notify_backup ""
    notify_fault ""
}
           

4. 參考文獻

[1] https://www.keepalived.org/

[2] https://www.cnblogs.com/clsn/p/8052649.html

[3] https://www.cnblogs.com/rexcheny/p/10778567.html

繼續閱讀