Redis 3.0 cluster 集群

参考资料:

吴水成老师的<<Redis集群的安装(Redis3+CentOS)>> 见附件

Redis 官方集群指南:http://redis.io/topics/cluster-tutorial
Redis 官方集群规范:http://redis.io/topics/cluster-spec
Redis 集群指南(中文翻译,紧供参考):http://redisdoc.com/topic/cluster-tutorial.html
Redis 集群规范(中文翻译,紧供参考): http://redisdoc.com/topic/cluster-spec.html

实践:结合自身的实践

一.Redis Cluster介绍

Redis集群是一个无中心的分布式redis存储架构,可以在多个节点之间进行数据共享,解决了redis高可用、可扩展等问题,redis集群提供了以下两个好处

(1) 将数据自动切分(split)到多个节点

(2) 当集群中的某一个节点故障时,redis还可以继续处理客户端的请求。

一个 Redis 集群包含 16384 个哈希槽(hash slot),数据库中的每个数据都属于这16384个哈希槽中的一个。集群使用公式 CRC16(key) % 16384 来计算键 key 属于哪个槽。集群中的每一个节点负责处理一部分哈希槽。集群中的每个节点都有1个至N个复制品,其中一个为主节点,其余的为从节点,如果主节点下线了,集群就会把这个主节点的一个从节点设置为新的主节点,继续工作。这样集群就不会因为一个主节点的下线而无法正常工作

详尽内容,请参考:http://www.cnblogs.com/wjoyxt/p/4242184.html    http://blog.csdn.net/a67474506/article/details/50435498

二.安装配置

1.环境介绍

Redis  集 群的安装( Redis3.0.3 +  CentOS 6.6 _x64 )要让 Redis3.0 集群正常工作至少需要 3 个 Master 节点,要想实现高可用,每个 Master 节点要配备至少 1 个 Slave 节点。根据以上特点和要求,进行如下的集群实施规划:
使用 6 台服务器(物理机或虚拟机)部署 3 个 Master + 3 个 Slave;

我的环境设置:

机器:虚拟机

O S:   CentOS 6.6 _x64

IP:

192.168.1.121:7111  192.168.1.121:7112  192.168.1.121:7113

192.168.1.122:7114  192.168.1.124:7116  192.168.1.123:7115

2.Redis安装配置

Redis介绍,安装使用及集群介绍

3.Redis集群的安装

3.1 剩余内容参考:Redis集群的安装(Redis3+CentOS)即可

3.2.安装过程中问题小结

(1) redis-trib create --replicas 1 192.168.1.107:7114 192.168.1.108:7115 192.168.1.109:7116 192.168.1.104:7111 192.168.1.105:7112 192.168.1.106:7113

注:(1)不满足可换位置再试  (2)当存在伪节点时,当主从在一台,机器出问题就都有问题了; 因为节点主从不可控

(2)报错:[ERR] Node 172.168.63.202:7001 is not empty. Either the nodealready knows other nodes (check with CLUSTER NODES) or contains some key
1)将每个节点下aof、rdb、nodes.conf本地备份文件删除;
2)172.168.63.201:7001> flushdb #清空当前数据库(可省略)
3)之后再执行脚本,成功执行;
参考:http://blog.csdn.net/vtopqx/article/details/50235737

4.Redis集群高可用测试

5.Redis集群的扩展测试

5.1 遵从文件<<redis集群的扩展性测试>>

5.2 以下是自身的实践及问题总结

1.新增节点到集群内:在新节点机器上执行

/usr/local/src/redis3.0/src/redis-trib.rb add-node 192.168.1.111:7117 192.168.1.121:7111

2.为新节点分配哈希槽(slot) :

你只需要指定集群中其中一个节点的地址, redis-trib 就会自动找到集群中的其他节点。 目前 redis-trib只能在管理员的协助下完成重新分片的工作,命令如下:

# /usr/local/src/redis3.0/src/redis-trib.rb reshard 192.168.1.121:7111

3.移动完成查看节点是否正常

/usr/local/src/redis3.0/src/redis-trib.rb check 192.168.1.121:7111

4.添加从节点

#/usr/local/src/redis3.0/src/redis-trib.rb add-node 192.168.1.111:7118 192.168.1.121:7111

5.redis-cli 连接上新节点 shell,输入命令:cluster replicate 对应 master 的 node-id

127.0.0.1:7118>cluster replicate ab31611b3424990e2b9bbe73135cb4cb0ace394f

ab31611b3424990e2b9bbe73135cb4cb0ace394f位7117的nodeId

6.删除一个 slave  节点

# cd /usr/local/src/redis-3.0.3/src/

# ./redis-trib.rb del-node 172.21.10.203:7118 7f868a38a90acfdf40121613bfed1a089b7db028

删除一个 master  节点

删除 master 节点之前首先要使用 reshard 移除该 master 的全部 slot,然后再删除当前节点(目前只能把被

删除 master 的 slot 迁移到一个节点上),操作和分配 slot 类似,指定具体的 Source node 即可。

# /usr/local/src/redis-3.0.3/src/redis-trib.rb reshard 172.21.10.203:7117

确认已清空该 Master 节点的所有 slot 后就可以删除该节点了(命令与删除 slave 节点一样) :

# cd /usr/local/src/redis-3.0.3/src/

# ./redis-trib.rb del-node 172.21.10.203:7117 93c4477e5d23db7fc17fc4c15ec72595b52d25e7

参考资料:

吴水成老师的<<Redis集群的安装(Redis3+CentOS)>> 见附件

Redis 官方集群指南:http://redis.io/topics/cluster-tutorial
Redis 官方集群规范:http://redis.io/topics/cluster-spec
Redis 集群指南(中文翻译,紧供参考):http://redisdoc.com/topic/cluster-tutorial.html
Redis 集群规范(中文翻译,紧供参考): http://redisdoc.com/topic/cluster-spec.html

实践:结合自身的实践

一.Redis Cluster介绍

Redis集群是一个无中心的分布式redis存储架构,可以在多个节点之间进行数据共享,解决了redis高可用、可扩展等问题,redis集群提供了以下两个好处

(1) 将数据自动切分(split)到多个节点

(2) 当集群中的某一个节点故障时,redis还可以继续处理客户端的请求。

一个 Redis 集群包含 16384 个哈希槽(hash slot),数据库中的每个数据都属于这16384个哈希槽中的一个。集群使用公式 CRC16(key) % 16384 来计算键 key 属于哪个槽。集群中的每一个节点负责处理一部分哈希槽。集群中的每个节点都有1个至N个复制品,其中一个为主节点,其余的为从节点,如果主节点下线了,集群就会把这个主节点的一个从节点设置为新的主节点,继续工作。这样集群就不会因为一个主节点的下线而无法正常工作

详尽内容,请参考:http://www.cnblogs.com/wjoyxt/p/4242184.html    http://blog.csdn.net/a67474506/article/details/50435498

二.安装配置

1.环境介绍

Redis  集 群的安装( Redis3.0.3 +  CentOS 6.6 _x64 )要让 Redis3.0 集群正常工作至少需要 3 个 Master 节点,要想实现高可用,每个 Master 节点要配备至少 1 个 Slave 节点。根据以上特点和要求,进行如下的集群实施规划:
使用 6 台服务器(物理机或虚拟机)部署 3 个 Master + 3 个 Slave;

我的环境设置:

机器:虚拟机

O S:   CentOS 6.6 _x64

IP:

192.168.1.121:7111  192.168.1.121:7112  192.168.1.121:7113

192.168.1.122:7114  192.168.1.124:7116  192.168.1.123:7115

2.Redis安装配置

Redis介绍,安装使用及集群介绍

3.Redis集群的安装

3.1 剩余内容参考:Redis集群的安装(Redis3+CentOS)即可

3.2.安装过程中问题小结

(1) redis-trib create --replicas 1 192.168.1.107:7114 192.168.1.108:7115 192.168.1.109:7116 192.168.1.104:7111 192.168.1.105:7112 192.168.1.106:7113

注:(1)不满足可换位置再试  (2)当存在伪节点时,当主从在一台,机器出问题就都有问题了; 因为节点主从不可控

(2)报错:[ERR] Node 172.168.63.202:7001 is not empty. Either the nodealready knows other nodes (check with CLUSTER NODES) or contains some key
1)将每个节点下aof、rdb、nodes.conf本地备份文件删除;
2)172.168.63.201:7001> flushdb #清空当前数据库(可省略)
3)之后再执行脚本,成功执行;
参考:http://blog.csdn.net/vtopqx/article/details/50235737

4.Redis集群高可用测试

5.Redis集群的扩展测试

5.1 遵从文件<<redis集群的扩展性测试>>

5.2 以下是自身的实践及问题总结

1.新增节点到集群内:在新节点机器上执行

/usr/local/src/redis3.0/src/redis-trib.rb add-node 192.168.1.111:7117 192.168.1.121:7111

2.为新节点分配哈希槽(slot) :

你只需要指定集群中其中一个节点的地址, redis-trib 就会自动找到集群中的其他节点。 目前 redis-trib只能在管理员的协助下完成重新分片的工作,命令如下:

# /usr/local/src/redis3.0/src/redis-trib.rb reshard 192.168.1.121:7111

3.移动完成查看节点是否正常

/usr/local/src/redis3.0/src/redis-trib.rb check 192.168.1.121:7111

4.添加从节点

#/usr/local/src/redis3.0/src/redis-trib.rb add-node 192.168.1.111:7118 192.168.1.121:7111

5.redis-cli 连接上新节点 shell,输入命令:cluster replicate 对应 master 的 node-id

127.0.0.1:7118>cluster replicate ab31611b3424990e2b9bbe73135cb4cb0ace394f

ab31611b3424990e2b9bbe73135cb4cb0ace394f位7117的nodeId

6.删除一个 slave  节点

# cd /usr/local/src/redis-3.0.3/src/

# ./redis-trib.rb del-node 172.21.10.203:7118 7f868a38a90acfdf40121613bfed1a089b7db028

删除一个 master  节点

删除 master 节点之前首先要使用 reshard 移除该 master 的全部 slot,然后再删除当前节点(目前只能把被

删除 master 的 slot 迁移到一个节点上),操作和分配 slot 类似,指定具体的 Source node 即可。

# /usr/local/src/redis-3.0.3/src/redis-trib.rb reshard 172.21.10.203:7117

确认已清空该 Master 节点的所有 slot 后就可以删除该节点了(命令与删除 slave 节点一样) :

# cd /usr/local/src/redis-3.0.3/src/

# ./redis-trib.rb del-node 172.21.10.203:7117 93c4477e5d23db7fc17fc4c15ec72595b52d25e7

猜你喜欢

转载自zjjndnr.iteye.com/blog/2386575