一、呼唤集群
二、数据分布
三、手动配置redis cluster
###3.1 集群配置###
//关于集群的一些配置
//开启集群
cluster-enabled yes
//集群超时,超过就认为有问题
cluster-node-timeout 15000
//是不是所有的节点都正常,redis才能正常用(肯定设置no)
cluster-require-full-coverage no
//给集群指定一个输出的配置文件
cluster-config-file nodes-8001.conf
[root@docker1 src]# redis-server conf/redis-8000.conf
[root@docker1 src]# redis-server conf/redis-8001.conf
[root@docker1 src]# redis-server conf/redis-8002.conf
[root@docker1 src]# redis-server conf/redis-8003.conf
[root@docker1 src]# redis-server conf/redis-8004.conf
[root@docker1 src]# redis-server conf/redis-8005.conf
我开启了6个节点
这里面每个redis后面都会带有[cluster]标志
###3.2 节点meet###
利用 cluster nodes查看
在8000中确实识别到了其他5个节点
3.3设置主从###
- 8003从 8000主
- 8004从 8001主
- 8005从 8002主
查看节点信息
确实已经3主3从
3.4分配slot###
查看分配的具体信息
3.5 运行结果###
要使用过 -c命令
四、ruby 配置redis cluster
ruby的安装不详细介绍了。
这次还是准备三主三从。 9001 9002 9003 9004 9004 9006
其中master 9001、9002、9003
slave 9004 9005 9006
$ redis-trib.rb create --replicas 1 127.0.0.1:9001 127.0.0.1:9002 127.0.0.1:9003 127.0.0.1:9004 127.0.0.1:9005 127.0.0.1:9006
>>> Creating cluster
>>> Performing hash slots allocation on 6 nodes...
Using 3 masters:
127.0.0.1:9001
127.0.0.1:9002
127.0.0.1:9003
Adding replica 127.0.0.1:9004 to 127.0.0.1:9001
Adding replica 127.0.0.1:9005 to 127.0.0.1:9002
Adding replica 127.0.0.1:9006 to 127.0.0.1:9003
......
replicates 7bda0805a4172de778f1a7d30a5c9d851c563812
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
后续我会详细分析ruby
五、ruby集群伸缩
5.1、扩容集群
利用手动创建集群是最好理解的,加入集群就是meet、迁移槽和数据就分时分配slot。
加入主节点
//127.0.0.1:9007新加入的ip和端口
//127.0.0.1:9001是新节点需要meet的旧的节点(集群随便一个都行)
redis-trib.rb add-node 127.0.0.1:9007 127.0.0.1:9001
加入从节点
//将9008从属于9007
//f061c751771d042364cc926f3deab4e598bb70f9 是9007的节点id
redis-trib.rb add-node --slave --master-id f061c751771d042364cc926f3deab4e598bb70f9 127.0.0.1:9008 127.0.0.1:9007
分配槽和迁移数据
redis-trib.rb reshard 127.0.0.1:9001
How many slots do you want to move (from 1 to 16384)? 4096
What is the receiving node ID? f061c751771d042364cc926f3deab4e598bb70f9
Please enter all the source node IDs.
Type 'all' to use all the nodes as source nodes for the hash slots.
Type 'done' once you entered all the source nodes IDs.
Source node #1:all
//这样就完成了。