1. 程式人生 > 實用技巧 >keepalived搭建redis主備高可用方案實踐

keepalived搭建redis主備高可用方案實踐

keepalived搭建redis主備高可用方案實踐

keepalived原理、配置檔案及安裝過程

keepalived是叢集管理中保證叢集高可用的一個服務軟體,用來防止單點故障。實現基礎VRRP協議

VRRP協議

Keepalived元件:core、check、vrrp、libipfwc、libipvs-2.4、libipvs-2.6
**core:**是keepalived的核心,復責主程序的啟動和維護,全域性配置檔案的載入解析等

**check:*負責healthchecker(健康檢查),包括了各種健康檢查方式,以及對應的配置的解析包括LVS的配置解析
vrrp:VRRPD子程序,VRRPD子程序就是來實現VRRP協議的
libipfwc:iptables(ipchains)庫,配置LVS會用到
libipvs
:配置LVS會用到
Redis使用keepalived熱備設計思路:
1)當 Master 與 Slave 均運作正常時, Master負責服務,Slave負責Standby;
2)當 Master 掛掉,Slave 正常時, Slave接管服務,有寫許可權,同時關閉主從複製功能;
3)當 Master 恢復正常,則從Slave同步資料,同步資料之後關閉主從複製功能,恢復Master身份,同時Slave等待Master同步資料完成之後,恢復Slave身份。
然後依次迴圈。

Keepalived安裝過程:

1、下載軟體,版本與生產版本匹配:1.2.24
2、通過xftp將安裝包傳到/usr/local路徑
3、解壓:usr/local:tar -zxvf keepalived-1.2.24.tar.gz
4、usr/local:mkdir keepalived
5、usr/local:cd keepalived-1.2.2
6、usr/local/keepalived-1.2.2:
./configure --prefix=/usr/local/keepalived
(出現問題,缺少openssldevel依賴)
7、找到suse對應的openssldevel包
107770_libopenssl-devel-0.9.8j-2.1.x86_64.rpm

rpm -ivh XXX.rpm 出現問題,
8、安裝openssldevel:
9、usr/local/keepalived: rpm -ivh 包名 --force --nodeps
10、Keepalived-1.2.2目錄重新./configure,發現缺少popt,
11、下載popt-devel,rpm -ivh 包名 --force --nodeps
再進行./configure成功,最後make&make install

安裝過程問題注意:
1、安裝openssldevel時,會出現各種依賴包關係,直接忽略,通過–force --nodeps命令強行安裝,不然會出現各種問題
2、安裝時注意路徑,最好裝在指定的資料夾中

Keepalived引數配置過程


Keepalived配置引數
主要分為以下三部分:
A.global_defs:全域性定義,這裡不需要操作,全部註釋掉。保留router_id 機器標識
B.Vrrp_script chk_redis:這一塊作用是健康檢查,當檢查失敗時會將vrrp_instance的priority減少相應的值,實現虛擬IP漂移的功能
C.Vrrp_instance:例項模組,其中
state標識機器的狀態,BACKUP為備機,MASTER為從機,本機配置兩臺都為BACKUP,原因見下:
interface:為網絡卡介面:可通過ip addr檢視自己的網絡卡介面,網絡卡需要選擇和虛擬IP同網段的
virtual_router_id:虛擬路由標誌。同組的virtual_router_id應該保持一致。它將決定多播的MAC地址。
priority:設定本節點的優先順序,優先順序高的為master
nopreempt:該引數為非搶佔引數,通常如果master服務死掉後backup會變成master,但是當master服務又好了的時候 master此時會搶佔VIP,這樣就會發生兩次切換對業務繁忙的網站來說是不好的。所以我們要在配置檔案加入 nopreempt 非搶佔,但是這個引數只能用於state 為backup,故我們在用HA的時候最好master 和backup的state都設定成backup 讓其通過priority來競爭master狀態
advert_int:MASTER與BACKUP同步檢查的時間間隔
virtual_ipaddress:虛擬ip,需要向技管中心申請
最後是keepalived指令碼
主從伺服器都需要編寫以下負責運作的關鍵指令碼:
在這裡插入圖片描述
在這裡插入圖片描述
當進入Master狀態時會呼叫notify_master
當進入Backup狀態時會呼叫notify_backup
當發現異常情況時進入Fault狀態呼叫notify_fault
當Keepalived程式終止時則呼叫notify_stop
usr/local/keepalived/:makdir shell
usr/local/keepalived/shell:touch redis_check.sh

給指令碼增加許可權:
sudo chmod +x /usr/local/keepalived/shell/*.sh
指令碼附錄及詳解參考:
https://www.cnblogs.com/zs-wei/p/10905730.html

Redis主備模式搭建:

1、下載相應的安裝包與生產對應(redis-3.0.6)
tar -xvf redis-3.0.6
cd redis-3.0.6
make && make install
2、編輯配置檔案
Vi /usr/local/redis/redis.conf
在這裡插入圖片描述
找到這一行,如果沒有注掉的話將其注掉
在這裡插入圖片描述
將這個從no改為yes,使redis客戶端可以後臺啟動
3、測試是否安裝成功
首先啟動:進入src路徑執行:./redis-server /usr/local/redis/redis.conf
開啟客戶端,同路徑執行:./redis-cli
4、主從配置,兩臺機器同樣按照之前的步驟進行安裝
5、從節點配置redis.conf檔案:
新增一行配置“slaveof 192.168.0.101 6379”對映到主節點
6、從節點檢視redis.conf
找到masterruth 把主機的密碼寫上,不然連不通
7、./redis-cli
8、通過info命令檢視是否有主從節點資訊,並在主節點發送資料,在從節點看是否可以接收
搭配keepalived的話不需要主從設定,keepalived能夠完成主備模式的切換。
測試是否搭建成功:
1、啟動
注意:啟動是有先後順序:先要啟動redis的主從,再啟動keepalived 的主,最後再啟動keepalived的從。
此時通過ip a命令可以看到虛擬IP在主機上
2、關掉主機的keepalived,檢查從機的ip,發現虛擬ip飄到了從機上
3、恢復主機keepalived,虛擬ip仍然在從機上
4、關掉從機的keepalived,ip飄到了主機
5、恢復從機keepalived,ip仍然在主機

遇到問題分析:

1、虛擬ip需要申請,和主從兩臺機器同網段
2、網絡卡要選擇正確,對應主從所在的網段
3、通過檢視/var/log/message日誌檔案,發現備機反覆刷出此問題,
初步定為指令碼問題,後通過內控臺測試排除。
檢查配置檔案,通 過反覆檢查,排除配置問題。
交換兩臺主備次序,發現備機正常,主機開始出現此問題,因此問題定位為伺服器網絡卡的問題,最終將出現問題的機器更換,採用同樣的配置,測試成功。
在這裡插入圖片描述