Redis

Sentinel

  1. 主从设置
1
redis-server --port 6380 --slaveof master-IP master-Port
  1. 哨兵配置
1
2
3
4
5
port 26379
sentinel monitor master-group-name hostname port quorum
sentinel down-after-milliseconds master-group-name 1000
sentinel failover-timeout master-group-namem 60000
sentinel parallel-syncs master-group-name 1
  • quorum的解释如下 :
    (1)至少要有多少个哨兵一致同意,master进程挂掉了,或者slave进程挂掉了,或者要启动一个故障转移操作;
    (2)quorum是用来识别故障的,真正执行故障转移的时候,还是要在哨兵集群执行选举,选举一个哨兵进程出来执行故障转移操作;
    (3)假设有5个哨兵,quorum设置了2,那么如果5个哨兵中的2个都认为master挂掉了; 2个哨兵中的一个就会做一个选举,选举一个哨兵出来,执行故障转移; 如果5个哨兵中有3个哨兵都是运行的,那么故障转移就会被允许执行
  • down-after-milliseconds,超过多少毫秒跟一个redis实例断了连接,哨兵就可能认为这个redis实例挂了
  • parallel-syncs,当新的master节点切换完成之后,同时允许并行地有多少个slave被切换到去连接新master来重新做数据同步,参数越低,需要的同步时间也就越多,默认不需要去修改即可
  • failover-timeout,执行故障转移的timeout超时时长,如果一个哨兵执行master切换的时候超时来,就会投票选举另一个节点来执行故障转移

Cluster

单机集群

  1. 创建实例目录
1
2
3
mkdir cluster
cd cluster
mkdir 7001 7002 7003 7004 7005 7006
  1. 创建配置文件,每个节点都需要配置文件
1
2
3
4
5
port 7001
cluster-enabled yes
cluster-config-file nodes-7001.conf
cluster-node-timeout 5000
appendonly yes
  1. 创建集群,需要ruby
1
2
gem install redis
ruby redis-trib.rb create --replicas 1 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 127.0.0.1:7006
  • --replicas 1每个主服务器都有一个从服务器