2017 10-30 keepalived應(yīng)用

一.keepalived介紹

1.keepalived的功能

實現(xiàn)集群服務(wù)的高可用性(HA),在實際工作中當lvs調(diào)度器發(fā)生故障時需要這種機制實現(xiàn)工作的高可用性,就是說當一個調(diào)度器出現(xiàn)故障時,可以由另一個服務(wù)器繼續(xù)接管繼續(xù)工作。

2.常用的高可用集群的實現(xiàn)方案

vrrp:Virtual Router Redundancy Protocol——虛擬路由冗余協(xié)議

3.常見的keepalived配置術(shù)語

虛擬路由器:Virtual Router
虛擬路由器標識:VRID(0-255),唯一標識虛擬路由器
物理路由器:
master:主設(shè)備
backup:備用設(shè)備
priority:優(yōu)先級
VIP:Virtual IP
VMAC:Virutal MAC (00-00-5e-00-01-VRID)
通告:心跳,優(yōu)先級等;周期性 ?
工作方式:搶占式,非搶占式 ?
安全工作: 認證: 無認證 簡單字符認證:預(yù)共享密鑰 MD5 ?
工作模式:
主/備:單虛擬路徑器
主/主:主/備(虛擬路徑器1),
備/主(虛擬路徑器2)

*注意:vrrp協(xié)議的軟件實現(xiàn),原生設(shè)計目的為了高可用ipvs服務(wù).換句話說該協(xié)議軟件的實現(xiàn)就是搭配lvs使用,達到高可用的目的,彼此為絕配的關(guān)系
雙方的搭配模式主要的功能:
vrrp協(xié)議完成地址流動 ?
為vip地址所在的節(jié)點生成ipvs規(guī)則(在配置文件中預(yù)先定義) ?
為ipvs集群的各RS做健康狀態(tài)檢測 ?
基于腳本調(diào)用接口通過執(zhí)行腳本完成腳本中定義的功能, 進而影響集群事務(wù),以此支持nginx、haproxy等服務(wù)

4.keepalived的組成

(1)組件: ?
核心組件: vrrp stack ipvs wrapper checkers ?
控制組件:配置文件分析器 ?IO復(fù)用器 ? 內(nèi)存管理組件

二.keepalived的實現(xiàn)

1.HA Cluster 配置準備的準備工作
(1)集群環(huán)境的時間同步,也就說各個節(jié)點的時間必須相同
使用的服務(wù)是ntp和chrony(在7上使用)
首先使用ntpdate 172.18.0.1(假設(shè)為互聯(lián)網(wǎng)時間),與互聯(lián)網(wǎng)時間同步
上述方法是暫時同步時間,過一段時間后還是會出現(xiàn)差別
然后vim /etc/ntp.conf


image.png

該方法可以實現(xiàn)與互聯(lián)網(wǎng)時間的實時同步,為了方便直接設(shè)置為開機自啟chkconfig ntpd on
然后service ntpd start
這樣只需要其他服務(wù)在ntp.conf或是chrony.conf配置文件中和該主機時間同步即可


image.png

(2)清除各主機之間的防火墻策略和selinux策略,以防影響實驗結(jié)果
(3)各節(jié)點之間以主機名的方式實現(xiàn)互相通訊
在各個節(jié)點中設(shè)置:
hostname set-hostname node1
image.png

hostname set-hostname node2
image.png

然后在/etc/hosts文件中寫下對方的主機名,實現(xiàn)解析通訊


image.png

image.png

(4)實現(xiàn)基于Key的ssh服務(wù)驗證,相互信任,防止黑客的干擾
實現(xiàn)方法:
執(zhí)行ssh-keygen命令會生成
image.png

ssh-copy -i id_rsa.pub node2:
image.png

三.keepalived的具體應(yīng)用

1.實現(xiàn)簡單的主備工作模式

拓撲結(jié)構(gòu)圖


image.png

(1)yum install keepalived
vim /etc/keepalived/keepalived.conf


image.png

在另一主機上,設(shè)置為主服務(wù)器,將配置文件中的優(yōu)先級調(diào)為100,比備用主機數(shù)值大即可,state為MASTER
其他不變

配置完成,可以通過tcpdump -i eth0 -nn host 224.99.99.62來測試效果


image.png

此時的虛擬vip地址也被綁定在主服務(wù)器上,備用服務(wù)器沒有該地址
image.png

此時即使將備服務(wù)器的keepalived開啟也無法工作,因為它的優(yōu)先級小于主服務(wù)器,所以無法參與工作。但是此時如果將主服務(wù)關(guān)掉,那么備用服務(wù)器會開始工作
image.png

此時虛擬vip也切換到備用服務(wù)器上
image.png

主從模式配置成功
  • 記錄日志
    vim /etc/sysconfig/keepalived


    image.png
  • vim /etc/rsyslog.conf


    image.png

    設(shè)置完成后,重啟日志服務(wù)和keepalived
    查看日志 ll /var/log/keepalived.log


    image.png
  • mail設(shè)置
    通過mail設(shè)置可以實現(xiàn)rs服務(wù)器的上線下線通知功能,并且通過觸發(fā)腳本來實現(xiàn)主備的切換

具體實現(xiàn):
在 /etc/keepalived/下編寫notify.sh通知腳本

  1 #!/bin/bash
  2 #
  3 contact='root@localhost'
  4 notify() {
  5   mailsubject="$(hostname) to be $1, vip floating"
  6   mailbody="$(date +'%F %T'): vrrp transition, $(hostname) changed to be $1"
  7   echo "$mailbody" | mail -s "$mailsubject" $contact
  8 }
  9 case $1 in
 10   master)
 11     notify master
 12     ;;
 13 backup)
 14     notify backup
 15     ;;
 16 fault)
 17     notify fault
 18     ;;
 19 *)
 20   echo "Usage: $(basename $0) {master|backup|fault}"  
 21   exit 1
 22   ;;
 23 esac

寫完后執(zhí)行 ./notify master 觀察mail

image.png

./notify backup


image.png

因此在keepalived.conf加入出發(fā)腳本


image.png

主要功能就是通過郵件進行通知主服務(wù)器與備用服務(wù)器的切換,當之前的主服務(wù)出現(xiàn)故障后,配置文件會觸發(fā)通知腳本告知另一個備用服務(wù)器變?yōu)橹鞣?wù)器
  • 注意在備用服務(wù)器上也要進行相同的設(shè)置

2.實現(xiàn)主主模式

image.png

解釋:
針對route_id為80,虛擬vip為192.168.136.62這個地址,node1位master,node2為backup
針對route_id為70,虛擬vip為192.168.136.63這個地址,node1為backup,node2為master
總體來說仍然是主備模式,只是針對不同的vip地址而定義了相對的主主模式

  • 具體實現(xiàn)步驟:
vim /etc/keepalived/keepalived.conf
再寫一個實例
vrrp_instance VI_2 {
    state BACKUP——由原來的MASTER變?yōu)锽ACKUP
    interface eth0
    virtual_router_id 70——設(shè)置一個新的id號
    priority 90——優(yōu)先級要變低
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 6ceadb21——設(shè)置新的密碼
        
    }   
    virtual_ipaddress {
        192.168.136.63/24——配置新的vip地址
    }   
      notify_master "/etc/keepalived/notify.sh master"
      notify_backup "/etc/keepalived/notify.sh backup"
      notify_fault  "/etc/keepalived/notify.sh fault"
      
}

在備用服務(wù)器上設(shè)置同樣內(nèi)容

vrrp_instance VI_2 {
    state MASTER——由原來的BACKUP變?yōu)镸ASTER
    interface ens33
    virtual_router_id 70——設(shè)置一個新的id號
    priority 100——優(yōu)先級要變高
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 6ceadb21——設(shè)置新的密碼
        
    }   
    virtual_ipaddress {
        192.168.136.63/24——配置新的vip地址
    }   
      notify_master "/etc/keepalived/notify.sh master"
      notify_backup "/etc/keepalived/notify.sh backup"
      notify_fault  "/etc/keepalived/notify.sh fault"
      
}

配置完成后進行測試


image.png

3.結(jié)合后端RS服務(wù)器的高可用性的實現(xiàn)(與Lvs的結(jié)合應(yīng)用)

(1)結(jié)合ipvs的主從服務(wù)調(diào)度(DR調(diào)度模式)

拓撲圖 基于結(jié)合lvs的主從模式的高可用的工作模式


image.png

(2)在rs服務(wù)器端上執(zhí)行l(wèi)vs腳本


image.png

(3)在主備服務(wù)器上設(shè)置keepalived.conf腳本
image.png

image.png

將該腳本復(fù)制到另一個備用服務(wù)器上
scp /etc/keepalived/keepalived.conf node2:/etc/keepalived/keepalived.conf
配置完成后,重啟服務(wù)查看是否具有ipvs規(guī)則
ipvsadm -Ln


image.png

在備用服務(wù)器上同樣具有ipvs規(guī)則
image.png

配置成功
(4)在客戶端上進行訪問,測試結(jié)果
image.png

結(jié)果正確
(5)測試如果主服務(wù)器出現(xiàn)故障,在客戶端進行測試,觀察結(jié)果
image.png

利用tcpdump命令查看主從是否切換


image.png

(6)健康性檢查的測試,當其中的一個RS服務(wù)器故障后,在客戶端測試觀察結(jié)果
image.png

4.實現(xiàn)主主模式的集群調(diào)度

  • 調(diào)度拓撲圖


    image.png
  • 正常情況下lvs2應(yīng)該選擇新的另外兩個服務(wù)器進行測試,并且后面的也要建立兩個新的rs服務(wù)器,但是本實驗為了節(jié)省資源就都在同樣的兩臺機上做實驗,實現(xiàn)互為主從的調(diào)度實驗
    設(shè)置兩個vip
    vip1:192.168.136.62
    vip2:192.168.136.63
    當訪問vip1時170為主
    當訪問vip2時183為主
    實驗?zāi)康拿鞔_,接下來實現(xiàn)具體的配置步驟
    (1)首先在各自的rs服務(wù)器上執(zhí)行l(wèi)vsj腳本


    image.png

    執(zhí)行腳本后觀察


    image.png

    (2)vim /etc/httpd/conf/httpd.conf在rs服務(wù)器上設(shè)置虛擬主機
    image.png

    ip a a 192.168.136.133 dev eth0
    mkdir /app/web1
    mkdir /app/web2
    echo images 134 > /app/web1/index.html
    echo app 133 > /app/web2/index.html
    (3)在lvs調(diào)度器上
    vim /ect/keepalived/keepalived.conf
    image.png

    另一個同上
    配置完后,重啟服務(wù)觀察ipvs


    image.png

    (4)在rs服務(wù)器端上測試
    image.png

    顯示成功,但是在客戶端去測試無法正確顯示,因此建議不要在統(tǒng)同一主機配置
    (5)一個vip只往一個rs服務(wù)器端上調(diào)度
    image.png

    減少服務(wù)器數(shù)量
    只要訪問63就往173上調(diào)度
    只要訪問62就往134上調(diào)度

5.實現(xiàn)keepalived的nginx的高可用集群調(diào)度

(1)在keepalived的配置文件中配置腳本


image.png

image.png

(2)另一臺調(diào)度器執(zhí)行相同操作
該腳本的含義是:先設(shè)置腳本,然后對腳本進行檢查,如果判斷出down文件存在,就將優(yōu)先級高的調(diào)度器的數(shù)值減少20,使另一個調(diào)度器優(yōu)先級變高成為主服務(wù)器,進行繼續(xù)的工作。當down文件刪除后,又恢復(fù)原來的主備模式
(3)對腳本進行測試


image.png

在/etc/keepalived/下創(chuàng)建一個down文件
就會實現(xiàn)主從切換
image.png

刪除down文件后又重新恢復(fù)


image.png

(4)對此可以使用腳本來實現(xiàn)nginx的高可用集群調(diào)度
在/etc/nginx/nginx.conf中進行配置
image.png

image.png

開啟了反向代理功能
關(guān)閉httpd 服務(wù)打開nginx服務(wù)
(5)對nginx服務(wù)做健康性檢查,在keepalived.conf的腳本中進行設(shè)置
image.png

image.png

另一個調(diào)度器同上
(6)關(guān)閉keepalived服務(wù),使用tcpdump命令測試,先開啟一個keepalived服務(wù)
image.png

(7)另一個也開啟,并殺死之前的keepalived服務(wù)


image.png

顯示正確,主服務(wù)器減少20,使從服務(wù)器變?yōu)橹鞣?wù)器工作
最后編輯于
?著作權(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)容

  • 一、高可用集群 (一)提升系統(tǒng)高可用性的解決方案:冗余(redundant) 工作模式active/passive...
    哈嘍別樣閱讀 1,806評論 2 5
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,564評論 19 139
  • 一.HAProxy介紹 HAProxy: 是法國人Willy Tarreau開發(fā)的一個開源軟件,是 一款應(yīng)對客戶端...
    楠人幫閱讀 1,288評論 0 2
  • 1.Cluster(集群)概念 (1)系統(tǒng)擴展方式: Scale UP:向上擴展,增強Scale Out:向外擴展...
    尛尛大尹閱讀 1,212評論 0 4
  • 未來人工智能時代的教育是什么樣子?人工智能時代,我們每個人最有效的學(xué)習(xí)方法是什么?該學(xué)習(xí)什么?怎么思考人工智能時代...
    曹司空閱讀 379評論 0 0

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