服务器:centos7.5,redis4.0.11
准备三台服务器:172.10.1.10 (master) ,172.10.1.22(slave)172.10.1.24 (slave)
redis的安装这里不再做说明,默认是安装完成的redis。理论相关知识也不用描述,本篇博客只是完成一个搭建的过程。方便自己或者有需要的同学参考。
这里需要注意的是配置了redis的密码:209209us,并且要设置protected-mode no否则会影响哨兵模式的工作。还有就是防火墙这块先关闭
相关的值说明可以参考这个内容:http://www.mamicode.com/info-detail-1898706.html
子节点配置:下面的配置为两个从节点redis.conf的配置,密码统一为:209209us,在配置子节点的同时,如果主节点有密码,子节点同样是需要配置主节点的密码的:关键字为:masterauth 你的密码,与此同时子节点也可以配置自己的密码。
建议所有的节点都配置上对应的统一的密码
主节点的配置:去掉slaveof 对应的内容即可,如果想设置密码需要增加密码,关键字为:requirepass。其实要修改的也就这两个地方,其他的内容都是默认的配置。这里只做一个主从,所以其他相关的配置不做说明。
bind 0.0.0.0
protected-mode no
port 6379
tcp-backlog 511
timeout 0
tcp-keepalive 300
daemonize yes
supervised no
pidfile "/var/run/redis_6379.pid"
loglevel notice
logfile ""
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.rdb"
dir "/usr/local/redis-4.0.11/src"
masterauth 209209us
slaveof 172.10.1.10 6379
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
requirepass 209209us
lazyfree-lazy-eviction no
lazyfree-lazy-expire no
lazyfree-lazy-server-del no
slave-lazy-flush no
appendonly no
appendfilename "appendonly.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
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
配置完后,我们测试一下主从的效果,这里需要注意一下,从库是不支持写的操作的。我们以写入数据为测试,其实可以在登录reids客户端的情况下,使用 info replication 查看节点信息。会显示节点的角色是什么。
172.10.1.10主节点写入数据
172.10.1.24节点数据
172.10.1.22从节点数据,说明我们的主从配置是正常的。在此基础上我们配置对应的哨兵模式。
在完成了上述配置后,我们可以进行一个哨兵的配置,需要配置三份(三份同一个)。且三份都是一样的,因为是不同的服务器,所以不要考虑端口冲突的问题。
#使用后台启动方式启动哨兵
daemonize yes
#监控的主节点地址和ip 名字可以随便起,2代表当有两个哨兵确认主节点挂了之后,才会进行选举。
sentinel monitor mymaster 172.10.1.10 6379 2
#非保护的模式运行
protected-mode no
#哨兵的端口
port 26379
#日志的输出地点
logfile /usr/local/redis-4.0.11/data.log
#监控主节点的密码,requirepass对应的内容
sentinel auth-pass mymaster 209209us
#master或slave多长时间(默认30秒)不能使用后标记为s_down状态
sentinel down-after-milliseconds mymaster 30000
#选项指定了在执行故障转移时, 最多可以有多少个从服务器同时对新的主服务器进行同步
sentinel parallel-syncs mymaster 1
#若sentinel在该配置值内未能完成failover操作(即故障时master/slave自动切换),则认为本次failover失败
sentinel failover-timeout mymaster 80000
配置完成后,启动三台服务器的哨兵。启动方式为,进入redis的src目录输入
./redis-sentinel ../sentinel.conf
启动后说明172.10.1.10是主节点。
1:这里我将主节点(172.10.1.10)的redis相关服务器停止。
经过一段时间后:
2:我们来验证一下;172.10.1.22变成了主节点,同样你会发现,它的redis.conf也被修改了,从节点对应的slaveof也没了。
3:原来的从节点跟随新的主节点,发现了吧,slaveof同样发生了化(将之前的ip172.10.1.10 变成了172.10.1.22)完成新主节点的跟随。sentinel.conf也发生了变化。
4:172.10.1.22变成了一个主节点,并且它的从节点是原来的主节点的从节点,并且redis.conf发生了相应的变化
5:当172.10.1.10(原来的主节点)再次启动时,自动变成了一个从节点。(如果有密码的话,尽量写上密码,这样启动的时候会自动加入主节点中,并且同步对应的数据)
在有密码的前提下,哨兵会在redis.conf中增加一个新主节点的相关信息,如下所示;