Docker 网络之redis集群搭建

本文涉及的产品
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
简介: Docker 网络之redis集群搭建

Redis 集群搭建

在这里插入图片描述

# 新建一个 redis 的网卡,该网卡下仅部署redis服务
[root]# docker network create redis --subnet 172.38.0.0/16 --driver bridge 
84cd07182d37dd7d792cf9b7996e5edc46805de849ceaca6234c4f63d22f5c9d

# 通过脚本对 redis 进行配置
for port in $(seq 1 6); \  #for循环 循环6次 
do \
#创建配置文件
mkdir -p /mydata/redis/node-${port}/conf 
#创建conf文件
touch /mydata/redis/node-${port}/conf/redis.conf

#对conf进行具体配置
cat  << EOF >/mydata/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.38.0.1${port} #连接具体的ip
cluster-announce-port 6379
cluster-announce-bus-port 16379
appendonly yes
EOF
done

#启动redis服务
docker run -p 6371:6379 -p 16371:16379 --name redis-1 \
-v /mydata/redis/node-1/data:/data \
-v /mydata/redis/node-1/conf/redis.conf:/etc/redis/redis.conf \
-d --net redis --ip 172.38.0.11 redis:5.0.9-alpine3.11 redis-server /etc/redis/redis.conf
done

docker run -p 6376:6379 -p 16376:16379 --name redis-6 \
-v /mydata/redis/node-6/data:/data \
-v /mydata/redis/node-6/conf/redis.conf:/etc/redis/redis.conf \
-d --net redis --ip 172.38.0.16 redis:5.0.9-alpine3.11 redis-server /etc/redis/redis.conf
done


# 一次启动6个redis 服务
docker run -p 637${port}:6379 -p 1637${port}:16379 --name redis-${port} \
-v /mydata/redis/node-${port}/data:/data \
-v /mydata/redis/node-${port}/conf/redis.conf:/etc/redis/redis.conf \
-d --net redis --ip 172.38.0.1${port} redis:5.0.9-alpine3.11 redis-server /etc/redis/redis.conf
done

六个redis服务启动成功:
在这里插入图片描述

#我们进入一个redis服务,这里进入redis-1
[root]# docker exec -it redis-1 /bin/sh  #redis没有bash目录,有sh目录

#进入之后我们开始配置集群
/data # redis-cli --cluster create 172.38.0.11:6379 172.38.0.12:6379 172.38.0.13:6379 172.38.0.14:6379 172.38.0.15:6379 172.38.0.16:6379 --cluster-replicas 1
>>> Performing hash slots allocation on 6 nodes...
Master[0] -> Slots 0 - 5460
Master[1] -> Slots 5461 - 10922
Master[2] -> Slots 10923 - 16383
Adding replica 172.38.0.15:6379 to 172.38.0.11:6379
Adding replica 172.38.0.16:6379 to 172.38.0.12:6379
Adding replica 172.38.0.14:6379 to 172.38.0.13:6379
M: 50d5736ceac77467a429af63d5341aa978541a9b 172.38.0.11:6379
   slots:[0-5460] (5461 slots) master
M: 680dd64e42a7480f1a635191e569b0141f967606 172.38.0.12:6379
   slots:[5461-10922] (5462 slots) master
M: d54f24032cfc73d262c199f6b7872d5f14b87dcd 172.38.0.13:6379
   slots:[10923-16383] (5461 slots) master
S: a7424534332bf2702a0ff164aa4e375b00c707ff 172.38.0.14:6379
   replicates d54f24032cfc73d262c199f6b7872d5f14b87dcd
S: 92297537e29795e48073261aed424b8cda53a387 172.38.0.15:6379
   replicates 50d5736ceac77467a429af63d5341aa978541a9b
S: f17683eb9d29f2326d0d2b02947f4651fa8ad9d3 172.38.0.16:6379
   replicates 680dd64e42a7480f1a635191e569b0141f967606
Can I set the above configuration? (type 'yes' to accept): yes
>>> Nodes configuration updated
>>> Assign a different config epoch to each node
>>> Sending CLUSTER MEET messages to join the cluster
Waiting for the cluster to join
....
>>> Performing Cluster Check (using node 172.38.0.11:6379)
M: 50d5736ceac77467a429af63d5341aa978541a9b 172.38.0.11:6379
   slots:[0-5460] (5461 slots) master
   1 additional replica(s)
S: 92297537e29795e48073261aed424b8cda53a387 172.38.0.15:6379
   slots: (0 slots) slave
   replicates 50d5736ceac77467a429af63d5341aa978541a9b
S: f17683eb9d29f2326d0d2b02947f4651fa8ad9d3 172.38.0.16:6379
   slots: (0 slots) slave
   replicates 680dd64e42a7480f1a635191e569b0141f967606
S: a7424534332bf2702a0ff164aa4e375b00c707ff 172.38.0.14:6379
   slots: (0 slots) slave
   replicates d54f24032cfc73d262c199f6b7872d5f14b87dcd
M: d54f24032cfc73d262c199f6b7872d5f14b87dcd 172.38.0.13:6379
   slots:[10923-16383] (5461 slots) master
   1 additional replica(s)
M: 680dd64e42a7480f1a635191e569b0141f967606 172.38.0.12:6379
   slots:[5461-10922] (5462 slots) master
   1 additional replica(s)
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
#到这里 集群的配置 已经完成

测试使用:

# 查看集群信息
/data # redis-cli -c
127.0.0.1:6379> cluster info
cluster_state:ok
cluster_slots_assigned:16384
cluster_slots_ok:16384
cluster_slots_pfail:0
cluster_slots_fail:0
cluster_known_nodes:6
cluster_size:3
cluster_current_epoch:6
cluster_my_epoch:1
cluster_stats_messages_ping_sent:441
cluster_stats_messages_pong_sent:448
cluster_stats_messages_sent:889
cluster_stats_messages_ping_received:443
cluster_stats_messages_pong_received:441
cluster_stats_messages_meet_received:5
cluster_stats_messages_received:889
127.0.0.1:6379> 

# 查看节点数
127.0.0.1:6379> cluster nodes
92297537e29795e48073261aed424b8cda53a387 172.38.0.15:6379@16379 slave 50d5736ceac77467a429af63d5341aa978541a9b 0 1625802216341 5 connected
f17683eb9d29f2326d0d2b02947f4651fa8ad9d3 172.38.0.16:6379@16379 slave 680dd64e42a7480f1a635191e569b0141f967606 0 1625802217342 6 connected
a7424534332bf2702a0ff164aa4e375b00c707ff 172.38.0.14:6379@16379 slave d54f24032cfc73d262c199f6b7872d5f14b87dcd 0 1625802216000 4 connected
d54f24032cfc73d262c199f6b7872d5f14b87dcd 172.38.0.13:6379@16379 master - 0 1625802217844 3 connected 10923-16383
680dd64e42a7480f1a635191e569b0141f967606 172.38.0.12:6379@16379 master - 0 1625802216541 2 connected 5461-10922
50d5736ceac77467a429af63d5341aa978541a9b 172.38.0.11:6379@16379 myself,master - 0 1625802216000 1 connected 0-5460

在这里插入图片描述
Docker 搭建redis集群成功!
树苗如果因为怕痛而拒绝修剪,那就永远不会成材。

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore &nbsp; &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
29天前
|
NoSQL Redis Docker
Docker中Redis数据迁移到本地
Docker中Redis数据迁移到本地
19 1
|
1天前
|
存储 NoSQL Linux
Redis入门到通关之Redis5种网络模型详解
Redis入门到通关之Redis5种网络模型详解
|
5天前
|
运维 前端开发 Devops
云效产品使用报错问题之流水线打包docker镜像时报网络代理有问题如何解决
本合集将整理呈现用户在使用过程中遇到的报错及其对应的解决办法,包括但不限于账户权限设置错误、项目配置不正确、代码提交冲突、构建任务执行失败、测试环境异常、需求流转阻塞等问题。阿里云云效是一站式企业级研发协同和DevOps平台,为企业提供从需求规划、开发、测试、发布到运维、运营的全流程端到端服务和工具支撑,致力于提升企业的研发效能和创新能力。
|
29天前
|
NoSQL 关系型数据库 MySQL
安装Docker&镜像容器操作&使用Docker安装部署MySQL,Redis,RabbitMQ,Nacos,Seata,Minio
安装Docker&镜像容器操作&使用Docker安装部署MySQL,Redis,RabbitMQ,Nacos,Seata,Minio
380 1
|
1月前
|
负载均衡 算法 应用服务中间件
Docker Swarm总结+service创建和部署、overlay网络以及Raft算法(2/5)
Docker Swarm总结+service创建和部署、overlay网络以及Raft算法(2/5)
113 0
|
1月前
|
NoSQL 关系型数据库 MySQL
Docker安装详细步骤及相关环境安装配置(mysql、jdk、redis、自己的私有仓库Gitlab 、C和C++环境以及Nginx服务代理)
Docker安装详细步骤及相关环境安装配置(mysql、jdk、redis、自己的私有仓库Gitlab 、C和C++环境以及Nginx服务代理)
221 0
|
1月前
|
NoSQL Redis 数据安全/隐私保护
在Docker中设置Redis的密码
在Docker中设置Redis的密码
113 0
|
NoSQL Redis API
Redis代码阅读3--Redis网络监听(1)
 接下来的三篇文章将对Redis的网络监听流程及涉及到事件库和各个主要方法进行介绍。 在介绍 redis的网络监听流程和事件库之前,我们先设想一下,如果我们不采用 libevent 等流行的开源库进行基于事件的网络监听,而是自己去实现一套基于事件的库去进行网络监听,需要考虑些什么,然后我们带着这些问题去分析 Redis是如果通过少量的代码来完成这个工作的。
854 0
|
NoSQL Redis 算法
Redis代码阅读3--Redis网络监听(2)
 这篇文章接上一篇,主要介绍Redis网络监听流程的各个步骤。 aeCreateEventLoop :创建用于循环监听的 eventLoop , Redis 支持主流的三种事件触发机制: select ,epoll, kqueue, 可以通过在 config.
782 0
|
NoSQL Redis
Redis代码阅读3--Redis网络监听(3)
 是介绍Redis网络监听的最后一篇文章,着重分析定时时间处理函数serverCron,这个函数其实已经和网络监听没多大关系了,当时因为其绑定在Redis自定义的事件库的定时事件上,所以放到一起来讲。
719 0

热门文章

最新文章