天天看點

基于哨兵(Sentinel)模式搭建Redis叢集搭建

這篇文章主要是想把自己搭建Redis哨兵模式叢集的過程記下來,友善後面搭建的重複性工作。

首先一點,學習任何知識都要學會看官網,是以,可以參考官網進行配置。我為了省事兒,參照了公司的規範來搭建的。官網位址: https://redis.io/

有個官方下載下傳位址,可以直接下載下傳各個版本的Redis: http://download.redis.io/releases/

因為在Linux環境搭建,我為了省事兒,直接采寫成腳本一起執行的,安裝包就直接在Linux中進行下載下傳的,如果下載下傳不了,可以提前下載下傳好。我選擇redis3.2.8版本進行安裝。

我安裝的叢集有三台機器,設定一主兩備三哨兵。

一、首先進行Redis本身的搭建、運作:

直接運作以下腳本建立目錄并安裝。

#建立redis臨時目錄
mkdir /app/tmp
cd /app/tmp/
chmod -R 777 /app
wget http://download.redis.io/releases/redis-3.2.8.tar.gz
tar -zxvf redis-3.2.8.tar.gz
cd /app/tmp/redis-3.2.8

# 安裝redis
make PREFIX=/app/redis install

# 建立redis各檔案目錄
mkdir -p /app/redis/conf 
mkdir -p /app/redis/data 
mkdir -p /app/redis/run 
mkdir -p /app/redis/log 
mkdir –p /app/redis/sentinel
mkdir -p /app/redis/scripts
# 建立資料目錄
cd /app/redis/data
mkdir REDIS_CLUSTER_SVR_03
# 建立配置檔案
cd /app/redis/conf
touch REDIS_CLUSTER_SVR_03.conf           

對配置檔案進行修改,指令:vi REDIS_CLUSTER_SVR_03.conf

将如下内容儲存到 REDIS_CLUSTER_SVR_03.conf,對日志等檔案/目錄進行修改,并設定密碼

daemonize yes
# 配置redis是否以daemon方式運作
pidfile /app/redis/run/REDIS_CLUSTER_SVR_03.pid
# 指定redis運作時的PID檔案
port 8080
# 服務端口
tcp-backlog 511
# 設定tcp-backlog的大小
bind 10.202.107.161
# 指定redis的服務IP
timeout 180
# 用戶端空閑多少秒後關閉連接配接
tcp-keepalive 60
# 指定向用戶端發送"ACKs"指令的時間間隔,推薦值為60s
loglevel notice
# 設定日志級别
logfile "/app/redis/log/REDIS_CLUSTER_SVR_03.log"
# 指定日志檔案
databases 16
# 設定資料庫個數,預設為16個
save 900 1
save 300 10
save 60 100
# 設定redis資料寫入RDB資料檔案的政策
stop-writes-on-bgsave-error yes
# 在使用RDB快照情況下,當儲存失敗後,是否允許使用者執行寫入操作
rdbcompression yes
# 在導出RDB資料檔案時,是否進行壓縮處理
rdbchecksum yes
# 導出RDB資料檔案時後,是否執行校驗
dbfilename REDIS_CLUSTER_SVR_03.rdb
# RDB資料庫檔案的本地檔案名
dir /app/redis/data/REDIS_CLUSTER_SVR_03
# RDB資料庫檔案的存放目錄
slave-serve-stale-data yes
# 在master/slave之間的連接配接中斷,或slave正在從master節點同步資料時,是否響應client的請求
# yes,響應client的請求
slave-read-only yes
# 設定slave節點隻讀模式
repl-diskless-sync no
repl-diskless-sync-delay 5
repl-disable-tcp-nodelay no
# repl-diskless-sync特性還處于實驗階段,設定為”no”,将此特性關閉
slave-priority 100
Requirepass "xxx.123456"
# 設定master節點的密碼,用于master節點
#masterauth "xxx.123456"
# 指定主節點的密碼,用于slave節點
maxclients 1000
# 設定最大連接配接數
maxmemory 512mb
# 設定redis的最大記憶體
maxmemory-policy volatile-lru
# 當redis使用的記憶體達到maxmemory時,使用哪種删除政策清理記憶體
maxmemory-samples 3
# 執行maxmemory-policy時對N個Key進行檢查
appendonly yes
# 是否啟用Append Only Mode
appendfilename "REDIS_CLUSTER_SVR_03.aof"
# Append Only File的檔案名
appendfsync everysec
# 設定AOF模式同步資料到磁盤方式
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
aof-load-truncated yes
lua-time-limit 5000
# 每次執行LUA SCRIPTING的最長時間
slowlog-log-slower-than 10000
# 記錄執行時長超過10000 microseconds的指令
slowlog-max-len 128
# slowlog的長度
latency-monitor-threshold 0
# 設定latency monitor執行的間隔,"0"為關閉引功能
notify-keyspace-events ""
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
list-max-ziplist-entries 512
list-max-ziplist-value 64
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
hll-sparse-max-bytes 3000
activerehashing yes
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit slave 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
hz 10
aof-rewrite-incremental-fsync yes
           

然後啟動redis,檢視運作。

#啟動redis
/app/redis/bin/redis-server /app/redis/conf/REDIS_CLUSTER_SVR_03.conf 
# 檢視運作進城
ps -ef|grep redis           

對另外兩台進行相似的配置,然後啟動,至此三台單節點redis搭建完成

二、設定主備

在其中兩台機器的配置檔案中添加: slaveof masterIp port 即可

三、配置哨兵

建立如下目錄和檔案

cd /app/redis/conf
mkdir /app/redis/sentinel/REDIS_CLUSTER_SEN_01
touch REDIS_CLUSTER_SEN_01.conf           

修改sentinel配置檔案: vi REDIS_CLUSTER_SEN_01.conf

對配置檔案中添加如下配置:

daemonize yes
port 8001
bind 10.202.105.68
#目前節點IP
sentinel announce-ip "10.202.105.68"
dir "/app/redis/sentinel/REDIS_CLUSTER_SEN_01"
pidfile "/app/redis/run/REDIS_CLUSTER_SEN_01.pid"
loglevel notice
logfile "/app/redis/log/REDIS_CLUSTER_SEN_01.log"
#sentinel monitor 叢集名 主節點IP 主節點port slave數量
sentinel monitor REDIS_CLUSTER 10.202.105.68 8080 2
sentinel failover-timeout REDIS_CLUSTER 60000
sentinel auth-pass REDIS_CLUSTER admin.123
sentinel config-epoch REDIS_CLUSTER 0
sentinel leader-epoch REDIS_CLUSTER 0           

啟動sentinel,并檢視哨兵程序:

/app/redis/bin/redis-sentinel /app/redis/conf/REDIS_CLUSTER_SEN_01.conf 
ps -ef|grep redis           

對另外兩個節點進行相似的配置并啟動

至此,sentinel模式的redis高可用叢集搭建完成。