linux docker redis cluster搭建备忘录(无总线端口)

以redis_6381为标准,创建容器:docker run --name redis_6381 -p 6381:6381 -v /redis/redis_6381/:/redis/redis_6381/ --privileged=true -d redis redis-server /redis/redis_6381/redis_6381.conf
注意要提前准备好宿主-v路径/redis/redis_6381,里面有conf与log文件,log文件与redis_6381文件夹要chmod 777 xxx权限。

docker run之后,用docker ps查看是否启动成功,失败不会出现,可以用docker ps -a查看所有容器的信息(包括失败),复制失败容器id,用docker logs id查看原因,docker rm id删除失败的容器

conf文件关键更改参数:
bind 0.0.0.0
port 6381
daemonize no
pidfile /redis/redis_6381/redis_6381.pid
logfile /redis/redis_6381/redis_6381.log
dbfilename dump_6381.rdb
dir /redis/redis_6381/
<–集群部分–>
cluster-enabled yes
cluster-config-file nodes-6381.conf

查看容器ip: docker inspect 容器id,最下面IPAddress

cluster部分命令参考:
https://www.cnblogs.com/zhoujinyi/p/11606935.html

将cluster节点连接起来创建集群(注意,redis5.0之后将ruby整合到redis-cli内,即5.0之前无法使用redis-cli连接集群节点创建集群)
docker run -it redis redis-cli --cluster-replicas 0 --cluster create 172.17.0.2:6381 172.17.0.3:6382 172.17.0.4:6383
(cluster-replicas是每个master节点拥有slave节点的数量,此处为0意为仅指定三个master节点,每个master节点无slave节点,slave节点可以后续添加)
查看集群节点信息:docker exec进入某节点redis客户端,cluster nodes

追加slave节点:docker run -it redis redis-cli --cluster add-node 172.17.0.5:6384 172.17.0.2:6381 --cluster-slave --cluster-master-id 54acab04c563342d12d1fcbe03d5637523af088e
将6384添加到6381所在的集群,作为slave并指定master(不一定非要是6381,只要是6381所在集群的任一节点ip、port都可以)

删除节点: docker exec -it 3805ddb6c9e3 redis-cli -p 6381 --cluster del-node 172.17.0.5:6384 b196fb934e5fab6cf2cac5b19a22fa5cbbbfc943
(docker exec -it 3805ddb6c9e3 redis-cli -p 6381)相当于redis-cli命令,使用某个redis容器的容器id和port充当redis客户端用

redis客户端连接集群,使用Another Redis Desktop Manager
下载:https://gitee.com/qishibo/AnotherRedisDesktopManager/releases

在这里插入图片描述
使用Another Redis Desktop Manager以cluster模式连接slave节点时,可以随意读写,其实你的命令重定向给了它的master,
使用命令行以cluster登录任一slave节点,例如:
docker exec -it a5fb5b9b7ff1 redis-cli -p 6385 -c(注意-c是以cluster模式启动redis客户端),提示如下
Redirected to slot [7142] located at 172.17.0.3:6382

redis cluster缺陷:根据原理,集群可以对写分流以减轻压力,但对热点数据的读无能为力。本质上集群每个节点保存的不同数据,当客户端请求时,节点会判断key属不属于自己管辖,不属于自己就重定向给负责的节点,所以对热点key的读取本质还是单个redis服务为你服务,没有集群的效果。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值