上一篇研究了redis监控(),这一篇来分析redis HA,广泛流传的是keepalived+redis,这个我在分析时有些问题还没搞明白,下一篇会提到,这一篇主要是研究官方的sentinel。
IP 10.20.112.26/27
redis-server 2.6.16
官网:
sentinel是一个管理redis实例的工具,它可以实现对redis的监控、通知、自动故障转移。sentinel不断的检测redis实例是否可以正常工作,通过API向其他程序报告redis的状态,如果redis master不能工作,则会自动启动故障转移进程,将其中的一个slave提升为master,其他的slave重新设置新的master服务器。
sentinel是一个分布式系统,在源码包的src目录下会有redis-sentinel命令,其实比较其和redis-server命令的md5sum值,发现是一样的,你可以在多台机器上部署sentinel进程,共同监控redis实例。
redis sentinel 10.20.112.26:26379
redis master 10.20.112.26:6379
redis slave 10.20.112.26:6380
redis slave 10.20.112.27:6379
redis slave 10.20.112.27:6380
部署10.20.112.26,所有redis配置文件在/etc/redis/
redis_6379.conf
daemonize yes
pidfile /var/run/redis_6379.pid
port 6379
bind 0.0.0.0
timeout 0
tcp-keepalive 0
loglevel notice
logfile /var/log/redis_6379.log
databases 16
save 900 1
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump_6379.rdb
dir ./
slave-serve-stale-data yes
slave-read-only yes
repl-disable-tcp-nodelay no
slave-priority 100
appendonly no
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
lua-time-limit 5000
slowlog-log-slower-than 10000
slowlog-max-len 128
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
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_6380.conf
###配置和redis_6379.conf大部分一致,只要修改如下几行
pidfile /var/run/redis_6380.pid
port 6380
logfile /var/log/redis_6380.log
dbfilename dump_6380.rdb
sentinel.conf
port 26379
sentinel monitor mymaster 0.0.0.0 6379 1
sentinel down-after-milliseconds mymaster 30000
sentinel can-failover mymaster yes
sentinel parallel-syncs mymaster 1
sentinel failover-timeout mymaster 900000
部署完毕后,启动redis实例,三个配置文件中sentinel.conf的配置文件大家不常见,不过里面内容比较少,解释起来很方便,在文章最后面有解释。
部署10.20.112.27
在27上面同样部署redis_6379.conf和redis_6380.conf,方法同26一样,可以在27上部署sentinel,也可以不用部署sentinel,我选择没有部署sentinel。
在10.20.112.26/27上分别执行如下命令:
###10.20.112.26
#终端1
redis-cli -p 6379
#终端2
redis-cli -p 6380
SLAVEOF 10.20.112.26 6379
###10.20.112.27
#终端1
redis-cli -p 6379
SLAVEOF 10.20.112.26 6379
#终端2
redis-cli -p 6380
SLAVEOF 10.20.112.26 6379
Redis 的详细介绍:请点这里
Redis 的下载地址:请点这里
推荐阅读:
Ubuntu 12.10下安装Redis(图文详解)+ Jedis连接Redis
CentOS 6.3安装Redis