高性能集群軟件Keepalived

Keepalived的介紹以及安裝與配置

Keepalived介紹:

? ? ? ? ? ?Keepalived是Linux下一個輕量級的高可用解決方案;起初是為LVS設計的,專門用來監控集群系統中各個服務節點的狀態。它根據TCP/IP參考模型的第三、第四和第五層交換機機制檢測每個服務節點的狀態,如果某個服務節點出現異常,或工作出現故障,Keepalived將檢測到,并將出現故障的服務節點從集群系統中剔除,而在故障節點恢復正常后,Keepalived又可以自動將此服務節點重新加入服務器集群中,這些工作全部自動完成,不需要人工干涉,需要人工完成的只是修復出現故障的服務節點。

? ? ? ? ? ?Keepalived后來又加入了VRRP的功能,VRRP(Virtual Router Redundancy Protocol,虛擬路由器冗余協議)出現的目的是解決靜態路由出現的單點故障問題,通過VRRP可以實現網絡不間斷穩定運行。因此,Keepalived一方面具有服務器狀態檢測和故障隔離功能,另一方面也具有HA cluster 功能。

VRRP協議與工作原理

? ? ? ?VRRP,它是一種主備模式的協議,通過VRRP可以在網絡發生故障時透明地進行設備切換而不影響主機間的數據通信;這其中涉及兩個概念:物理路由器和虛擬路由器。

? ? ? ? ?VRRP可以將兩臺或多臺物理路由器設備虛擬成一個虛擬路由器,這個虛擬路由器通過虛擬IP(一個或多個)對外提供服務,而在虛擬路由器內部是多個物理路由器協同工作,同一時間只有一臺物理路由器對外提供服務,這臺物理路由器被稱為主路由器(處于MASTER角色)。一般情況MASTER由選舉算法產生,它擁有對外服務的虛擬IP,提供各種網絡功能,如ARP請求、ICMP、數據轉發等。而其他物理路由器不擁有對外的虛擬Ip,也不提供對外網絡功能,僅僅接收MASTER的VRRP狀態通告信息,這些路由器被統稱為備份路由器(處于BACKUP角色)。當主路由器失效時,處于BACKUP角色的備份路由器將重新進行選舉,產生一個新的主路由器進入MASTER角色繼續提供對外服務。

? ? ? ? 每個虛擬路由器獨有一個唯一標識,稱為VRID,一個VRID與一組IP地址構成了一個虛擬路由器。在VRRP協議中,所有的報文都是通過IP多播形式發送的,而在一個虛擬路由器中,只有處于MASTER角色的路由器會一直發生VRRP數據包,處于BACKUP角色的路由器只接收MASTER發送過來的報文信息,用來監控MASTER運行狀態,因此,不會發生BACKUP搶占的現象,除非它的優先級更高。而當MASTER出現故障,多臺BACKUP就會進行選舉,優先級最高的BACKUP成為新的MASTER,這種選舉并進行角色切換的過程非常快,因而保證了服務的持續可用性。

Keepalived工作原理

keepalive運行機制如下:

? ? ? ? 在網絡層,運行著4個重要的協議:互聯網協議IP、互聯網控制報文協議ICMP、地址轉換協議ARP以及反向地址轉換協議RARP。Keepalived在網絡層采用的最常見的工作方式是通過ICMP協議向服務器集群中的那個節點發送一個ICMP數據包(類似于ping實現的功能),如果某個節點沒有返回響應數據包,那么認為此節點發生了故障,Keepalived將報告次節點失效,并從服務器集群中剔除故障節點。

? ? ? ? 在傳輸層,提供了兩個主要的協議:傳輸控制協議TCP和用戶數據協議UDP。傳輸控制協議TCP可以提供可靠的數據傳輸服務、Ip地址和端口代表TCP的一個連接端。要獲得TCP服務,需要在發送機的一個端口上和接收機的一個端口上建立連接,而Keepalived在傳輸層就是利用TCP協議的端口連接和掃描技術來判斷集群點是否正常的。比如,對于常見的WEB服務默認的80端口、SSH服務默認的22端口等,Keepalived一旦在傳輸層探測到這些端口沒有響應數據返回,就認為這些端口發生異常,然后強制將此端口對應得節點從服務器集群組中移除。

? ? ? ?在應用層,可運行FTP、TELNET、SMTIP、DNS等各種不同類型的高層協議,Keepalived的運行方式也更加全面化和復雜化,用戶可以通過自定義Keepalived的工作方式;例如:用戶可以通過編寫程序來運行keepalived。而keepalived將根據用戶的設定檢測各種程序或服務是否運行正常,如果Keepalived的檢測結果與用戶設定不一致時,Keepalived將把對應的服務從服務器中移除。

Keepalived的組件:

核心組件:

? ? ? ? ? ? ?VRRP Stack:實現HA集群中失敗切換(Failover)功能。Keepalived通過VRRP功能能

再結合LVS負載均衡軟件即可部署一個高性能的負載均衡集群系統。

ipvs wrapper:可以將設置好的IP VS規則發送到內核空間并提交給IP VS模塊,最終實

現 IP VS模塊的負載均衡功能。

? ? ? ? ? ?checkers:這是Keepalived 最基礎的功能,也是最主要的功能,可實現對服務器運行狀

態檢測和故障隔離。

HA Cluster的配置前提:

? ? ? ? ? ? ? ? ? ? (1) 各節點時間必須同步;

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ntp, chrony

? ? ? ? ? ? ? ? ? ? (2) 確保iptables及selinux不會成為阻礙;

? ? ? ? ? ? ? ? ? ? (3) 各節點之間可通過主機名互相通信(對KA并非必須);

? ? ? ? ? ? ? ? ? ? ? ? ? ?建議使用/etc/hosts文件實現;

? ? ? ? ? ? ? ? ? ? (4) 確保各節點的用于集群服務的接口支持MULTICAST通信;

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? D類:224-239;

Keepalived安裝與配置:

? ? ? ? ? ? Centos6.4以后版本可以直接yum安裝:

? ? ? ? ? ? ? ? ? ? ? ? ?yum install keepalived

? ? ? ? ? ?程序環境:

? ? ? ? ? ? ? ? ? ?主配置文件:/etc/keepalived/keepalived.conf

? ? ? ? ? ? ? ? ? ?主程序文件:/usr/sbin/keepalived

? ? ? ? ? ? ? ? ? ? ? ?Unit File:keepalived.service

? ? ? ? ? ? ? ? ? ? ? Unit File的環境配置文件:/etc/sysconfig/keepalived

? ? ?根據配置文件所實現的功能,將Keepalived配置分三類:

? ? ? ? ? ? Global Configuration

? ? ? ? ? ? ? ? ? ? ? VRRPD 配置、LVS配置
? ? ? ? ? ? ? ? ? ? ? ? ? 全局配置以”global_defs”作為標識,在“global_defs”區域內的都是
? ? ? ? ? ? ? ? ? ?全局配置選項:
? ? ? ? ? ? ? ? ? ? ? ? ? global_defs {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? notification_email {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?acassen@firewall.loc
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? failover@firewall.loc
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?sysadmin@firewall.loc
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?}
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?notification_email_from
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Alexandre.Cassen@firewall.loc
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?smtp_server 192.168.200.1
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?smtp_connect_timeout 30
? ? ? ? ? ? ? ? ? ? ? ? ? ? router_id LVS_DEVEL
? ? ? ? ? ? ? ? ? ? ? ? ?vrrp_mcast_group4 224.110.129.18
? ? ? ? ? ? ? ? ? ? ? ?}
? ? ? ? ? ? ? ? ? ? ?notification_email :用于設置報警郵件地址,可以設置多個,每行一個。注意,如果要開啟郵 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 件報警,需要開啟本機的Sendmail服務。
? ? ? ? ? ? ? ? ? ? ?notification_email_from :用于設置郵件的發送地址,真正的能發郵件的地址。
? ? ? ? ? ? ? ? ? ? ?smtp_server:用于設置郵件的smtp server地址
? ? ? ? ? ? ? ? ? ? ?smtp_connect_timeout:設置smtp server的超時時間
? ? ? ? ? ? ? ? ? ? ?router_id :表示運行keepalived服務器的一個標識,是發郵件時顯示在郵件主題中的信息
? ? ? ? ? ? ? ? ? ? ?vrrp_mcast_group4 :多播地址段
? ? ? ? ? ? ? ? VRRP配置段主要用來配置節點角色(主或從)、綁定的網絡接口、節點間驗證機制、集群 ? ? ? ? ? ? ? ? ? ??服務IP等。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?vrrp_instance VI_1 {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?state MASTER
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? interface eth0
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? virtual_router_id 51
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? priority 100
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? advert_int 1
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?authentication {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? auth_type PASS
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? auth_pass 1111
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?virtual_ipaddress {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?192.168.200.16
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?192.168.200.17
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?192.168.200.18
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?}
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? track_interface {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? eth0
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? eth1
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?…
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?}
? ? ? ? ? ? ? ? ? ? ? ?VRRP 配置以” vrrp_instance“作為標識,包含了若干配置選項:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?vrrp_instance:是VRRP實例開始的標識,后跟VRRP實例名稱
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? state:用于指定Keepalived的角色,MASTER表示此主機是服?務器,BAVKUP表示此 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?主機是備用服務器。
      ? ? ? ? ? ? ? interface:虛擬IP配置指定的接口
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? virtual_router_id:虛擬路由標識,它是一個數字,同一個?VRRP配置段的唯一標識, ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 即在同一個vrrp_instance下,MASTER和BACKUP必須是一致的。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? priority:用于定義節點優先級,數字越大優先級越高。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? advert_int:設定MASTER和BACKUP主機之間同步檢查的時間間隔,單位是秒。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?authentication:用于設定節點間通信驗證類型和密碼,驗證類型主要有PASS(簡單字 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 符串認證,支持前8位,可以用:openssl rand -base64 8 獲取隨機密碼)和AH兩 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?種,在一個vrrp_instance下,MASTER和BACKUP必須使用相同的密碼才能正常通信。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? virtual_ipaddress:用于設置虛擬IP地址(VIP)。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? track_interface:配置要監控的網絡接口,一旦接口出現故障,則轉為FAULT狀態;
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? nopreempt:定義工作模式為非搶占模式;可以實現主節點故障恢復后不再切回到主節 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?點,讓服務一直在備用節點工作,直到備用節點出現故障才會進行切換。在使 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 用不搶占時,只能在”state“狀態為BACKUP的節點上設置,而且這個節點的優 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?先級必須高于其他節點。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?preempt_delay 300:搶占式模式下,節點上線后觸發新選舉操作的延遲時長;

? ? ? ? ? ?定義通知腳本

? ? ? ? ? ? ? ? ? ?notify_master:指定當Keepalived進入MASTER狀態時要執行的腳本,這個腳本可以是一個狀 ? ? ? ? ? ? ? ? ? ? ? ? ?態報警腳本,也可以是一個服務管理腳本。Keepalived允許腳本出入參數,因此靈活性很強。
? ? ? ? ? ? ? ? ? notify_backup:當Keepalived進入BACKUP狀態時要執行的腳本,這個腳本可以是一個狀態報警 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?腳本,也可以是一個服務管理腳本。
? ? ? ? ? ? ? ? ? notify_fault:指定當Keepalived進入FAULT狀態時要執行的腳本,腳本功能與前兩個類似。
? ? ? ? ? ? ? ? ? notify <STRING>|<QUOTED-STRING>:通用格式的通知觸發機制,一個腳本可完成以上三種 ? ? ? ? ? ? ? ? ? ? ? ? ? 狀態的轉換時的通知;

實驗: 單主配置示例

? ? ? ? ? ? ? ?環境:
? ? ? ? ? ? ? ? ? ?兩臺主機分別是:172.16.252.18/16(node1) 配置BACKUP
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 172.16.252.19/16 (node2) 配置MASTER
? ? ? ? ? ? ? ? ? ?兩臺主機分別配置:/etc/keepalived/keepalived.conf
5
? ? ? ? ? ? ? ? ? ? 兩臺主機:systemctl restart keepalived
? ? ? ? ? ? ? ? ? ? ? ? ? 啟動之后,可以在MASTER的主機上查看:
6
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?ip ? ? a ? ? l
7
? ? ? ? ? ? ? ? ? ? ? ?下圖中:?可以看出MASTER主機,一直向多播地址發送信息.
8

? ? ? ? ? ? ? ? ? ? ? ?模擬MASTER主機宕機 :

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?iptables -A OUTPUT -d 224.110.129.18 -j REJECT
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? systemctl stop keepalived
? ? ? ? ? ? ? ? ? ? ? BACKUP主機上:顯示虛擬地址加進來了
9
? ? ? ? ? ? ? ? ? ? ip a l 可以查看到虛擬地址了。如果MASTER主機再啟動后,由于優先級高,VIP虛擬地址又被 ? ? ? ? ? ? ? ? ? ? ? ?搶回來了!

雙主模型的配置:

? ? ? ? ? ? ? 所謂雙主模型對于VRRP來講還是單主,所不同的是在同一個接口上,配置了多個虛擬路由器。
? ? ? ? ? ? ? ?在上個實驗基礎上配置:
? ? ? ? ? ? ? ? ? ? 在note2主節點上配置:
? ? ? ? ? ? ? ? ? ? ? ? ? ? 同一個接口上同一組物理服務器上配置第二個虛擬路由器:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?vim ? ? /etc/keepalived/keepalived.conf
? ? ? ? ? ? ? ? ? ? 在原來基礎上添加下圖配置段:
? ? ? ? ? ? ? ? ? ? ??10
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?同理在note1節點上配置:

11

? ? ? ? ? ? ? ? ? ? ?測試效果:

? ? ? ? ? ? ? ? ? ? ? ? ? note2: systemctl stop keepalived.service
? ? ? ? ? ? ? ? ? ? ? ? ? ?note1: systemctl start keepalived.service
12
13
? ? ? ? ? ? ? ? ? 同理:把note2主機啟動起來,查看效果,由于優先級高,會拿走一個地址;而note1主機就一個虛擬地址。

通知腳本的使用方式:

腳本的調用方法:

? ? ? ? ?notify_master “/etc/keepalived/notify.sh master”

? ? ? ? ?notify_backup “/etc/keepalived/notify.sh backup”

? ? ? ? ?notify_fault “/etc/keepalived/notify.sh fault”

在單主模型的實驗環境下:

? ? ? ? ? ? ? ?在note1和note2節點上,分別執行以下操作:
? ? ? ? ? ? ? ? ? ? ? ? ?cd /etc/keepalived/
? ? ? ? ? ? ? ? ? ? ? ? ?vim notify.sh
14
? ? ? ? ? ? ? ? note1、note2兩臺主機上:
? ? ? ? ? ? ? ? ? ? ? ? ?systemctl stop keepalived
? ? ? ? ? ? ? ? ? ? ? ? ?vim /etc/keepalived/keepalived.conf
15
? ? ? ? ? ? ? ? ?當note1備用節點先啟動時,它會變成MASTER,虛擬地址被添加:
? ? ? ? ? ? ? ? ? ? ? ? systemctl restart keepalived.service
16
17
? ? ? ? ? ? ? ? 當再啟動note2時,它從沒有啟動到變成主節點,而當前的note1變成了備用節點:
? ? ? ? ? ? ? ? ? ? ? ? ? ? note2: systemctl restart keepalived.service
? ? ? ? ? ? ? ? ? ? ? ? ? ? note1上查看:
18
? ? ? ? ? ? ? ? ? ?root 又收到一份郵件:
19
? ? ? ? ? ? ? ? ? ? ?而note2主機上:變成了主節點,虛擬地址被添加了:
20
21
Keepalived 簡單配置,以及通知腳本的運用就介紹到這里。之后的高級集群架構,后期會繼續整理,更新!

本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/87409

(0)
shenjialongshenjialong
上一篇 2017-09-18 16:43
下一篇 2017-09-18 22:51

相關推薦

  • 使用Nmap掃描系統風險點

    0x00 迅速了解Nmap Nmap是一款掃描目標網絡信息的工具,可以是黑客用來探測主機信息,收集情報的神器。也可以是運維人員掃描網絡環境,及時發現系統漏洞的好幫手。 0x01 它的功能 1、主機發現(Host Discovery)#探測目標網絡環境中有哪些主機是可以進行通信的,當然你也可以用ping命令試一下 2、端口掃描(Port S…

    Linux干貨 2015-04-19
  • 馬哥教育網絡班20期+第五周博客作業

    1、顯示/boot/grub/grub.conf中以至少一個空白字符開頭的行; ]# grep  "^[[:space:]]\+" /boot/grub/grub.conf 2、顯示/etc/rc.d/rc.sysinit文件中以#開頭,后面跟至少一個空白字符,而后又有至少一個非空白字符的行; ]#…

    Linux干貨 2016-07-12
  • 搜索引擎的檢索模型-查詢與文檔的相關度計算

    1. 檢索模型概述       搜索結果排序時搜索引擎最核心的部分,很大程度度上決定了搜索引擎的質量好壞及用戶滿意度。實際搜索結果排序的因子有很多,但最主要的兩個因素是用戶查詢和網頁內容的相關度,以及網頁鏈接情況。這里我們主要總結網頁內容和用戶查詢相關的內容。     &nbsp…

    2015-12-10
  • https介紹

    什么是https HTTP協議傳輸的數據都是未加密的,也就是明文的,因此使用HTTP協議傳輸隱私信息非常不安全。為了保證這些隱私數據能加密傳輸,于是網景公司設計了SSL(Secure Sockets Layer)協議用于對HTTP協議傳輸的數據進行加密,從而就誕生了HTTPS。SSL目前的版本是3.0,被IETF(Internet Engineering T…

    Linux干貨 2017-12-04
  • 第一周作業-02

    Linux的命令格式 命令的語法通用格式:    ~]# COMMAND OPTIONS ARGUMENTS        COMMAND: 發起一命令:請求內核將某個二進制程序運行為一個進程;            程序 –&…

    Linux干貨 2016-09-19
  • 磁盤管理及shell腳本編程練習

    1、創建一個10G分區,并格式為ext4文件系統 a)?要求其block大小為2048,預留空間百分比為2,卷標為MYDATA,默認掛載屬性包含acl; ~]# mke2fs –t ext4 –b 2048 –m 2 –L MYDATA? /dev/sda3 b)?掛載至/data/madata目錄,要求掛載時禁止程序自動運行,且不更新文件的訪問時間戳; ~…

    2017-11-15
欧美性久久久久