这篇文章主要是想把自己搭建Redis哨兵模式集群的过程记下来,方便后面搭建的重复性工作。
首先一点,学习任何知识都要学会看官网,所以,可以参考官网进行配置。我为了省事儿,参照了公司的规范来搭建的。官网地址:https://redis.io/
<https://redis.io/>
有个官方下载地址,可以直接下载各个版本的Redis:http://download.redis.io/releases/
<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高可用集群搭建完成。