redis集群是有很多个redis一起工作,那么就需要这个集群不是那么容易挂掉,所以呢,理论上就应该给集群中的每个节点至少一个备用的redis服务。这个备用的redis称为从节点(slave)。

1、集群是如何判断是否有某个节点挂掉

  首先要说的是,每一个节点都存有这个集群所有主节点以及从节点的信息。它们之间通过互相的ping-pong判断是否节点可以连接上。如果有一半以上的节点去ping一个节点的时候没有回应,集群就认为这个节点宕机了,然后去连接它的备用节点。

 

2、集群进入fail状态的必要条件

A、某个主节点和所有从节点全部挂掉,我们集群就进入faill状态。

B、如果集群超过半数以上master挂掉,无论是否有slave,集群进入fail状态.

 C、如果集群任意master挂掉,且当前master没有slave.集群进入fail状态

 

redis cluster集群采用无中心的方式,因此数据是分散的。建议部署建议不少于6个。

部署ip 1.1.1.1

修改redis配置

port 601
 cluster-enabled yes
 cluster-config-file nodes-1.conf
 cluster-node-timeout 15000
 requirepass "123456"
 masterauth "123456"logfile "1.log"

依次增加为

port 602
 cluster-enabled yes
 cluster-config-file nodes-2.conf
 cluster-node-timeout 15000
 requirepass "123456"
 masterauth "123456"logfile "2.log"

 

启动命令

/redis-5.0.3/src/redis-server /redis-5.0.3/601/redis601.conf
/redis-5.0.3/src/redis-server /redis-5.0.3/602/redis602.conf
/redis-5.0.3/src/redis-server /redis-5.0.3/603/redis603.conf
/redis-5.0.3/src/redis-server /redis-5.0.3/604/redis604.conf
/redis-5.0.3/src/redis-server /redis-5.0.3/605/redis605.conf
/redis-5.0.3/src/redis-server /redis-5.0.3/606/redis606.conf

创建集群的命令,代表是6个节点,三个master,三个salve。

redis-cli --cluster create 1.1.1.1:601 1.1.1.1:602 1.1.1.1:603 1.1.1.1:604 1.1.1.1:605 1.1.1.1:606 --cluster-replicas 1 -a 123456

如果只有三个节点,命令如下,这样就没有复制节点了。

redis-cli --cluster create 1.1.1.1:601 1.1.1.1:602 1.1.1.1:603 -a 123456

当节点拥有6个时,集群是拥有自愈能力的,任意1个节点挂掉,是不影响集群继续提供服务的。而且服务重新启动后,也可以自动恢复到集群里。

当节点为3个时,任意一个节点挂掉,集群进入fail状态,无法提供服务。在超时时间内,故障恢复,那台redis是可以自动恢复到集群中,并且集群也可以恢复。但是如果时间很久,就要手动将故障节点重新加入集群才可以。

下面是集群新增节点和删除节点的命令

#连接已存在的节点,添加一个node
redis-cli -p 603 -a 123456 cluster meet 1.1.1.1 601

#连接已存在的节点,删除一个node,后面125啥啥是node id
redis-cli -p 603 -a 123456 cluster forget 125f023835ed691e4615a63ad7df61d7c30d1b0c

#查看集群状态
redis-cli -p 603 -a 123456 cluster nodes