Redis集群介绍及实用场景

1.Redis集群的搭建主要步骤:(redis cluster集群需要至少要三个master节点)

  首先,在配置文件中把cluster-enabled yes(启动集群模式)配置打开。然后修改cluster-config-file nodes-8001.conf(这里800x最好和port对应上)这个配置,用于保存集群的一些信息。之后再放开其他的cluster配置,把cluster-require-full-coverage 改为no。修改requirepass 将这个密码和主节点密码保持一致。

  之后将多台Redis服务启动起来,这时候查看进程会显示多台Redis服务以集群的模式启动好了,但是 这时候因为没有分配槽位,所以还不可以设置值,我们这时候需要使用那cluster meet ip port 命令将每个节点进行通信。最后再通过cluster addslots slot(槽位下标)来给每台机器分配槽位。(需要把Redis规定的16384个槽位分配完)

  在分配完所有槽位给master节点后,这时候如果使用客户端连接的话 需要使用-c命令来指定是集群连接,这样在set值之后,如果槽位在其他master节点,我们的客户端会自动帮我们重定向到其他master节点。(./redis-cli -c -h -p (-c表示集群模式,指定ip地址和端口号)如:/usr/local/redis/bin/redis-cli -c -h 192.168.0.60 -p 800*)

  这时候master节点分配完成了,我们还有分配slave 从节点,我们登陆从节点后,使用命令:cluster replicate node-id(对应主节点的node id)

2.Redis 5.0之后,使用Redis的命令配置来进行集群部署:

  首选还是需要我们创建集群节点,打开集群模式(和上面第一步一样)

  然后使用命令:redis5.0使用/usr/local/bin/redis-cli --cluster create 192.168.0.104:7000 192.168.0.104:7001 192.168.0.104:7002 192.168.0.104:7003 192.168.0.104:7004 192.168.0.104:7005 --cluster-replicas 1(这里的1代表一主一从)

3.Redis集群扩容:(理论上在迁移数据过程中,客户端是可以继续写数据的)

  首先创建新加入的Redis节点,可以是一主一从,

  然后使用Redis的命令:add-node 新节点ip  端口  已存在节点ip 端口 加入主节点,使用命令:add-node 新节点ip  端口  已存在节点ip 端口  --cluster-slave --cluster-master-id masterID 加入从节点

  指定槽点并迁移数据:使用命令:--cluster reshard 已存在节点ip : 端口   之后在执行过程 中指定分配多少槽位-》接收节点的id-》从之前的节点分配(all)-》最后使用 done命令结束。

4.Redis集群缩容:

  缩容和扩容步骤相反,需要先迁移槽位和数据,再删除节点:(避免数据丢失)

  使用Redis命令:--cluster reshard --cluster-from 要迁出节点ID  --cluster-to  接收槽节点ID --cluster-slots 迁出槽数量 已存在节点ip 端口 进行槽位迁移,可以执行多次,迁移到不同的节点。

  在使用命令:--cluster del-node 已存在节点ID:端口 要删除的节点ID 将此节点删除,并且 Redis会主动将此进程也删除掉。

5.Redis的故障转移(与哨兵模式类似):

  首先Redis的各个节点之间通过ping/pong消息实现故障发现(不依赖sentinel),检查的原则是:每个从节点检查主节点与之断开的时间,当超过配置文件中的:cluster-node-timeout * cluster-replica-validity-factor 时,就会判定主节点挂掉,然后选择偏移量大的从节点替换成主节点(在这个过程中首选把当前的从节点取消复制变为主节点,同时撤销以前主节点的槽位,给新的节点,并且向集群广播消息,告诉他们已经替换了故障节点)。

注意:Redis集群不支持Redis的mset,或者madd这种连续操作的命令,因为他们的key可能会不在同一个槽位,会报错。

 

posted @ 2022-01-09 11:39  WK_BlogYard  阅读(310)  评论(0)    收藏  举报