Redis Sentinel 主从高可用配置

由于分布式微博爬虫中使用celery作为分布式任务调度工具,使用redis作为celery的broker.由于redis是单机,当redis挂掉之后,整个系统就会挂掉。所以我抽时间看了一下redis的高可用方案,本文讲讲使用redis sentinel配置redis 主从高可用架构的过程。

目前节点:

  • 123.206.21.165 主节点
  • 119.29.193.219 从节点

redis的安装我就不说了,官网写得很明白,也可以查看我写的wiki

在主节点安装完redis后,我们在redis安装目录新建一个myredis.conf文件,里面内容如下

daemonize yes
pidfile "/home/ubuntu/program/others/redis.pid"
port 6379
logfile "/home/ubuntu/program/others/redis.log"
requirepass "abcdefg"
masterauth "abcdefg"

启动redis

src/redis-server myredis.conf

然后查看/home/ubuntu/program/others/redis.log文件,看redis是否成功启动。启动成功后,我们在从节点进行相同的操作,只有一步不同,就是myredis.conf文件,除了包含上述内容以外,还得包括

slaveof 123.206.21.165 6379

在从节点启动后,我们再分别在两个节点配置sentinel。这里仍然以主节点为例说明,在redis安装目录我们新建一个mysentinel.conf文件,加上如下内容

port 26379
bind 0.0.0.0
daemonize yes
logfile "/home/ubuntu/program/others/sentinel.log"
sentinel monitor mymaster 123.206.21.165 6379 1   # 主节点名 和 ip port 
sentinel down-after-milliseconds mymaster 5000  
sentinel failover-timeout mymaster 15000
sentinel auth-pass mymaster abcdefg

通过

src/redis-sentinel mysentinel.conf

启动位于主节点的哨兵。从节点配置过程和启动哨兵方式和上述完全一样。这里就不啰嗦了。

这个时候,我们可以通过杀死主节点的redis服务,看是否会成功切换到从节点。其实我想讲的就是这里。当我们哨兵只有两个的时候,会发现一直选举主节点都会失败。

我们需要设置三个或者三个以上的哨兵,才可以让选举成功。如果服务器只有两台,可以通过修改

port 26379

为 别的端口,来在同一台机器上设置多个哨兵

在折腾了很久后,终于把主从切换做好了,结果发现想要把它用到celery中,还十分困难,目前也还不知道如何做celery中的redis高可用方案,有知道的朋友可以给我讲讲,感谢!

这篇文章写得比较简单,也懒得截图,如果有缘人看到了,按上述过程来做 redis sentinel有问题的话,可以留言。

另外,除了主从设置哨兵以外,还可以通过redis cluster集群方案、keepalived+redis或者codis这类ha proxy的方案来做redis的高可用。时间允许的话,我也会去尝试一下,看能不能和celery结合起来。

    原文作者:resolvewang
    原文地址: https://www.jianshu.com/p/afb678794a0e
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞