天天看點

Redis雙機熱備方案

背景  

環境部署  

環境介紹:       

   Master: 192.168.1.218     redis,keepalived        

   Slave: 192.168.1.219        redis,keepalived        

   Virtural IP Address (VIP):  192.168.1.220

設計思路:

兩個redis server主從備份。提供redis 服務高可用;兩個keepalived 服務主從備份,提供VIP 服務的高可用。

1)每台redis server分别有主,從兩個配置檔案(redis_master.conf, redis_slave.conf),通過啟動腳本啟動服務,啟動腳本會檢測這個redis叢集中的其他伺服器的角色,如果有master 服務存在,則以slave角色啟動,否則将自己以master伺服器啟動;

2) keepalived 監控腳本,定時(頻率:每秒一次)檢測目前伺服器是否擷取叢集VIP,如果擷取叢集VIP,則将本伺服器上的redis伺服器設定為master。同時将 遠端的其他redis伺服器設定為slave;保證擷取叢集VIP的redis 伺服器角色為master,其他的設定為slave。

3) keepalived 監控腳本,還會自動檢測目前redis伺服器是否正常,如果連續兩次檢測異常,則停掉本本機的keepalived服務,釋放叢集VIP,讓去漂移到其他可以提供redis 服務的伺服器上;

4)當 Master 與 Slave 均運作正常時, Master負責服務,Slave負責同步資料;當 Master 挂掉,Slave 正常時, Slave接管服務,同時關閉主從複制功能;當 Master 恢複正常,則從Slave同步資料,同步資料之後關閉主從複制功能,恢複Master身份,于此同時Slave等待Master同步資料完成之後,恢複 Slave身份。然後依次循環。

實施步驟:

----建立專用使用者

useradd -g develop redisadmin       

   echo Hisun@1125|passwd --stdin redisadmin

說明:以下部署過程都是在root(或具備sudo權限的賬号)賬戶下進行。

----安裝配置redis

1.下載下傳redis源碼

cd

2.安裝redis

tar -zxvf redis-2.8.3.tar.gz

cd redis-2.8.3

#reds的安裝可以不用執行configure

make

#測試

make test

####在速度較慢的機器上執行make test可能出現下列錯誤,無影響

#*** [err]: Test replication partial resync: no backlog in tests/integration/replication-psync.tcl

3.配置redis

#建立redis主目錄

mkdir -p /usr/local/redis-2.8.3/{bin,conf,logs}

cp -a -R -p src/redis-server /usr/local/redis-2.8.3/bin/

cp -a -R -p src/redis-cli /usr/local/redis-2.8.3/bin/

cp -a -R -p src/redis-benchmark /usr/local/redis-2.8.3/bin/

cp -a -R -p src/redis-sentinel /usr/local/redis-2.8.3/bin/

cp -a -R -p src/redis-check-dump /usr/local/redis-2.8.3/bin/

cp -a -R -p src/redis-check-aof /usr/local/redis-2.8.3/bin/

#建立redis啟動腳本

vi /usr/local/redis-2.8.3/redis-start.sh

####以下為master上的配置,slave上的配置隻需要修改對應的LOCALIP和REMOTEIP即可。

#建立redis關閉腳本

vi /usr/local/redis-2.8.3/redis-stop.sh

####以下為master上的配置,slave上的配置相同。

cp -a -R -p redis.conf /usr/local/redis-2.8.3/conf/redis_master.conf

cp -a -R -p redis.conf /usr/local/redis-2.8.3/conf/redis_slave.conf

#修改redis_master.conf對應配置項:

#修改redis_slave.conf對應配置項:    

#修改redis的屬主和權限

chmod –R 750 /usr/local/redis-2.8.3/

chown –R redisadmin:develop /usr/local/redis-2.8.3/

----安裝配置keepalived      

注意:最新版為1.2.10測試過程中出錯.      

   2.安裝keepalived

需要安裝以下依賴包: make gcc libpopt-dev libnl-dev libcurl4-openssl-dev popt openssl      

   cd

tar –zxvf keepalived-1.2.9.tar.gz

cd keepalived-1.2.9

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

make && make install

3.配置keepalived

#在Master和Slave上建立如下配置檔案(可根據實際情況調整):

mv  /usr/local/keepalived/etc/keepalived/keepalived.conf /usr/local/keepalived/etc/keepalived/keepalived.conf-bak    

   vim /usr/local/keepalived/etc/keepalived/keepalived.conf

在Master和Slave上建立監控Redis的腳本      

   mkdir /usr/local/keepalived/etc/keepalived/scripts      

   vi /usr/local/keepalived/etc/keepalived/scripts/chk_redis.sh

         重要:          将相應的配置檔案放到相應的地方.              

#首先在2台伺服器上設定keepalived的啟動檔案:

cp -a -R -p /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/keepalived

chmod 750 /etc/rc.d/init.d/keepalived

chown root /etc/rc.d/init.d/keepalived      

     #然後在2台伺服器上建立配置檔案的連結:

mkdir /etc/keepalived/

ln -s /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf

ln -s /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/keepalived

系統測試  

注意:一定要先啟動redis,再啟動keealived,否則redis_check.sh會将keepalived自動關閉。

腳本建立完成以後,我們開始按照如下流程進行測試:    

   1.啟動Master上的Redis    

   /usr/local/redis-2.8.3/redis-start.sh

#關閉時,直接殺死程序或執行以下腳本

/usr/local/redis-2.8.3/redis-stop.sh

2.啟動Slave上的Redis    

#/usr/local/redis-2.8.3/redis-stop.sh

3.啟動Master上的Keepalived    

   /etc/rc.d/init.d/keepalived start

#關閉方法

#/etc/rc.d/init.d/keepalived stop

4.啟動Slave上的Keepalived    

本文轉自 msj0905 51CTO部落格,原文連結:http://blog.51cto.com/sky66/1691732

繼續閱讀