暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Redis集群方案

东神殿下 2021-12-07
272

redis-cluster架构图

1)所有的redis节点彼此互联(PING-PONG),内部使用二进制协议优化传输速度和带宽。

2)节点的fail是通过集群中超过半数的节点检测有效时整个集群才生效。

3)客户端与redis节点直连,不需要中间proxy层。客户端不需要连接集群所有节点,连接集群中任何一个节点即可。

4)redis-cluster把所有的物理节点映射到[0-16383]slot上,cluster负责维护node<->slot<->value


Redis集群中内置了16384 个哈希槽,当需要在 Redis 集群中放置一个key-value时,redis先对key使用crc16算法算出一个结果,然后把结果对16384求余数,这样每个key都会对应一个编号在0-16383之间的哈希槽,redis会根据节点数量大致均等的将哈希槽映射到不同的节点


示例如下:



redis-cluster 投票:容错

心跳机制

1)集群中所有master参与投票,如果半数以上master节点与其中一个master节点通信超过(cluster-node-timeout),认为该master节点挂掉。

2)什么时候整个集群不可用(cluster_state:fail)?

  1. 如果集群任意master挂掉,且当前master没有slave,则集群进入fail状态。也可以理解成集群的[0-16383]slot映射不完全时进入fail状态。

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


集群搭建步骤:
第一步:安装redis
第二部:创建集群目录


第三步:在redis-cluster目录下创建节点目录。

搭建集群最少也得需要3台主机,如果每台主机再配置一台从机的话,则最少需要6台机器。设计端口如下:创建6个redis实例,修改端口号7001-7006


第四步:如果存在持久化文件,则删除


第五步:修改redis.conf配置文件,打开cluster-enable yes
说明:cluster-enable 是否支持集群


第六步:修改端口


第七步:复制出7002-7006机器


第八步:修改7002-7006端口号
              修改cluster-config-file nodes-7001.conf

标注地方要随端口号依次更改 7001对应7001端口

             修改 appendonly  yes

总结:需要修改的地方

             daemonize是用来指定redis是否要用守护线程的方式启动。
  • 当我们采用yes时,redis会在后台运行,此时redis将一直运行,除非手动kill该进程。同时将进程pid号写入至redis.conf选项pidfile设置的文件中,默认会生成在/var/run/redis.pid,也可以通过pidfile来指定pid文件生成的位置

  • cluster-enable 是否支持集群

第九步:启动7001-7006这六台机器,写一个启动脚本:自定义shel脚本

内容


第十步:修改start-all.sh文件的权限

权限相关命令请查看Linux 常用命令

第十一步:启动所有实例

如果出现如下错误,请将配置文件中replicaof注释掉
 replicaof用于追随某个节点的redis,被追随的节点为主节点,追随的为从节点。


然后再次启动


第十二步:创建集群(关闭防火墙)
关闭防火墙:service iptables stop
查看防火墙状态:service iptables status
注意:在任意一台上运行 不要在每台机器上都运行。
          redis 5.0.5中使用redis-cli --cluster 代替redis-trib.rb,如下:
redis-cli --cluster create ip:port ip:port --cluster-replicas 1
复制
 ./redis-cli --cluster create 192.168.199.128:7001 192.168.199.128:7002 192.168.199.128:7003 192.168.199.128:7004 192.168.199.128:7005 192.168.199.128:7006 --cluster-replicas 1
复制

输入yes

出现OK标志表示创建集群成功!


连接集群
[root@localhost 7001]# ./bin/redis-cli -h 127.0.0.1 -p 7001 -c
复制


-c :指定是集群连接


查看集群信息
cluster info
复制


查看集群中节点信息
cluster nodes
复制



文章转载自东神殿下,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论