一、概述
采用虚拟槽分片:
- 每个节点分配一堆槽
- 每个节点与其他所有节点共享消息
- 官方指定全部槽数量为 16384(0-16383)
- 每个节点有主从复制
命令:
- cluster nodes: 查看自动生成的集群本地配置文件记录
- cluster info: 集群信息
- cluster meet ip port: 两个 cluster 节点之间的消息沟通
- cluster addslots slot [slot…]: 为节点分配槽
- cluster slots: 查看槽的分配信息
- cluster replicate ${node-id}: 设置主从关系
- cluster forget ${downNodeId}: 遗忘节点
- ** cluster keyslot ${key}:** 返回 key 对应的槽
二、部署
配置:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| port 6379 daemonize yes logfile "6379.log" # 主从复制依赖于 rdb dbfilename dump-6379.rdb dir /opt/soft/redis/data/
# 当前节点是一个 cluster 节点 cluster-enabled yes # 节点超时时间 cluster-node-timeout 15000 # 集群本地配置文件记录,自动生成 cluster-config-file nodes-${port}.conf # 全部节点正常时集群才能提供服务 cluster-require-full-coverage no
|
获取节点信息命令:
- cluster nodes: 查看自动生成的集群本地配置文件记录
- cluster info: 集群信息
1. 原生部署
1.1. 启动
1 2 3 4 5 6
| redis-server redis-7000.conf redis-server redis-7001.conf redis-server redis-7002.conf redis-server redis-7003.conf redis-server redis-7004.conf redis-server redis-7005.conf
|
1.2. meet
cluster meet ip port: 两个 cluster 节点之间的消息沟通
1 2 3 4 5
| redis-cli -h 127.0.0.1 -p 7000 cluster meet 127.0.0.1 7001 redis-cli -h 127.0.0.1 -p 7000 cluster meet 127.0.0.1 7002 redis-cli -h 127.0.0.1 -p 7000 cluster meet 127.0.0.1 7003 redis-cli -h 127.0.0.1 -p 7000 cluster meet 127.0.0.1 7004 redis-cli -h 127.0.0.1 -p 7000 cluster meet 127.0.0.1 7005
|
1.3. 分配槽
cluster addslots slot [slot…]: 为节点分配槽
cluster slots: 查看槽的分配信息
addslots.sh:
1 2 3 4 5 6 7 8
| host=$1 port=$2 start=$3 end=$4 for slot in `seq ${start} ${end}` do redis-cli -h ${host} -p ${port} cluster addslots ${slot} done
|
1 2 3
| sh addslots.sh 127.0.0.1 7000 0 5461 sh addslots.sh 127.0.0.1 7001 5462 10922 sh addslots.sh 127.0.0.1 7002 10923 16383
|
1.4. 设置主从
cluster replicate node-id: 设置主从关系
通过 cluster nodes 命令获取 node-id:
1
| redis-cli -h 127.0.0.1 7003 cluster replicate ${node-id-7000}
|
2. 使用 redis-trib 部署(需要 ruby 环境)
2.1. 启动
1 2 3 4 5 6
| redis-server redis-7000.conf redis-server redis-7001.conf redis-server redis-7002.conf redis-server redis-7003.conf redis-server redis-7004.conf redis-server redis-7005.conf
|
2.2. 创建
1 2 3 4
| # --replicas 1表示每个节点的备份数为1 # 7000 7001 7002 为主 # 7003 7004 7005 为从 ./redis1-trib.rb create --replicas 1 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005
|