Redis HA方案之sentinel

IP 10.20.112.26/27

redis-server  2.6.16

官网:http://redis.io/topics/sentinel

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 的下载地址:请点这里

推荐阅读:

相关推荐