国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
Redis雙機(jī)熱備方案

http://luyx30.blog.51cto.com/1029851/1350832

參考資料:

 

http://patrick-tang.blogspot.com/2012/06/redis-keepalived-failover-system.html

http://deidara.blog.51cto.com/400447/302402

http://my.oschina.net/guol/blog/182491

http://shiguanghui.iteye.com/blog/2001499

 

背景

 

目前,Redis集群的官方方案還處在開發(fā)測試中,未集成到穩(wěn)定版中。且目前官方開發(fā)中的Redis Cluster提供的功能尚不完善(可參考官方網(wǎng)站或http://www.redisdoc.com/en/latest/topic/cluster-spec.html),在生產(chǎn)環(huán)境中不推薦使用。通過調(diào)研發(fā)現(xiàn)市面上要實(shí)現(xiàn)采用單一的IP來訪問,大多采用keepalived實(shí)現(xiàn)redis的雙機(jī)熱備作為過渡方案。

 

環(huán)境部署

 

環(huán)境介紹:    
Master: 192.168.1.218     redis,keepalived     
Slave: 192.168.1.219        redis,keepalived     
Virtural IP Address (VIP):  192.168.1.220

 

設(shè)計(jì)思路:

兩個(gè)redis server主從備份。提供redis 服務(wù)高可用;兩個(gè)keepalived 服務(wù)主從備份,提供VIP 服務(wù)的高可用。

1)每臺(tái)redis server分別有主,從兩個(gè)配置文件(redis_master.conf, redis_slave.conf),通過啟動(dòng)腳本啟動(dòng)服務(wù),啟動(dòng)腳本會(huì)檢測這個(gè)redis集群中的其他服務(wù)器的角色,如果有master 服務(wù)存在,則以slave角色啟動(dòng),否則將自己以master服務(wù)器啟動(dòng);

2) keepalived 監(jiān)控腳本,定時(shí)(頻率:每秒一次)檢測當(dāng)前服務(wù)器是否獲取集群VIP,如果獲取集群VIP,則將本服務(wù)器上的redis服務(wù)器設(shè)置為master。同時(shí)將遠(yuǎn)端的其他redis服務(wù)器設(shè)置為slave;保證獲取集群VIP的redis 服務(wù)器角色為master,其他的設(shè)置為slave。

3) keepalived 監(jiān)控腳本,還會(huì)自動(dòng)檢測當(dāng)前redis服務(wù)器是否正常,如果連續(xù)兩次檢測異常,則停掉本本機(jī)的keepalived服務(wù),釋放集群VIP,讓去漂移到其他可以提供redis 服務(wù)的服務(wù)器上;

4)當(dāng) Master 與 Slave 均運(yùn)作正常時(shí), Master負(fù)責(zé)服務(wù),Slave負(fù)責(zé)同步數(shù)據(jù);當(dāng) Master 掛掉,Slave 正常時(shí), Slave接管服務(wù),同時(shí)關(guān)閉主從復(fù)制功能;當(dāng) Master 恢復(fù)正常,則從Slave同步數(shù)據(jù),同步數(shù)據(jù)之后關(guān)閉主從復(fù)制功能,恢復(fù)Master身份,于此同時(shí)Slave等待Master同步數(shù)據(jù)完成之后,恢復(fù)Slave身份。然后依次循環(huán)。

 

實(shí)施步驟:

----創(chuàng)建專用用戶

useradd -g develop redisadmin    
echo Hisun@1125|passwd --stdin redisadmin

說明:以下部署過程都是在root(或具備sudo權(quán)限的賬號(hào))賬戶下進(jìn)行。

----安裝配置redis

1.下載redis源碼

cd

wget http://download.redis.io/releases/redis-2.8.3.tar.gz

2.安裝redis

tar -zxvf redis-2.8.3.tar.gz

cd redis-2.8.3

#reds的安裝可以不用執(zhí)行configure

make

#測試

make test

####在速度較慢的機(jī)器上執(zhí)行make test可能出現(xiàn)下列錯(cuò)誤,無影響

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

3.配置redis

#創(chuàng)建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/

#創(chuàng)建redis啟動(dòng)腳本

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

####以下為master上的配置,slave上的配置只需要修改對(duì)應(yīng)的LOCALIP和REMOTEIP即可。

#!/bin/bashREDISPATH=/usr/local/redis-2.8.3REDISCLI=$REDISPATH/bin/redis-cliLOGFILE=$REDISPATH/logs/redis-state.logLOCALIP=192.168.1.218REMOTEIP=192.168.1.219REMOTEREDISROLE=`$REDISCLI -h $REMOTEIP info | grep "role"`if grep "role:master" <<< $REMOTEREDISROLE ; then        #start as slave        $REDISPATH/bin/redis-server $REDISPATH/conf/redis_slave.confif [ "$?" == "0" ];then                echo "[INFO]`date +%F/%H:%M:%S` :$LOCALIP start as slave successful." >> $LOGFILEelseecho "[ERROR]`date +%F/%H:%M:%S` :$LOCALIP start as slave error." >> $LOGFILE        fielse#start as master        $REDISPATH/bin/redis-server $REDISPATH/conf/redis_master.confif [ "$?" == "0" ];then                echo "[INFO]`date +%F/%H:%M:%S` :$LOCALIP start as master successful." >> $LOGFILEelseecho "[ERROR]`date +%F/%H:%M:%S` :$LOCALIP start as master error." >> $LOGFILE        fifi
#創(chuàng)建redis關(guān)閉腳本
vi /usr/local/redis-2.8.3/redis-stop.sh
####以下為master上的配置,slave上的配置相同。
#!/bin/bashREDISPATH=/usr/local/redis-2.8.3LOGFILE=$REDISPATH/logs/redis-state.logkill -9 `ps -ef|grep '/bin/redis-server'|grep -v grep|awk  '{print $2}'`if [ "$?" == "0" ];then        echo "[INFO]`date +%F/%H:%M:%S` :redis shutdown completed!" >> $LOGFILEelseecho "[ERROR]`date +%F/%H:%M:%S` :redis is not started." >> $LOGFILEfi


#創(chuàng)建redis配置文件
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對(duì)應(yīng)配置項(xiàng):
####192.168.1.218主服務(wù)器redis_master.conf對(duì)應(yīng)配置項(xiàng)#######daemonize nodaemonize yes#bind 127.0.0.1bind 192.168.1.218logfile "/usr/local/redis-2.8.3/logs/redis.log"#其他配置依據(jù)實(shí)際生產(chǎn)環(huán)境修改############################################################192.168.1.219從服務(wù)器redis_master.conf對(duì)應(yīng)配置項(xiàng)#######daemonize nodaemonize yes#bind 127.0.0.1bind 192.168.1.219logfile "/usr/local/redis-2.8.3/logs/redis.log"#其他配置依據(jù)實(shí)際生產(chǎn)環(huán)境修改########################################################
#修改redis_slave.conf對(duì)應(yīng)配置項(xiàng):
####192.168.1.218主服務(wù)器redis_slave.conf對(duì)應(yīng)配置項(xiàng)########daemonize nodaemonize yes#bind 127.0.0.1bind 192.168.1.218logfile "/usr/local/redis-2.8.3/logs/redis.log"# slaveof <masterip> <masterport>slaveof 192.168.1.219 6379#其他配置依據(jù)實(shí)際生產(chǎn)環(huán)境修改############################################################192.168.1.219從服務(wù)器redis_slave.conf對(duì)應(yīng)配置項(xiàng)########daemonize nodaemonize yes#bind 127.0.0.1bind 192.168.1.219logfile "/usr/local/redis-2.8.3/logs/redis.log"# slaveof <masterip> <masterport>slaveof 192.168.1.218 6379#其他配置依據(jù)實(shí)際生產(chǎn)環(huán)境修改########################################################

#修改redis的屬主和權(quán)限

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

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

----安裝配置keepalived   

1.下載keepalived源碼Release 1.2.9

注意:最新版為1.2.10測試過程中出錯(cuò).   
wget http://www.keepalived.org/software/keepalived-1.2.9.tar.gz
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上創(chuàng)建如下配置文件(可根據(jù)實(shí)際情況調(diào)整):

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

vrrp_script chk_redis {        script "/usr/local/keepalived/etc/keepalived/scripts/chk_redis.sh"   ###監(jiān)控腳本        interval 2                                        ###監(jiān)控時(shí)間}vrrp_instance VI_1 {        state MASTER                            ###設(shè)置為MASTER        interface eth3                          ###監(jiān)控網(wǎng)卡,依據(jù)實(shí)際情況來定          virtual_router_id 51        priority 101                            ###權(quán)重值        advert_int 1         authentication {                     auth_type PASS             ###加密                     auth_pass redis            ###密碼        }        track_script {                chk_redis                       ###執(zhí)行上面定義的chk_redis        }        virtual_ipaddress {             192.168.1.220                         ###VIP        }}

在Master和Slave上創(chuàng)建監(jiān)控Redis的腳本   
mkdir /usr/local/keepalived/etc/keepalived/scripts   
vi /usr/local/keepalived/etc/keepalived/scripts/chk_redis.sh

####以下為master上的配置,slave上的配置只需要修改對(duì)應(yīng)的LOCALIP和REMOTEIP即可。

#!/bin/bashREDISPATH=/usr/local/redis-2.8.3REDISCLI=$REDISPATH/bin/redis-cliLOGFILE=$REDISPATH/logs/redis-state.logLOCALIP=192.168.1.218REMOTEIP=192.168.1.219VIP=192.168.1.220VIPALIVE=`ip a | grep "$VIP"`if [ "$VIPALIVE" == "" ]; then	echo "[info]:"`date`" keepalived server is pengding or stop" >> $LOGFILEelse	echo "bbb" >> $LOGFILE	#check local service is running	if [ "`$REDISCLI –h $LOCALIP –p 6379 PING`" == "PONG" ]; then		# check local redis server role.		REDISROLE=`$REDISCLI info | grep "role"`		if grep "role:slave" <<< $REDISROLE ; then			#change local redis server as master 			echo "[info1]:"`date`" Run SLAVEOF NO ONE cmd ..." >> $LOGFILE			$REDISCLI SLAVEOF NO ONE >> $LOGFILE 2>&1			#change remoting redis server as slave			REMOTEREDISROLE=`$REDISCLI -h $REMOTEIP info | grep "role"`			if grep "role:master" <<< $REMOTEREDISROLE ; then				echo "[info2]:"`date`" Run remote server SLAVEOF cmd ..." >> $LOGFILE				$REDISCLI -h $REMOTEIP SLAVEOF $LOCALIP 6379 >> $LOGFILE  2>&1			fi		else			REMOTEREDISROLE=`$REDISCLI -h $REMOTEIP info | grep "role"`			if grep "role:master" <<< $REMOTEREDISROLE ; then				echo "[info3]:"`date`" Run remote server SLAVEOF cmd ..." >> $LOGFILE				$REDISCLI -h $REMOTEIP SLAVEOF $LOCALIP 6379 >> $LOGFILE  2>&1			fi		fi		else		echo "[warn]:"`date`"  redis server($LOCALIP) is not health..." >> $LOGFILE		sleep 1		if [ "`$REDISCLI –h $LOCALIP –p 6379 PING`" != "PONG" ]; then			echo "[error]:"`date`"  redis server($LOCALIP) will be stop..." >> $LOGFILE			service keepalived stop		fi	fifi
重要:將相應(yīng)的配置文件放到相應(yīng)的地方.

#首先在2臺(tái)服務(wù)器上設(shè)置keepalived的啟動(dòng)文件:

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臺(tái)服務(wù)器上創(chuàng)建配置文件的鏈接:

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

 

系統(tǒng)測試

 

 

 

注意:一定要先啟動(dòng)redis,再啟動(dòng)keealived,否則redis_check.sh會(huì)將keepalived自動(dòng)關(guān)閉。

腳本創(chuàng)建完成以后,我們開始按照如下流程進(jìn)行測試:   
1.啟動(dòng)Master上的Redis   
/usr/local/redis-2.8.3/redis-start.sh

#關(guān)閉時(shí),直接殺死進(jìn)程或執(zhí)行以下腳本

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

2.啟動(dòng)Slave上的Redis   
/usr/local/redis-2.8.3/redis-start.sh

#關(guān)閉時(shí),直接殺死進(jìn)程或執(zhí)行以下腳本

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

3.啟動(dòng)Master上的Keepalived   
/etc/rc.d/init.d/keepalived start

#關(guān)閉方法

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

4.啟動(dòng)Slave上的Keepalived   
/etc/rc.d/init.d/keepalived start

#關(guān)閉方法

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

 

繼續(xù)優(yōu)化中,未完結(jié)。

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Redis集群生產(chǎn)環(huán)境高可用方案實(shí)戰(zhàn)過程
Redis+Keepalived高可用方案詳細(xì)分析(轉(zhuǎn))
讀寫分離+HA(mysql proxy+keepalived+mysql mmm)
高可用的Mysql雙機(jī)熱備(Mysql_HA)
keepalived 實(shí)現(xiàn)mysql-ha轉(zhuǎn)
MySQL 高可用性之 Keepalived 雙主熱備
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服