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