­

Redis哨兵機制的實現及與SpringBoot的整合

1. 概述

前面我們聊過Redis的讀寫分離機制,這個機制有個致命的弱點,就是主節點(Master)是個單點,如果主節點宕掉,整個Redis的寫操作就無法進行服務了。

為了解決這個問題,就需要依靠「哨兵」,今天我們就來聊聊哨兵機制如何實現,且如何與SpringBoot進行整合。

 

2. 場景描述

主服務器IP:192.168.1.144

從服務器A IP:192.168.1.22

從服務器B IP:192.168.1.8

這三台服務器上都已經安裝好了Redis環境,安裝方法參見我的另一篇文章《Redis的安裝、基本使用以及與SpringBoot的整合》。

這三台服務器也搭建好了讀寫分離(主從複製)的機制,搭建方法參見我的另一篇文章《Redis的讀寫分離》。

分別在這三台機器上,配置哨兵,實現高可用。

 注意:哨兵節點的個數一定是奇數,否則會出問題。

3. Redis哨兵機制的實現

上述的3台服務器都需要配置哨兵,配置方法相同。

3.1 進入Redis的安裝目錄

# cd /home/redis-6.2.5

 

3.2 拷貝哨兵配置文件到Redis工作目錄

# cp sentinel.conf /usr/local/redis/

 

3.3 修改哨兵配置文件

# cd /usr/local/redis/

# vim sentinel.conf

 

3.4 配置文件修改細節

 

 

sentinel monitor zhuifengren-master 192.168.1.144 6379 2

最後一個參數 2,根據哨兵的節點計算,公式為 N/2 + 1,N代表哨兵節點數量,例如:哨兵節點數量是3,則這裡設置為 2

 

 

 

 

 

 

 

 

 

 

 3.5 為哨兵創建工作目錄

# cd /usr/local/redis/

# mkdir sentinel

 

3.6 主節點的Redis配置中,增加Redis的密碼

# cd /usr/local/redis/

# vim redis.conf

 

 3.7 啟動哨兵

3台Redis服務器的哨兵配置是一樣的,配置好後,我們來啟動3台服務器上的哨兵。

# cd /usr/local/redis

# redis-sentinel sentinel.conf

 

 

此時哨兵機制就搭建完成,當Master宕掉,其中一台Slave會升級成Master處理寫服務。

 

4. 與SpringBoot整合

 在之前的基礎上修改yml文件即可

 

spring:
  redis:
    database: 1
    password: zhuifengren
    sentinel:
      master: zhuifengren-master
      nodes: 192.168.1.144:26379,192.168.1.22:26379,192.168.1.8:26379

 

5. 綜述

今天我們聊了一下Redis的哨兵機制,以及如何與SpringBoot進行整合,希望能對大家有所幫助。

希望大家多多評論交流,共同成長。

關注追風人聊Java,每天更新Java乾貨。