使用 redis-sentinel 實現(xiàn) Redis 高可用集群

一谈为、redis 和 redis-sentinel 啟動時配置目錄權(quán)限的配置問題(redis采用yum安裝亡驰,不要用root用戶運(yùn)行redis)

  • PID文件放置目錄的權(quán)限(/var/run/redis/)權(quán)限改為屬主屬組都是redis
  • /etc/redis-sentinel.conf:屬主屬組都改為redis背率,因為redis-sentinel服務(wù)啟動后需要修改這個配置文件细层,沒權(quán)限的話服務(wù)啟動不了献雅。

二谤绳、架構(gòu)及redis主從配置說明

master:192.168.11.10:6379
slave1:192.168.11.12:6379
slave2:192.168.11.13:6379

# redis.conf
bind 0.0.0.0
protected-mode yes
port 6379
daemonize yes
pidfile /var/run/redis/redis.pid
logfile /var/log/redis/redis.log
stop-writes-on-bgsave-error yes
rdbcompression yes #是否壓縮持久化文件
rdbchecksum no #是否進(jìn)行文件md5檢測
dbfilename dump.rdb
dir /var/lib/redis
slave-serve-stale-data yes
slave-read-only yes
requirepass redis_pass
appendonly yes             #該選項要打開占锯,RDB模式服務(wù)器異常時可能會丟失部分?jǐn)?shù)據(jù)袒哥,涉及到redis的兩種持久化方式的區(qū)別,分別是RDB和AOF模式
appendfilename "appendonly.aof"
appendfsync everysec

##############################
#從服務(wù)器上加上這兩條消略,主服務(wù)器上要把masterauth加上堡称,不讓主服務(wù)器掛掉后變成從服務(wù)器再同步主服務(wù)器后會失敗
slaveof 192.168.11.10 6379
masterauth redis_pass

reids 主從做好后在主服務(wù)器上連接redis執(zhí)行 info replication 可以看到如下結(jié)果

三、redis-sentinel 配置

#三個主機(jī)的 redis-sentine.conf 配置文件基本一致
# /etc/redis-sentinel.conf

protected-mode yes # redis3.2的安全設(shè)置艺演,沒有設(shè)置密碼是禁止遠(yuǎn)程連接
port 26379
sentinel myid dc91b154679b125aecbe3b04b54882dfc76f3ff9 #本機(jī)ID却紧,每一個sentinel不要把ID設(shè)置的一樣
sentinel monitor def_master 192.168.11.10 6379 2 #告訴sentinel去監(jiān)聽的地址,'def_master' 為master的名字胎撤,可以自定義晓殊。數(shù)字2表示當(dāng)有幾個sentinel認(rèn)為master失效時,master才失效
sentinel failover-timeout def_master 900000
sentinel auth-pass def_master redis_pass #設(shè)置slave和master的鏈接密碼,主從密碼要一致
sentinel config-epoch def_master 5 #故障轉(zhuǎn)移后伤提,最多有多少個從服務(wù)器可以同步數(shù)據(jù)巫俺,越少重新同步越快
dir '/tmp'

sentinel正常啟動后連接sentinel的端口,執(zhí)行 info sentinel 會看到以下結(jié)果


主從狀況

停掉redis主服務(wù)器的服務(wù)后肿男,主服務(wù)轉(zhuǎn)到192.168.11.13這臺服務(wù)器介汹,并且192.168.11.12的同步服務(wù)器變?yōu)?92.168.11.13


再把10上的redis服務(wù)啟動,13也開始向10進(jìn)行數(shù)據(jù)同步

三舶沛、使用VIP漂移解決 redis server IP 不固定的問題

??這里可以使用redis sentinel的一個參數(shù)client-reconfig-script嘹承,這個參數(shù)配置執(zhí)行腳本,sentinel在做failover的時候會執(zhí)行這個腳本如庭,并且傳遞6個參數(shù)<master-name>叹卷、 <role>、 <state>坪它、 <from-ip>骤竹、 <from-port>、 <to-ip> 哟楷、<to-port>瘤载,其中<to-ip>是新主redis的IP地址,可以在這個腳本里做VIP漂移操作

# vi /var/lib/redis/failover.sh
#!/bin/bash
set -u
set -e

MASTER_IP=${6}
MY_IP='192.168.11.12'   # 每個Server本身的IP
VIP='192.168.11.100'     # VIP
NETMASK='24'          # Netmask
INTERFACE='eth0'      # 接口
echo $INTERFACE

if [ ${MASTER_IP} = ${MY_IP} ]; then
    sudo /sbin/ip addr add ${VIP}/${NETMASK} dev ${INTERFACE}
    sudo /sbin/arping -q -c 3 -A ${VIP} -I ${INTERFACE}
    exit 0
else
    sudo /sbin/ip addr del ${VIP}/${NETMASK} dev ${INTERFACE}
    exit 0
fi
exit 1

??賦予腳本執(zhí)行權(quán)限并且添加redis用戶對于ip卖擅,和arping命令的sudo權(quán)限

chmod 755 /var/lib/redis/failover.sh
chown redis: /var/lib/redis/failover.sh
echo -e "redis\tALL=(ALL)\tNOPASSWD:/sbin/ip,NOPASSWD:/sbin/arping" >> /etc/sudoers

??最后開啟redis-sentinel并且初次手動設(shè)置VIP。(測試后client-reconfig-script這個參數(shù)好像沒有觸發(fā)墨技,最后自己寫了個VIP漂移腳本解決了這個問題)

#########################################################################
# File Name: /var/lib/redis/failover.sh
# Author: lcs
# mail: liuchengsheng95@qq.com
# Created Time: 2018-04-07 15:38:33
#########################################################################
# 一定要用root用戶運(yùn)行
#!/bin/bash
MY_IP='192.168.11.16'   # 每個Server本身的IP
VIP='192.168.11.100'     # VIP
NETMASK='24'          # Netmask
INTERFACE='eth1'      # 接口

while true;do
    MASTER_IP=$(redis-cli -h 127.0.0.1 -p 26379 info sentinel | grep address | cut -d, -f3 | cut -d= -f2 | cut -d: -f1)
    if [ ${MASTER_IP} = ${MY_IP} ]; then
        ip -4 addr | grep $VIP || (/sbin/ip addr add ${VIP}/${NETMASK} dev ${INTERFACE};/sbin/arping -q -c 3 -A ${VIP} -I ${INTERFACE})
    else
        ip -4 addr | grep $VIP && /sbin/ip addr del ${VIP}/${NETMASK} dev ${INTERFACE}
    fi
    sleep 10;
done
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末惩阶,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子扣汪,更是在濱河造成了極大的恐慌断楷,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,126評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件崭别,死亡現(xiàn)場離奇詭異冬筒,居然都是意外死亡恐锣,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評論 2 382
  • 文/潘曉璐 我一進(jìn)店門舞痰,熙熙樓的掌柜王于貴愁眉苦臉地迎上來土榴,“玉大人,你說我怎么就攤上這事响牛$枨荩” “怎么了?”我有些...
    開封第一講書人閱讀 152,445評論 0 341
  • 文/不壞的土叔 我叫張陵呀打,是天一觀的道長矢赁。 經(jīng)常有香客問我,道長贬丛,這世上最難降的妖魔是什么撩银? 我笑而不...
    開封第一講書人閱讀 55,185評論 1 278
  • 正文 為了忘掉前任,我火速辦了婚禮豺憔,結(jié)果婚禮上蜒蕾,老公的妹妹穿的比我還像新娘。我一直安慰自己焕阿,他們只是感情好咪啡,可當(dāng)我...
    茶點故事閱讀 64,178評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著暮屡,像睡著了一般撤摸。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上褒纲,一...
    開封第一講書人閱讀 48,970評論 1 284
  • 那天准夷,我揣著相機(jī)與錄音,去河邊找鬼莺掠。 笑死衫嵌,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的彻秆。 我是一名探鬼主播楔绞,決...
    沈念sama閱讀 38,276評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼唇兑!你這毒婦竟也來了酒朵?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,927評論 0 259
  • 序言:老撾萬榮一對情侶失蹤扎附,失蹤者是張志新(化名)和其女友劉穎蔫耽,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體留夜,經(jīng)...
    沈念sama閱讀 43,400評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡匙铡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,883評論 2 323
  • 正文 我和宋清朗相戀三年图甜,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片鳖眼。...
    茶點故事閱讀 37,997評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡黑毅,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出具帮,到底是詐尸還是另有隱情博肋,我是刑警寧澤,帶...
    沈念sama閱讀 33,646評論 4 322
  • 正文 年R本政府宣布匪凡,位于F島的核電站,受9級特大地震影響掘猿,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜稠通,卻給世界環(huán)境...
    茶點故事閱讀 39,213評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望改橘。 院中可真熱鬧滋尉,春花似錦飞主、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽筏餐。三九已至开泽,卻和暖如春魁瞪,著一層夾襖步出監(jiān)牢的瞬間穆律,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評論 1 260
  • 我被黑心中介騙來泰國打工佩番, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留众旗,地道東北人。 一個月前我還...
    沈念sama閱讀 45,423評論 2 352
  • 正文 我出身青樓趟畏,卻偏偏與公主長得像,于是被迫代替她去往敵國和親滩租。 傳聞我的和親對象是個殘疾皇子赋秀,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,722評論 2 345

推薦閱讀更多精彩內(nèi)容

  • 前言 Redis是一個高性能的key-value數(shù)據(jù)庫利朵,現(xiàn)時越來越多企業(yè)與應(yīng)用使用Redis作為緩存服務(wù)器。樓主是...
    liangzzz閱讀 4,249評論 9 152
  • 一猎莲、單個實例 當(dāng)系統(tǒng)中只有一臺redis運(yùn)行時绍弟,一旦該redis掛了,會導(dǎo)致整個系統(tǒng)無法運(yùn)行著洼。 二樟遣、備份 由于單臺...
    zhou閱讀 22,430評論 8 102
  • 關(guān)鍵詞:redis 、 sentinel(哨兵模式)身笤、keepalived 一豹悬、Redis單實例 當(dāng)系統(tǒng)中只運(yùn)行一...
    fantasymango閱讀 4,931評論 1 25
  • 1- 水平分區(qū) VS 垂直分區(qū) 分區(qū)是分割數(shù)據(jù)到多個Redis實例的處理過程,因此每個實例只保存key的一個子集液荸。...
    zhanglbjames閱讀 3,576評論 0 3
  • 我是那種走路急匆匆的人瞻佛,所以,總有與人相撞的事出現(xiàn)娇钱。 大多時候伤柄,彼此就這么走過。有時文搂,我會說:不好意思适刀。但也僅僅是...
    張金剛閱讀 114評論 0 0