redis集群搭建
1.修改配置文件 创建6个配置文件分别为 redis_6379.conf 6380 6381 6389 6390 6391
include /usr/local/redis/conf/redis.conf
pidfile "/var/run/redis_6379.pid"
port 6379
dbfilename "dump_6379.rdb"
cluster-enabled yes
cluster-config-file nodes_6379.conf
cluster-node-timeout 15000
使用:%s/6379/6380替换文件内容
2.启动6个服务
redis-server redis_6379.conf
3.设置集群在src下执行,redis集群不仅需要开通redis客户端连接的端口,而且需要开通集群总线端口
集群总线端口为redis客户端连接的端口 + 10000 如redis端口为6379 则集群总线端口为16379 故,所有服务器的点需要开通redis的客户端连接端口和集群总线端口
创建集群可以一次性随机添加主节点和子节点 --cluster-replicas 1
redis-cli --cluster create --cluster-replicas 1 116.62.198.68:6379 116.62.198.68:6380 116.62.198.68:6381 116.62.198.68:6389 116.62.198.68:6390 116.62.198.68:6391
也可以只添加主几点后续再添加子节点 --cluster-replicas 0
redis-cli --cluster create --cluster-replicas 0 116.62.198.68:6379 116.62.198.68:6380 116.62.198.68:6381
4.增加从节点
redis-cli --cluster add-node 116.62.198.68:6389 116.62.198.68:6379 --cluster-slave --cluster-master-id ***************
其中:
slave 表示要添加从节点
cluster-master-id 要添加到哪一个主节点,id是*****
116.62.198.68:6389 要添加的从节点
116.62.198.68:6379 原集群中任意节点
5.查看集群信息
redis-cli -cluster check 127.0.0.1:6379
登录集群后查看
redis-cli -c -p 6379 执行 cluster nodes
6.节点宕机重启
从节点宕机重启之后还是从节点
主节点宕机之后从节点会晋升为主节点,主节点重启之后会成为新主节点的从节点。
7.新增主节点
redis-cli --cluster add-node 116.62.198.68:6382 116.62.198.68:6379
这里,节点已经加入集群,但:
由于它还没有分配到 hash slots,所以它还没有数据
由于它是还没有 hash slots的主节点,所以它不会参与到从节点升级到主节点的选举中
此时,执行 resharding 指令来为它分配 hash slots,这会进入交互式命令行,由用户输入相关信息:
redis-cli --cluster reshard 116.62.198.68:6379
以下三个问题:
- How many slots do you want to move (from 1 to 16384)? 建议填写16384/总主节点数
- target node id?当前新添加尽力来的节点
- from what nodes you want to take those keys?all从每个主节点分一部分slots到新节点
8.删除从节点
注意,只能删除从节点或者空的主节点,指令如下:
redis-cli --cluster del-node 116.62.198.68:6379 <node-id>
9.删除主节点
redis-cli --cluster reshard 116.62.198.68:6379
How many slots do you want to move (from 1 to 16384)? 580 填写要删除节点的slots数量
What is the receiving node ID? 接收节点ID
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: 76838b14760c8a76e78c998e4c069aef6e493d80 要移除的节点
Source node #2: done
redis-cli --cluster del-node 116.62.198.68:6379 <node-id>

浙公网安备 33010602011771号