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搭建的主要内容,如果未能解决你的问题,请参考以下文章

安装配置 Centos7.x 教程

CentOS7.X系统巡检脚本

Centos7.x 安装 Supervisord

CentOS6.x和CentOS7.x字符界面安装图形界面方法

CentOs7.X下配置FTP

Centos7.x Docker桥接网络