此次搭建redis哨兵集群 一主兩從三哨兵 redis 6.0.9版本
先將redis包準備好 在官網可以直接下載 地址:https://download.redis.io/releases/

安裝包準備好后 使用tar命令解壓 并mv到opt目錄下重命名為redis

需要注意的是redis6版本以上 gcc版本不能低于5 直接安裝會有報錯 在網上查到了一個使用scl軟體集升級的辦法
第一步 yum install centos-release-scl
第二步 yum install devtoolset-7-gcc*
第三步 scl enable devtoolset-7 bash
此時查看gcc版本 gcc -v

gcc版本問題解決 接下來繼續安裝redis

install完成后 需要編輯一下redis組態檔 修改一些配置

第一個配置bind 我是使用一臺主機部署哨兵 我就不做修改了
如果是多臺 需要將這個引數修改為主機ip 或者0.0.0.0

第二個配置protected-mode 關閉保護模式

第三個配置daemonize 后臺運行

修改完成后 cd到utils目錄下 執行腳本

此時會報這個錯誤

解決方案 vi install_server.sh 注釋掉以下幾行

重新執行 一路回車 我直接使用默認的埠6379 如要修改可以填寫你想要使用的埠

此時ps查看一下 可以看到一個redis服務已經啟動

此次我們搭建一主兩從三哨兵 所以需要再啟動兩個redis實體 作為從


此時再次ps查看 可以看到3個redis已經啟動 分別占用 我們剛剛指定的埠

接下來將三個redis建立主從關系
有兩種方法 一種連接redis服務使用命令指定 另一種修改組態檔 重啟redis服務生效
我們使用第二種
在剛剛安裝程序中 可以看到每一個redis啟動對應生成一個組態檔 我們修改這個組態檔

只需要修改兩個用作從的redis的組態檔即可 找到這個引數 指定master地址


修改完成后將兩個從redis服務(6380、6381)kill掉 重啟服務配置生效


此時 我們通過redis-cli工具進入到redis 通過命令查看一下主從關系 已建立

可以測驗一下 我們寫一個資料 然后到另外兩個redis中查看 是否同步

可以看到 寫到master里面的key值已經同步到兩個slave中 1主2從搭建完成
接下來我們開始配置哨兵
哨兵可以理解為也是一個redis 但是他的功能不太一樣
首先cd到redis的安裝目錄下 可以看到sentinel.conf 這個檔案是redis自帶的
我們要啟動三個哨兵 所以拷貝三份(只啟動一個也可以達到效果)

然后修改sentinel組態檔 拷貝的三份都要修改
第一個配置 哨兵埠 三個分別配置 26379 26380 26381

第二個配置 daemonize 我們只留一個為no 其他兩個為yes 用來稍后查看切換的日志資訊

第三個配置
mymaster代表監聽的這組redis叫mymaster
地址填寫要監聽redis的master地址是多少
2代表達到兩個法定人數認定master故障 才會進行故障切換

第四個配置 這個是配置redis的密碼 我們先前沒有配置 所以這里也不需要配置

修改完成后 啟動哨兵 先啟動后面兩個 第一個我們配置了前臺運行 用來查看哨兵日志

如圖

redis哨兵集群以及搭建完成 接下來我們驗證一下 master宕掉之后哨兵能否自動故障切換
重新打開一個終端 將master角色的redis宕掉

此時再打開哨兵日志頁面 會有一段等待時間 可以看到 哨兵檢測到master宕機 進行了選舉 6380提升為主 同時 6381 6379也指向了新的主


此時我們再將宕掉的舊主恢復6379 可以看到哨兵日志中 6379恢復 并加入哨兵集群

測驗成功 redis哨兵集群以及搭建完成
搭建三個哨兵的原因是如果哨兵也有宕掉 也不會影響 還能正常進行主從切換 除非三個都宕掉
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/299779.html
標籤:其他
