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乾貨。