Dcoker搭建Redis主从集群
1.启动6个redis
docker run
--net host
-d
-v /home/ws/node-1/data:/data
--privileged=true
--name redis-node-1
-p 6381:6379
redis:6.0.8
--cluster-enabled yes
--appendonly yes
--port 6381
2.进入容器
exec -it redis-node-1 bash
2.1 配置主从
redis-cli --cluster create
192.168.170.181:6381
192.168.170.181:6382
192.168.170.181:6383
192.168.170.181:6384
192.168.170.181:6385
192.168.170.181:6386
--cluster-replicas 1
2.2 查看主从节点集群状态
redis-cli --cluster check 192.168.170.181:6831(端口号随意,只是一个落地的抓手)
2.2 进入6381redis服务器
redis-cli -p 192.168.170.181:6381 -c(数据不一定存在6831,配置-c可以自动寻找切换节点查找数据)
set k1 v1
get k1 v1
cluster info
cluster nodes
3.主从切换(主机宕机)
主机宕机(6381),从机上位(6384)
重启主机,关闭从机,再重启从机,
主从恢复
4.主从扩容
添加主节点到集群
redis-cli --cluster add-node ip:6387 ip:6381(原集群master节点,此处也是作为一个切入点)
重新分配hash槽
redis-cli --cluster reshard ip:6381(同上,选择平分所有槽)
添加从节点到集群
redis-cli --cluster add-node ip:新从节点端口 ip:新主机节点端口 --cluster-slave --cluster-master-id 新主机nodeId
5.主从缩容
删除从节点
redis-cli --cluster del-node ip:port 从节点nodeId
重新分配hash槽
redis-cli --cluster reshard ip:6381(把空出来的槽全都倒给6381,也可以配置多个节点接收)
删除主节点
redis-cli --cluster del-node ip:port 主节点nodeId