redis叢集-哨兵模式(sentinel)
哨兵模式:基于redis主從複制,增加sentinel服務用于監聽服務狀态,并在發生異常時重新選取主伺服器 使用版本,redis6.25
配置檔案
下面隻列出主要配置,需檢視詳細配置請檢視關聯項目 redis登陸密碼如配置則需要統一
master配置
requirepass 登陸密碼
# 發生故障時會重新指定主伺服器,是以需要指定密碼
masterauth 主伺服器登陸密碼
slave配置
在docker環境執行,避免重複修改配置檔案是以使用redis01(機器名),此處别名對應docker啟動時指定的别名
requirepass 登陸密碼
masterauth 主伺服器登陸密碼
# 指定主伺服器
replicaof redis01 6379
sentinel配置
mymaster 為sentinel監控的别名,
sentinel monitor mymaster redis01 6379 2
sentinel auth-pass mymaster sbsb1234
# 6.2之後才支援使用機器名預設是關閉,此處打開
SENTINEL resolve-hostnames yes
docker 啟動
結構為3個redis節點,1主2從,3個sentinel服務
準備環境
# 下載下傳redis最新鏡像
docker pull redis
#建立一個網絡使其它節點連接配接此網絡,避免通信問題
docker network create testnet
啟動redis服務
指令說明 *. -p 6380:6379 指定外内端口 *. --name redis01 指定容器名稱 *. -v /home/docker/redis/master.conf:/etc/redis/redis.conf 映射配置檔案 *. --privileged=true 提升docker容器權限避免容器中操作權限不夠 *. --network testnet 指定容器使用網絡 *. --network-alias redis01 指定網絡中機器名 *. -d redis 背景執行容器 *. redis-server /etc/redis/redis.conf 執行的cmd指令,指定配置檔案否則不會使用映射配置檔案
docker run -p 6380:6379 --name redis01 -v /home/docker/redis/master.conf:/etc/redis/redis.conf --privileged=true --network testnet --network-alias redis01 -d redis redis-server /etc/redis/redis.conf
docker run -p 6381:6379 --name redis02 -v /home/docker/redis/slave.conf:/etc/redis/redis.conf --privileged=true --network testnet --network-alias redis02 -d redis redis-server /etc/redis/redis.conf
docker run -p 6382:6379 --name redis03 -v /home/docker/redis/slave.conf:/etc/redis/redis.conf --privileged=true --network testnet --network-alias redis03 -d redis redis-server /etc/redis/redis.conf
啟動完成後可使用redis用戶端連接配接或使用指令行驗證主從是否正常
# 檢視主從配置資訊
info replication
啟動sentinel服務
指令說明 *. redis-server /etc/redis/sentinel.conf --sentinel 表示啟動sentinel服務
docker run -p 26379:26379 --name sentinel01 -v /home/docker/redis/sentinel.conf:/etc/redis/sentinel.conf --privileged=true --network testnet --network-alias sentinel01 -d redis redis-server /etc/redis/sentinel.conf --sentinel
docker run -p 26380:26379 --name sentinel02 -v /home/docker/redis/sentinel.conf:/etc/redis/sentinel.conf --privileged=true --network testnet --network-alias sentinel02 -d redis redis-server /etc/redis/sentinel.conf --sentinel
docker run -p 26381:26379 --name sentinel03 -v /home/docker/redis/sentinel.conf:/etc/redis/sentinel.conf --privileged=true --network testnet --network-alias sentinel03 -d redis redis-server /etc/redis/sentinel.conf --sentinel
啟動成功後可在主伺服器控制台輸入如下指令驗證
# 執行休眠120s的任務
DEBUG SLEEP 120s
# 再次檢視主從資訊檢視是否已一切換為從伺服器
info replication