keepalived入門

一、 什么是keepalived?

Keepalived是一個用C語言編寫的路由軟件。該項目的主要目標(biāo)是為Linux系統(tǒng)和基于Linux的基礎(chǔ)設(shè)施提供簡單而強大的負載均衡和高可用性設(shè)施。Loadbalancing框架依賴于眾所周知的廣泛使用的Linux虛擬服務(wù)器(IPVS) 內(nèi)核模塊來提供Layer4負載平衡。Keepalived實現(xiàn)了一組檢查器,根據(jù)其健康動態(tài)地自適應(yīng)維護和管理負載均衡服務(wù)器池。另一方面,VRRP實現(xiàn)高可用性 協(xié)議。VRRP是路由器故障轉(zhuǎn)移的根本障礙。另外,Keepalived在VRRP有限狀態(tài)機上實現(xiàn)了一系列鉤子,提供低級和高速的協(xié)議交互。Keepalived框架可以獨立使用,也可以一起使用,以提供彈性基礎(chǔ)設(shè)施。(來源:keepalived官網(wǎng)

二、 keepalived工作原理

Atomic Elements
  • WatchDog 監(jiān)控checkers和VRRP進程的狀況;
  • Checkers 負責(zé)真實服務(wù)器的健康檢查healthchecking;
  • VRRP Stack負責(zé)負載均衡器之間的失敗切換;
  • IPVS wrapper 用來發(fā)送設(shè)定的規(guī)則到內(nèi)核IPVS代碼;
  • Netlink Reflector 用來設(shè)定 vrrp 的vip地址等。

keepalived是以VRRP協(xié)議為實現(xiàn)基礎(chǔ)的,VRRP全稱Virtual Router Redundancy Protocol,即虛擬路由冗余協(xié)議。

虛擬路由冗余協(xié)議,可以認為是實現(xiàn)路由器高可用的協(xié)議,即將多個提供相同功能的路由器組成一個路由器組,這個組里面有一個master和多個backup,master上面有一個對外提供服務(wù)的vip(該路由器所在局域網(wǎng)內(nèi)其他機器的默認路由為該vip),master會發(fā)組播,當(dāng)backup收不到vrrp包時就認為master宕掉了,這時就需要根據(jù)VRRP的優(yōu)先級來選舉一個backup當(dāng)master。這樣的話就可以保證路由器的高可用了。

keepalived主要有三個模塊,core、check和vrrp。

  • core模塊為keepalived的核心,負責(zé)主進程的啟動、維護以及全局配置文件的加載和解析;
  • check負責(zé)健康檢查,包括常見的各種檢查方式;
  • vrrp模塊是來實現(xiàn)VRRP協(xié)議的。

三、 安裝(centos為例)

keepalived源碼包下載地址:http://www.keepalived.org/download.html

由于Keepalived官方不提供任何Linux發(fā)行包,只提供源代碼和代碼庫,所以需要編譯安裝。(當(dāng)然也可以用yum、apt-get 安裝)。

1、yum install -y openssl-devel popt-devel

2、編譯


wget http://www.keepalived.org/software/keepalived-1.2.13.tar.gz

tar zxvf keepalived-1.2.13.tar.gz

cd keepalived-1.2.13

./configure --prefix=/usr/local/keepalived

make && make install

注意:如果多處安裝,可以打包可執(zhí)行文件到新環(huán)境直接安裝。

cd /usr/local/ && tar zcvf keepalived-bin-1.2.13.tar.gz ./keepalived

3、安裝


#! /bin/bash

wget http://192.168.70.56/keepalived/keepalived-bin-1.2.13.tar.gz

tar zxvf keepalived-bin-1.2.13.tar.gz

cp ./keepalived/sbin/keepalived /usr/sbin/

cp ./keepalived/etc/sysconfig/keepalived /etc/sysconfig/

cp ./keepalived/etc/rc.d/init.d/keepalived /etc/init.d/

cd /etc/init.d/

chkconfig --add keepalived

chkconfig keepalived on

mkdir -p /etc/keepalived

echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf

echo "net.ipv4.ip_nonlocal_bind = 1" >> /etc/sysctl.conf

sysctl -p /etc/sysctl.conf

4、配置


echo "

! Configuration File for keepalived

global_defs { # 全局配置

    router_id app_ka_1

}

vrrp_script chk_app {

    script "/etc/keepalived/checkMySQL.py -h 127.0.0.1 -P 3306"

    interval 15

}

vrrp_instance VI_KA_1 {

    state BACKUP # MASTER/BACKUP

    nopreempt

    interface eth0  #網(wǎng)卡

    virtual_router_id 23  # 指定實例所屬的VRRP路由器ID

    priority 100 #優(yōu)先級

    advert_int 5 #以秒為單位指定廣播時間間隔

    # 單播配置

    unicast_src_ip 192.168.110.136 #本地IP

    unicast_peer {

        192.168.110.140 #遠端IP

    }

    authentication { #認證

        auth_type PASS

        auth_pass 1111

    }

    track_script {

        chk_app

    }

    virtual_ipaddress { #VIP定義塊,限制為20個IP地址

        192.168.110.200 #vip

    }

    notify_master #指定在轉(zhuǎn)換到主狀態(tài)期間執(zhí)行的shell腳本

    notify_backup #指定在轉(zhuǎn)換到備份狀態(tài)期間執(zhí)行的shell腳本

}

" >/etc/keepalived/keepalived.conf

5.測試

注意:防火墻一定要開啟 vrrp協(xié)議的支持,(端口 112)

四、 keepalived命令行參數(shù):

-f,-use-file = FILE

使用指定的配置文件。默認配置文件是“/etc/keepalived/keepalived.conf”。

-P,-vrrp

只運行VRRP子系統(tǒng)。這對于不使用IPVS負載均衡器的配置很有用。

-C,  –check

只運行健康檢查子系統(tǒng)。這對于使用IPVS負載平衡器和單個控制器進行故障切換的配置非常有用。

-l,-log-console

將消息記錄到本地控制臺。默認行為是將消息記錄到syslog。

-D,-log-detail

詳細的日志消息。

-S,-log-facility = [0-7]

將syslog工具設(shè)置為LOG_LOCAL [0-7]。默認的系統(tǒng)日志工具是LOG_DAEMON。

-V,-dont-release-vrrp

不要在守護進程中刪除VRRP VIP和VROUTE。默認行為是當(dāng)keepalived退出時刪除所有的VIP和VROUTE

-I,-dont-release-ipvs

守護進程停止時不要刪除IPVS拓撲。它是在keepalived退出時從IPVS虛擬服務(wù)器表中刪除所有條目的默認行為。

-R,–dont-respawn

不要重新生成子進程。默認行為是如果任一進程退出,則重新啟動VRRP和檢查器進程。

-n,-dont-fork

不要分解守護進程。這個選項會導(dǎo)致keepalived在前臺運行。

-d,-dump-conf

轉(zhuǎn)儲配置數(shù)據(jù)。

-p,-pid = FILE

為父保持進程使用指定的pidfile。keepalived的默認pid文件是“/var/run/keepalived.pid”。

-r,-vrrp_pid = FILE

為VRRP子進程使用指定的pidfile。VRRP子進程的默認pid文件是“/var/run/keepalived_vrrp.pid”。

-c,-checkers_pid = FILE

檢查器子進程使用指定的pidfile。檢查器子進程的默認pid文件是“/var/run/keepalived_checkers.pid”。

-x,-snmp

啟用S??NMP子系統(tǒng)。

-v,-version

顯示版本并退出。

-h,-help

顯示此幫助信息并退出。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容