目录
01.配置三实例
配置文件模板见结尾
启动实例:
/data/redis/bin/redis-server /data/redis/conf/redis16390.conf
/data/redis/bin/redis-server /data/redis/conf/redis16391.conf
/data/redis/bin/redis-server /data/redis/conf/redis16392.conf
ps aux|grep redis
/data/redis/bin/redis-cli -a ...... -h 127.0.0.1 -p 16390 SHUTDOWN
ps -ef | grep redis-server | grep -v grep | awk '{print $2}' | xargs kill
/data/redis/bin/redis-cli -a ...... -h 127.0.0.1 -p 16390
02.配置主从
登录从节点
/data/redis/bin/redis-cli -a ...... -h 127.0.0.1 -p 16391
/data/redis/bin/redis-cli -a ...... -h 127.0.0.1 -p 16392
从节点执行
replicaof 127.0.0.1 16390
#slaveof 127.0.0.1 16390
#也可以写入从节点配置文件中,再重启从节点
若报错:slaveof directive not allowed in cluster mode
可能主、从节点的配置文件中 cluster-enabled 的值为 yes ,设置为 no (或者直接注释掉以 cluster 开头的参数 ),重启实例。
查看主从信息
info replication
03.配置三哨兵
配置文件模板
port 26390
dir "/data/redis/data/26390/"
daemonize yes
logfile "/data/redis/log/redis_26390.log"
sentinel deny-scripts-reconfig yes
sentinel monitor mymaster 127.0.0.1 16390 2
sentinel down-after-milliseconds mymaster 5000
#sentinel failover-timeout mymaster 18000
sentinel auth-pass mymaster ......
注意:监控多架构主从时可参考下方(根据实际情况修改mymaster名称):
#mymaster02
sentinel monitor mymaster02 127.0.0.1 16390 2
sentinel down-after-milliseconds mymaster02 5000
#sentinel failover-timeout mymaster02 18000
sentinel auth-pass mymaster02 ......
启动哨兵
/data/redis/bin/redis-sentinel /data/redis/conf/redis26390.conf
/data/redis/bin/redis-sentinel /data/redis/conf/redis26391.conf
/data/redis/bin/redis-sentinel /data/redis/conf/redis26392.conf
或者
/data/redis/redis-5.0.14/src/redis-sentinel /data/redis/conf/redis26390.conf
/data/redis/redis-5.0.14/src/redis-sentinel /data/redis/conf/redis26391.conf
/data/redis/redis-5.0.14/src/redis-sentinel /data/redis/conf/redis26392.conf
ps aux|grep redis
/data/redis/bin/redis-cli -a ...... -h 127.0.0.1 -p 26390 SHUTDOWN
ps -ef | grep redis-sentinel | grep -v grep | awk '{print $2}' | xargs kill
查看哨兵日志,排查错误信息
cat /data/redis/log/redis_26390.log
查看哨兵启动后配置文件新生成的参数,确定每个哨兵实例的 id 值不同
sentinel myid 09d874870a56c0dd58d57b62027e1992a32739da
# Generated by CONFIG REWRITE
protected-mode no
sentinel config-epoch mymaster 7
sentinel leader-epoch mymaster 7
sentinel known-replica mymaster 127.0.0.1 16390
sentinel known-replica mymaster 127.0.0.1 16391
sentinel known-replica mymaster 127.0.0.1 16393
sentinel known-sentinel mymaster 127.0.0.1 26391 b77a0b78e5c1b4476900c75f34088a15e46b986b
sentinel known-sentinel mymaster 127.0.0.1 26392 f4ee904e5f166bb42b6a085ea8b806ee91c43b8a
sentinel current-epoch 7
04.实例管理
从节点宕机,不管数据路径下文件是否丢失,只要能重启会自动加到主从;
若不能重启,选择新的服务器直接 replicaof 重新选择新主即可;
主节点宕机,哨兵自动选举新主;
原主节点,不管数据路径下文件是否丢失,只要能重启会自动加到主从;
若原主节点不能重启,选择新的服务器直接 replicaof 重新选择新主即可;
05.哨兵管理
哨兵宕机是否对实例有影响,要看参数
sentinel monitor mymaster 127.0.0.1 16390 2
最后的数字权重,如果权重是2,但是正在监测的哨兵只有1台,主节点宕机,是不会进行主从切换的;
如果权重是2,部分哨兵宕机导致主观下线数不到2,主节点宕机后不会进行切换,只有原监测节点重启成功,监测数达到2,并且哨兵主观下线数量达到2才会切换。
如果权重是2,且宕机的哨兵没有来得及重启或者重启不了,当前哨兵监测数不到2,但是只要在主节点宕机之前添加新的哨兵使得监测数达到2,那么主节点宕机后,只要哨兵主观下线数量达到2是可以进行切换的。而且如果之前的哨兵能重启会自动更新配置文件重新加入哨兵组。
若原监测节点不能重启,并且主节点宕机了,需要重新部署新的哨兵,新哨兵配置文件只要跟原哨兵的配置文件相同即可,但要添加从节点信息
sentinel known-replica mymaster 127.0.0.1 16392
sentinel known-replica mymaster 127.0.0.1 16393
且启动后必须确保哨兵id值都不一样。
注:紧急情况下,为了确保主从切换,最好在主节点宕机后启动多台哨兵,这样是为了防止出现虽然哨兵监测数满足切换权重,但是主观下线数却不满足,从而导致还是无法进行主从切换的现象。
总结:哨兵宕机,要尽快重启哨兵,如果不能重启要部署新哨兵;部署的新哨兵数量不得少于宕机的数量。
06.实例配置文件模板
#注意要关掉集群的参数
bind 0.0.0.0
protected-mode yes
port 16390
tcp-backlog 511
timeout 0
tcp-keepalive 300
daemonize yes
supervised no
masterauth "......"
requirepass "......"
#maxmemory 16777216kb
maxmemory 8388608kb
maxclients 20000
pidfile "/var/run/redis_16390.pid"
loglevel notice
logfile "/data/redis/log/redis_16390.log"
databases 16
always-show-logo yes
save 900 1
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump_16390.rdb
dir "/data/redis/data/16390/"
slave-serve-stale-data yes
slave-read-only yes
repl-diskless-sync no
repl-diskless-sync-delay 5
repl-disable-tcp-nodelay no
slave-priority 100
lazyfree-lazy-eviction no
lazyfree-lazy-expire no
lazyfree-lazy-server-del no
slave-lazy-flush no
appendonly yes
appendfilename "appendonly_16390.aof"
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
aof-load-truncated yes
aof-use-rdb-preamble no
lua-time-limit 5000
#cluster-enabled yes
#cluster-config-file nodes-16390.conf
#cluster-node-timeout 15000
#cluster-slave-validity-factor 10
slowlog-log-slower-than 10000
slowlog-max-len 128
latency-monitor-threshold 0
notify-keyspace-events ""
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
list-max-ziplist-size -2
list-compress-depth 0
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
maxmemory-policy volatile-lfu