Redis主從復制及sentinel配置

1.環(huán)境說明

系統(tǒng):CentOS-7-x86_64
ip:192.168.18.236
REDIS_HOME:/opt/redis-4.0.1
redis節(jié)點:
    192.168.18.236:6379 master
    192.168.18.236:6380 slave
    192.168.18.236:6381 slave

2.修改配置

cd /opt/redis-4.0.1
cp redis.conf redis_6380.conf
cp redis.conf redis_6381.conf

#修改port、pidfile、slaveof
vi redis_6380.conf
    port 6380
    pidfile /var/run/redis_6380.pid
    slaveof 127.0.0.1 6379

vi redis_6381.conf
    port 6381
    pidfile /var/run/redis_6381.pid
    slaveof 127.0.0.1 6379

3.啟動測試

cd /opt/redis-4.0.1

#啟動master和2個slave
./src/redis-server redis.conf 
./src/redis-server redis_6380.conf 
./src/redis-server redis_6381.conf 

#打開3個shell窗口突那,登錄3個客戶端
./src/redis-cli -p 6379
./src/redis-cli -p 6380
./src/redis-cli -p 6381

#查看6379復制系統(tǒng)中的信息
127.0.0.1:6379> INFO replication
    # Replication
    role:master
    connected_slaves:2
    slave0:ip=127.0.0.1,port=6380,state=online,offset=1246,lag=1
    slave1:ip=127.0.0.1,port=6381,state=online,offset=1246,lag=1
    master_replid:8bb4c076d0ce5179282dac083bf526173d8ef33b
    master_replid2:0000000000000000000000000000000000000000
    master_repl_offset:1246
    second_repl_offset:-1
    repl_backlog_active:1
    repl_backlog_size:1048576
    repl_backlog_first_byte_offset:1
    repl_backlog_histlen:1246

#查看6380復制系統(tǒng)中的信息
127.0.0.1:6380> INFO replication
    # Replication
    role:slave
    master_host:127.0.0.1
    master_port:6379
    master_link_status:up
    master_last_io_seconds_ago:3
    master_sync_in_progress:0
    slave_repl_offset:1442
    slave_priority:100
    slave_read_only:1
    connected_slaves:0
    master_replid:8bb4c076d0ce5179282dac083bf526173d8ef33b
    master_replid2:0000000000000000000000000000000000000000
    master_repl_offset:1442
    second_repl_offset:-1
    repl_backlog_active:1
    repl_backlog_size:1048576
    repl_backlog_first_byte_offset:1
    repl_backlog_histlen:1442

4.sentinel配置

sentinel介紹

  1. Redis-Sentinel是Redis官方推薦的高可用性(HA)解決方案

  2. 當用Redis做Master-slave的高可用方案時雀久,假如master宕機了,Redis本身(包括它的很多客戶端)都沒有實現(xiàn)自動進行主備切換

  3. 而Redis-sentinel本身也是一個獨立運行的進程,它能監(jiān)控多個master-slave集群嵌洼,發(fā)現(xiàn)master宕機后能進行自懂切換案疲。
    它的主要功能有以下幾點:

    • 不時地監(jiān)控redis是否按照預期良好地運行;
    • 如果發(fā)現(xiàn)某個redis節(jié)點運行出現(xiàn)狀況,能夠通知另外一個進程(例如它的客戶端);
    • 能夠進行自動切換麻养。當一個master節(jié)點不可用時褐啡,能夠選舉出master的多個slave(如果有超過一個slave的話)中的一個來作為新的master,其它的slave節(jié)點會將它所追隨的master的地址改為被提升為master的slave的新地址。
  4. Sentinel支持集群
    很顯然鳖昌,只使用單個sentinel進程來監(jiān)控redis集群是不可靠的备畦,當sentinel進程宕掉后(sentinel本身也有單點問題,single-point-of-failure)整個集群系統(tǒng)將無法按照預期的方式運行许昨。所以有必要將sentinel集群

搭建2個sentinel節(jié)點

cd /opt/redis-4.0.1

cp sentinel.conf  sentinel_26380.conf 
vi sentinel.conf
    #后端啟動   
    daemonize yes
    logfile "/var/log/sentinel.log"
    sentinel monitor mymaster 127.0.0.1 6379 2
vi sentinel_26380.conf
    port 26380
    #后端啟動
    daemonize yes
    logfile "/var/log/sentinel_26380.log"
    sentinel monitor mymaster 127.0.0.1 6379 2

#啟動兩個sentinel服務
./src/redis-sentinel  sentinel.conf 
./src/redis-sentinel  sentinel_26380.conf 

5.測試sentinel

1).把6379 master節(jié)點關(guān)閉

ps aux | grep redis-server
#把6379的服務kill掉
kill -9 3584

2).查看sentinel log

cat /var/log/sentinel.log 
    4323:X 21 Sep 10:15:57.638 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
    4323:X 21 Sep 10:15:57.638 # Redis version=4.0.1, bits=64, commit=00000000, modified=0, pid=4323, just started
    4323:X 21 Sep 10:15:57.638 # Configuration loaded
    4324:X 21 Sep 10:15:57.641 * Increased maximum number of open files to 10032 (it was originally set to 1024).
    4324:X 21 Sep 10:15:57.643 * Running mode=sentinel, port=26379.
    4324:X 21 Sep 10:15:57.643 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
    4324:X 21 Sep 10:15:57.643 # Sentinel ID is 8ad4ea46a01c2176d7665b64fad69e08080bf9a8
    4324:X 21 Sep 10:15:57.643 # +monitor master mymaster 127.0.0.1 6379 quorum 2
    4324:X 21 Sep 10:16:05.756 * +sentinel sentinel 1e3e9ae7f00507f5153ee3cef0ba2dc2a97c2ff1 127.0.0.1 26380 @ mymaster 127.0.0.1 6379
    4324:X 21 Sep 10:18:56.619 # +sdown master mymaster 127.0.0.1 6379
    4324:X 21 Sep 10:18:56.753 # +new-epoch 1
    4324:X 21 Sep 10:18:56.754 # +vote-for-leader 1e3e9ae7f00507f5153ee3cef0ba2dc2a97c2ff1 1
    4324:X 21 Sep 10:18:57.189 # +config-update-from sentinel 1e3e9ae7f00507f5153ee3cef0ba2dc2a97c2ff1 127.0.0.1 26380 @ mymaster 127.0.0.1 6379
    4324:X 21 Sep 10:18:57.189 # +switch-master mymaster 127.0.0.1 6379 127.0.0.1 6381
    4324:X 21 Sep 10:18:57.189 * +slave slave 127.0.0.1:6380 127.0.0.1 6380 @ mymaster 127.0.0.1 6381
    4324:X 21 Sep 10:18:57.189 * +slave slave 127.0.0.1:6379 127.0.0.1 6379 @ mymaster 127.0.0.1 6381
    4324:X 21 Sep 10:19:27.248 # +sdown slave 127.0.0.1:6379 127.0.0.1 6379 @ mymaster 127.0.0.1 6381

發(fā)現(xiàn)自動將master切換到6381上

3).cat sentinel.conf

#發(fā)現(xiàn)自動改為6381
sentinel monitor mymaster 127.0.0.1 6381 2

4).登錄6381客戶端,查看是否為master

./src/redis-cli -p 6381
#查看復制系統(tǒng)信息萍恕,role已經(jīng)改為master
127.0.0.1:6381> INFO replication
    # Replication
    role:master
    connected_slaves:1
    slave0:ip=127.0.0.1,port=6380,state=online,offset=52458,lag=0
    master_replid:9d438d265f580c023e1b08e73f0ea5edda5b8a8f
    master_replid2:0000000000000000000000000000000000000000
    master_repl_offset:52591
    second_repl_offset:-1
    repl_backlog_active:1
    repl_backlog_size:1048576
    repl_backlog_first_byte_offset:25409
    repl_backlog_histlen:27183

5).再重新啟動6379節(jié)點

./src/redis-server redis.conf
./src/redis-cli -p 6379
#發(fā)現(xiàn)role為slave
127.0.0.1:6379> INFO replication
    # Replication
    role:slave
    master_host:127.0.0.1
    master_port:6381
    master_link_status:up
    master_last_io_seconds_ago:0
    master_sync_in_progress:0
    slave_repl_offset:83939
    slave_priority:100
    slave_read_only:1
    connected_slaves:0
    master_replid:9d438d265f580c023e1b08e73f0ea5edda5b8a8f
    master_replid2:0000000000000000000000000000000000000000
    master_repl_offset:83939
    second_repl_offset:-1
    repl_backlog_active:1
    repl_backlog_size:1048576
    repl_backlog_first_byte_offset:77064
    repl_backlog_histlen:6876
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市车要,隨后出現(xiàn)的幾起案子允粤,更是在濱河造成了極大的恐慌,老刑警劉巖翼岁,帶你破解...
    沈念sama閱讀 218,640評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件类垫,死亡現(xiàn)場離奇詭異,居然都是意外死亡琅坡,警方通過查閱死者的電腦和手機悉患,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,254評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來榆俺,“玉大人售躁,你說我怎么就攤上這事≤罱” “怎么了陪捷?”我有些...
    開封第一講書人閱讀 165,011評論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長诺擅。 經(jīng)常有香客問我市袖,道長,這世上最難降的妖魔是什么烁涌? 我笑而不...
    開封第一講書人閱讀 58,755評論 1 294
  • 正文 為了忘掉前任苍碟,我火速辦了婚禮,結(jié)果婚禮上撮执,老公的妹妹穿的比我還像新娘微峰。我一直安慰自己,他們只是感情好抒钱,可當我...
    茶點故事閱讀 67,774評論 6 392
  • 文/花漫 我一把揭開白布蜓肆。 她就那樣靜靜地躺著掂榔,像睡著了一般。 火紅的嫁衣襯著肌膚如雪症杏。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,610評論 1 305
  • 那天瑞信,我揣著相機與錄音厉颤,去河邊找鬼。 笑死凡简,一個胖子當著我的面吹牛逼友,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播秤涩,決...
    沈念sama閱讀 40,352評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼帜乞,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了筐眷?” 一聲冷哼從身側(cè)響起黎烈,我...
    開封第一講書人閱讀 39,257評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎匀谣,沒想到半個月后照棋,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,717評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡武翎,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,894評論 3 336
  • 正文 我和宋清朗相戀三年烈炭,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片宝恶。...
    茶點故事閱讀 40,021評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡符隙,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出垫毙,到底是詐尸還是另有隱情霹疫,我是刑警寧澤,帶...
    沈念sama閱讀 35,735評論 5 346
  • 正文 年R本政府宣布综芥,位于F島的核電站更米,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏毫痕。R本人自食惡果不足惜征峦,卻給世界環(huán)境...
    茶點故事閱讀 41,354評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望消请。 院中可真熱鬧栏笆,春花似錦、人聲如沸臊泰。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,936評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至针饥,卻和暖如春厂抽,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背丁眼。 一陣腳步聲響...
    開封第一講書人閱讀 33,054評論 1 270
  • 我被黑心中介騙來泰國打工筷凤, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人苞七。 一個月前我還...
    沈念sama閱讀 48,224評論 3 371
  • 正文 我出身青樓藐守,卻偏偏與公主長得像,于是被迫代替她去往敵國和親蹂风。 傳聞我的和親對象是個殘疾皇子卢厂,可洞房花燭夜當晚...
    茶點故事閱讀 44,974評論 2 355

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