docker 部署redis集群

redis集群方案

  • 哈希取余分区
  • 一致性哈希算法分区
  • 哈希槽分区

哈希槽分区

一个集群只能有16384个槽,编号0-16383(0-2^14-1)。这些槽会分配给集群中的所有主节点,分配策略没有要求。可以指定哪些编号的槽分配给哪个主节点。集群会记录节点和槽的对应关系。解决了节点和槽的关系后,接下来就需要对key求哈希值,然后对16384取余,余数是几key就落入对应的槽里。slot = CRC16(key) % 16384。以槽为单位移动数据,因为槽的数目是固定的,处理起来比较容易,这样数据移动问题就解决了。
在这里插入图片描述

三主三从集群搭建

创建六个redis容器实例

创建/config/redis/share/redis-node-1/redis.conf

官网下载地址
在这里插入图片描述

修改配置文件

port 6381
appendonly yes
#bind *********
protected-mode no
cluster-enabled yes
cluster-config-file nodes-6381.conf

创建实例

docker run -d --name redis-node-1 --net host --privileged=true   -v /usr/local/software/redis-cluster/config/redis-node-1/redis.conf:/etc/redis/conf/redis.conf  -v /usr/local/software/redis-cluster/data/redis-node-1:/data  redis:6.0.8  redis-server /etc/redis/conf/redis.conf  
docker run -d --name redis-node-2 --net host --privileged=true   -v /usr/local/software/redis-cluster/config/redis-node-2/redis.conf:/etc/redis/conf/redis.conf  -v /usr/local/software/redis-cluster/data/redis-node-2:/data  redis:6.0.8  redis-server /etc/redis/conf/redis.conf
docker run -d --name redis-node-3 --net host --privileged=true   -v /usr/local/software/redis-cluster/config/redis-node-3/redis.conf:/etc/redis/conf/redis.conf  -v /usr/local/software/redis-cluster/data/redis-node-3:/data  redis:6.0.8  redis-server /etc/redis/conf/redis.conf
docker run -d --name redis-node-4 --net host --privileged=true   -v /usr/local/software/redis-cluster/config/redis-node-4/redis.conf:/etc/redis/conf/redis.conf  -v /usr/local/software/redis-cluster/data/redis-node-4:/data  redis:6.0.8  redis-server /etc/redis/conf/redis.conf
docker run -d --name redis-node-5 --net host --privileged=true   -v /usr/local/software/redis-cluster/config/redis-node-5/redis.conf:/etc/redis/conf/redis.conf  -v /usr/local/software/redis-cluster/data/redis-node-5:/data  redis:6.0.8  redis-server /etc/redis/conf/redis.conf
docker run -d --name redis-node-6 --net host --privileged=true   -v /usr/local/software/redis-cluster/config/redis-node-6/redis.conf:/etc/redis/conf/redis.conf  -v /usr/local/software/redis-cluster/data/redis-node-6:/data  redis:6.0.8  redis-server /etc/redis/conf/redis.conf

在这里插入图片描述

docker run
创建并运行docker容器实例
–name redis-node-6
-p 宿主机端口:redis端口
容器名字
–net host
使用宿主机的IP和端口,默认
–privileged=true
获取宿主机root用户权限
-v /data/redis/share/redis-node-6:/data
容器卷,宿主机地址:docker内部地址
redis:6.0.8
redis镜像和版本号
–cluster-enabled yes
开启redis集群
–appendonly yes
开启持久化
–port 6386
redis端口号

进入node1 创建构建主从关系

docker exec -it redis-node-1 /bin/bash
redis-cli --cluster create ip:6381 ip:6382 ip:6383 ip:6384 ip:6385 ip:6386 --cluster-replicas 1 -a 配置文件里设置的密码 

查看集群状态

redis-cli -p 6381 -a 密码
cluster info
cluster nodes

在这里插入图片描述

验证主从关系

6381master节点新增key

docker exec -it redis-node-1 /bin/bash
# 防止路由实现 添加参数-c
redis-cli -p 6381 -a foobared -c
set nihao nihao

在这里插入图片描述

6385slave节点查看key

docker exec -it redis-node-5 /bin/bash
redis-cli -p 6385 -a foobared -c
get nihao

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值