专栏首页用户1096981的专栏Dcoker上搭建Redis集群

Dcoker上搭建Redis集群

Redis集群环境配置

首先要创建docker内的网络环境

docker network create redis --subnet 172.28.0.0/16
配置文件的第一种声明方式内网运行,这种方式在虚拟机外电脑上会出现Can't connect to master的错误
for port in $(seq 1 6); \
do \
mkdir -p ~/redis/node-${port}/conf
touch ~/redis/node-${port}/conf/redis.conf
cat << EOF > ~/redis/node-${port}/conf/redis.conf
port 6379
bind 0.0.0.0
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
cluster-announce-ip 172.28.0.1${port}
cluster-announce-port 6379
cluster-announce-bus-port 16379
appendonly yes
protected-mode no
EOF
done

第二种声明方式,cluster-announce-ip cluster-announce-port,cluster-announce-bus-port均声明为后面所设置的宿主机的端口和IP,后续在redission连接集群的时候就不会有问题
for port in $(seq 1 6); \
do \
mkdir -p ~/redis/node-${port}/conf
touch ~/redis/node-${port}/conf/redis.conf
cat << EOF > ~/redis/node-${port}/conf/redis.conf
port 6379
bind 0.0.0.0
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
cluster-announce-ip 192.168.200.129
cluster-announce-port 637${port}
cluster-announce-bus-port 1637${port}
appendonly yes
protected-mode no
EOF
done

依次在docker内启动几台Redis

docker run -p 6371:6379 -p 16371:16379 --name redis-1 \
-v ~/redis/node-1/data:/data \
-v ~/redis/node-1/conf/redis.conf:/etc/redis/redis.conf \
-d --net redis --ip 172.28.0.11 redis:6.0.5 redis-server /etc/redis/redis.conf


docker run -p 6372:6379 -p 16372:16379 --name redis-2 \
-v ~/redis/node-2/data:/data \
-v ~/redis/node-2/conf/redis.conf:/etc/redis/redis.conf \
-d --net redis --ip 172.28.0.12 redis:6.0.5 redis-server /etc/redis/redis.conf

docker run -p 6373:6379 -p 16373:16379 --name redis-3 \
-v ~/redis/node-3/data:/data \
-v ~/redis/node-3/conf/redis.conf:/etc/redis/redis.conf \
-d --net redis --ip 172.28.0.13 redis:6.0.5 redis-server /etc/redis/redis.conf

docker run -p 6374:6379 -p 16374:16379 --name redis-4 \
-v ~/redis/node-4/data:/data \
-v ~/redis/node-4/conf/redis.conf:/etc/redis/redis.conf \
-d --net redis --ip 172.28.0.14 redis:6.0.5 redis-server /etc/redis/redis.conf

docker run -p 6375:6379 -p 16375:16379 --name redis-5 \
-v ~/redis/node-5/data:/data \
-v ~/redis/node-5/conf/redis.conf:/etc/redis/redis.conf \
-d --net redis --ip 172.28.0.15 redis:6.0.5 redis-server /etc/redis/redis.conf

docker run -p 6376:6379 -p 16376:16379 --name redis-6 \
-v ~/redis/node-6/data:/data \
-v ~/redis/node-6/conf/redis.conf:/etc/redis/redis.conf \
-d --net redis --ip 172.28.0.16 redis:6.0.5 redis-server /etc/redis/redis.conf

进入docker机并使用上述的两种方式连接,推荐第二种,因为后续使用redission连接不会出现错误

docker exec -it redis-1 /bin/sh

redis-cli --cluster create 172.28.0.11:6379 172.28.0.12:6379 172.28.0.13:6379 172.28.0.14:6379 172.28.0.15:6379 172.28.0.16:6379 --cluster-replicas 1

redis-cli --cluster create 192.168.200.129:6371 192.168.200.129:6372 192.168.200.129:6373 192.168.200.129:6374 192.168.200.129:6375 192.168.200.129:6376 --cluster-replicas 1
set name Stephen
// docker stop redis-2
cluster nodes
get name

增加配置文件

for port in $(seq 7 8); \
do \
mkdir -p ~/redis/node-${port}/conf
touch ~/redis/node-${port}/conf/redis.conf
cat << EOF > ~/redis/node-${port}/conf/redis.conf
port 6379
bind 0.0.0.0
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
cluster-announce-ip 172.28.0.${port}
cluster-announce-port 6379
cluster-announce-bus-port 16379
appendonly yes
protected-mode no
EOF
done

增加节点

docker run -p 6377:6379 -p 16377:16379 --name redis-7 \
-v ~/redis/node-7/data:/data \
-v ~/redis/node-7/conf/redis.conf:/etc/redis/redis.conf \
-d --net redis --ip 172.28.0.7 redis:6.0.5 redis-server /etc/redis/redis.conf

扩容和迁移哈希槽

redis-cli --cluster add-node 192.168.200.129:6377 192.168.200.129:6371
redis-cli --cluster reshard 192.168.200.129:6371 --cluster-from
ace4dd7a1bb73e41b1f7a333a3985b97e7924674,a217ca96441fa2b1a7c6fe76488b747eba4fc96d,166f6ff5a32801d938408124edd86bb88206697b --cluster-to e2897d53e41c9d6f84bd2d405d36247aeefee148 --cluster-slots 100

参考https://stephen520.cn/blog/10271

文章分享自微信公众号:
微瞰技术

本文参与 腾讯云自媒体分享计划 ,欢迎热爱写作的你一起参与!

作者:赵镇
原始发表时间:2021-08-26
如有侵权,请联系 cloudcommunity@tencent.com 删除。
登录 后参与评论
0 条评论

相关文章

  • Dcoker搭建zookeeper集群操作

    使用 ZK 命令行客户端连接 ZK 因为刚才我们启动的那个 ZK 容器并没有绑定宿主机的端口, 因此我们不能直接访问它. 但是我们可以通过 Docker 的 l...

    大忽悠爱学习
  • 玩转Redis集群(上)Redis集群搭建

    要想搭建一个最简单的Redis集群,那么至少需要6个节点:3个Master和3个Slave。为什么需要3个Master呢?如果你了解过Hadoop/Storm/...

    用户2890438
  • redis集群搭建

    程序员同行者
  • 搭建Redis集群

    汪凡
  • Redis集群搭建

    1.所有的Redis节点彼此互联(PING-PONG机制),内部使用二进制协议优化传输速度和带宽 2.节点的fail是通过集群中超过半数的节点检测失效时才生效 ...

    江南一点雨
  • 搭建redis集群

    redis的安装此篇不做说明,可以参考:https://www.cnblogs.com/lm970585581/p/9909957.html

    HUC思梦
  • Redis集群搭建

    在 redis3.0之前,redis使用的哨兵架构,它借助 sentinel 工具来监控 master 节点的状态;如果 master 节点异常,则会做主从切换...

    jwangkun
  • Redis集群搭建

    a.官网下载Redis安装包 找到redis.windows-service.conf 调整相关端口 密码 绑定地址配置【配置RedisMaster库】

    全栈程序员站长
  • 搭建Redis集群

    在上一篇我们已经介绍了Redis集群分区的规则,在这一篇我们开始上干货,真真正正的搭建一个Redis集群。搭建Redis集群主要分3步:

    吉林乌拉
  • Redis集群搭建

    山海散人
  • Redis 集群搭建

    然后保存退出即可(按 ESC 键后,输入:wq,回车即可),保存后对该脚本文件进行授权:chmod u+x start-all.sh。(同理,我们也可以配置一个...

    全栈程序员站长
  • redis集群搭建

    redis cluster(redis集群)是redis3.0之后的版本才支持的架构,和其他集群一样,redis集群也是为了解决单台服务器不够用的情况。redi...

    端碗吹水
  • docker搭建redis集群

    运行redis镜像 首先使用docker启动3个redis容器服务,分别使用到6379、6380、6381端口 docker run --name redis-...

    似水的流年
  • 搭建Redis Cluster集群

    Redis Cluster提供了一种运行Redis安装的方法,在该安装中,数据会 在多个Redis节点之间自动分片。Redis Cluster 在分区期间还提供...

    Petrochor
  • 玩转Redis集群(上)

    要想搭建一个最简单的Redis集群,那么至少需要6个节点:3个Master和3个Slave。为什么需要3个Master呢?如果你了解过Hadoop/Storm/...

    Java团长
  • redis集群的搭建

    用户2146856
  • Redis 3.2 集群搭建

    在192.168.145.136 执行135上操作,下载安装redis,创建redis节点 7003 7004 7005,然后修改配置.

    王小明_HIT
  • Docker搭建Redis集群

    1、在服务器的安全组和防火墙中放通相对应的端口,操作系统:centos 7.6,需要放通9000端口

    逸轩
  • Redis的搭建和Redis的集群搭建

    1、Redis的官网:https://redis.io/     Redis的测试网站:http://try.redis.io/

    别先生

扫码关注腾讯云开发者

领取腾讯云代金券