Centos7.x Redis6.2.5 Cluster搭建
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Centos7.x Redis6.2.5 Cluster搭建相关的知识,希望对你有一定的参考价值。
参考技术A 官方地址:前提条件:
Redis Cluster 不使用一致性哈希,而是使用不同形式的分片 每个键在概念上都是我们所谓的 哈希槽的一部分 。
Redis Cluster 有 16384 个哈希槽,计算哈希值是多少 给定密钥的插槽,我们只需取密钥的 CRC16 模 16384。
Redis 集群中的每个节点都负责哈希槽的一个子集, 例如,您可能有一个包含 3 个节点的集群,其中:
节点 A 包含从 0 到 5500 的哈希槽。
节点 B 包含从 5501 到 11000 的哈希槽。
节点 C 包含从 11001 到 16383 的哈希槽。
如果报错 ERR This instance has cluster support disabled 的话,说明集群未开启。
本例子是在一台服务器上面做的实验,只是创建了6个目录,启了6个redis-server而已。
创建一个 redis.conf每个目录中的文件,从 7000 到 7005。 作为配置文件的模板,只需使用上面的小示例, 但一定要更换端口号 7000使用正确的端口号 根据目录名。
通过 ps aux|grep redis 查看redis的启动情况。
如果不想通过配置和执行来创建Redis集群 如上所述,手动单个实例,有一个更简单的 系统(但您不会了解相同数量的操作细节)。
只需检查 utils/create-clusterRedis 发行版中的目录。 有一个脚本叫做 create-cluster里面(与目录同名 它包含在)中,它是一个简单的 bash 脚本。 为了开始 一个有 3 个主节点和 3 个从节点的 6 节点集群只需输入以下内容 命令:
回复 yes在第 2 步中,当 redis-cli实用程序要你接受 集群布局。
您现在可以与集群交互,第一个节点将从端口 30001 开始 默认情况下。 完成后,使用以下命令停止集群:
请阅读 README在此目录中以获取有关如何操作的更多信息 运行脚本。
create-cluster.sh
集群信息
集群节点
我上面的例子我们可以看出,设置的key会被分配到不同的实例去。
现在很多的sdk都支持move,例如:phpredis。
我们先查看下当前的集群情况。
目前 7000 , 7001 , 7002 是 master 角色, 7003 , 7004 , 7005 是 slave 角色。
然后我们将 7001 这个端口的redis服务的进程杀掉。
7004.log 日志,发现 7001 主挂了,然后将自己升级为master。
查询当前的集群状态如下:
我们可以看出, 7004 升级了 master , 7001 是 fail 状态。
启动 7001 的redis服务。
7001.log 中可以发现,自己变成了 slave 。
此时我们再来看下集群情况:
目前 7000 , 7002 , 7004 是 master角色, 7001 , 7003 , 7005 是 slave角色,自动进行了故障切换。
如果配置了 requirepass 的话, masterauth 必须需要配置,不然 master 与 slave 不能自动切换。
修改配置文件 redis.conf 中的 cluster-enabled 参数的值为 yes 并把参数前#去除,重启Redis服务器。
在命令尾部追加 2>/dev/null 即可。
我们继续在 cluster-test 目录下,创建 7006 目录,配置和之前的一样,不同就是端口以及日志路径,然后启动服务即可。
看下最新的集群情况
添加一个 7006 的从节点。
在 cluster-test 目录下,创建 7007 目录,配置和之前的一样,不同就是端口以及日志路径,然后启动服务即可。
看下最新的集群情况
从上面集群情况可以看出了问题,新增加的 7006 , 7007 的虽然增加到了集群里面,但是没有分配slot。
分配后的集群情况
缩容前:
将 7006 的slot给了 7000 。
缩容后:
删除了 7006 , 7007 后的集群情况
Redis 3.2.8集群部署
tar zxvf
make
make install
mkdir redis-cluster
mkdir redis-cluser/6379、6380、81、82、83、84
cp redis.conf redis-cluser/6379、6380、81、82、83、84
vim redis-cluser/6379、6380、81、82、83、84/redis.conf
port、pidfile、node-file
redis-server 6379、6380、81、82、83、84/redis.conf
yum install ruby ruby-devel rubygems rpm-build
gem install redis
# redis-trib.rb create --replicas 1 127.0.0.1:6379 127.0.0.1:6380 127.0.0.1:6381 127.0.0.1:6382 127.0.0.1:6383 127.0.0.1:6384
>>> Creating cluster >>> Performing hash slots allocation on 6 nodes... Using 3 masters: 127.0.0.1:6379 127.0.0.1:6380 127.0.0.1:6381 Adding replica 127.0.0.1:6382 to 127.0.0.1:6379 Adding replica 127.0.0.1:6383 to 127.0.0.1:6380 Adding replica 127.0.0.1:6384 to 127.0.0.1:6381 M: 46af51f0d193f3e76b322537bc11f9570ca13930 127.0.0.1:6379 slots:0-5460 (5461 slots) master M: 3caa86acc90199cd882475dc08622fdd522cf9a8 127.0.0.1:6380 slots:5461-10922 (5462 slots) master M: 01152da2da00e48384714c609241d2f83ca7bdc9 127.0.0.1:6381 slots:10923-16383 (5461 slots) master S: 825f0c904c8337d6eb8b5685e9b46fe36f7e9e99 127.0.0.1:6382 replicates 46af51f0d193f3e76b322537bc11f9570ca13930 S: 0c01889b111948f334950e84aea677658d91f1bc 127.0.0.1:6383 replicates 3caa86acc90199cd882475dc08622fdd522cf9a8 S: 567f1760b13de130a63396cc4e6983af5f6bca24 127.0.0.1:6384 replicates 01152da2da00e48384714c609241d2f83ca7bdc9 Can I set the above configuration? (type ‘yes‘ to accept):
yes:
>>> Nodes configuration updated >>> Assign a different config epoch to each node >>> Sending CLUSTER MEET messages to join the cluster Waiting for the cluster to join.. >>> Performing Cluster Check (using node 127.0.0.1:6379) M: 46af51f0d193f3e76b322537bc11f9570ca13930 127.0.0.1:6379 slots:0-5460 (5461 slots) master 1 additional replica(s) S: 0c01889b111948f334950e84aea677658d91f1bc 127.0.0.1:6383 slots: (0 slots) slave replicates 3caa86acc90199cd882475dc08622fdd522cf9a8 S: 825f0c904c8337d6eb8b5685e9b46fe36f7e9e99 127.0.0.1:6382 slots: (0 slots) slave replicates 46af51f0d193f3e76b322537bc11f9570ca13930 S: 567f1760b13de130a63396cc4e6983af5f6bca24 127.0.0.1:6384 slots: (0 slots) slave replicates 01152da2da00e48384714c609241d2f83ca7bdc9 M: 3caa86acc90199cd882475dc08622fdd522cf9a8 127.0.0.1:6380 slots:5461-10922 (5462 slots) master 1 additional replica(s) M: 01152da2da00e48384714c609241d2f83ca7bdc9 127.0.0.1:6381 slots:10923-16383 (5461 slots) master 1 additional replica(s) [OK] All nodes agree about slots configuration. >>> Check for open slots... >>> Check slots coverage... [OK] All 16384 slots covered.
以上是关于Centos7.x Redis6.2.5 Cluster搭建的主要内容,如果未能解决你的问题,请参考以下文章