Docker 网络之redis集群搭建

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Tair(兼容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
目录
相关文章
|
2月前
|
存储 安全 数据安全/隐私保护
Docker进阶:网络配置与服务编排
【10月更文挑战第17天】随着微服务架构的流行,Docker作为容器化技术的领导者,在企业级应用部署中扮演着重要角色。掌握Docker的高级特性,特别是网络配置和服务编排,对于构建高效、可维护的分布式系统至关重要。本文将深入探讨Docker的网络配置选项、容器间通信机制、端口映射技术以及使用Docker Compose进行多容器应用部署的最佳实践。
62 8
|
1天前
|
NoSQL 关系型数据库 MySQL
《docker高级篇(大厂进阶):4.Docker网络》包括:是什么、常用基本命令、能干嘛、网络模式、docker平台架构图解
《docker高级篇(大厂进阶):4.Docker网络》包括:是什么、常用基本命令、能干嘛、网络模式、docker平台架构图解
79 56
《docker高级篇(大厂进阶):4.Docker网络》包括:是什么、常用基本命令、能干嘛、网络模式、docker平台架构图解
|
22小时前
|
NoSQL 算法 Redis
docker高级篇(大厂进阶):安装redis集群
docker高级篇(大厂进阶):安装redis集群
39 24
|
13天前
|
安全 Docker 容器
docker的默认网络模式有哪些
Docker 默认网络模式包括:1) bridge:默认模式,各容器分配独立IP,可通过名称或IP通信;2) host:容器与宿主机共享网络命名空间,性能最优但有安全风险;3) none:容器隔离无网络配置,适用于仅需本地通信的场景。
27 6
|
17天前
|
存储 缓存 监控
Docker容器性能调优的关键技巧,涵盖CPU、内存、网络及磁盘I/O的优化策略,结合实战案例,旨在帮助读者有效提升Docker容器的性能与稳定性。
本文介绍了Docker容器性能调优的关键技巧,涵盖CPU、内存、网络及磁盘I/O的优化策略,结合实战案例,旨在帮助读者有效提升Docker容器的性能与稳定性。
50 7
|
24天前
|
安全 网络安全 数据安全/隐私保护
利用Docker的网络安全功能来保护容器化应用
通过综合运用这些 Docker 网络安全功能和策略,可以有效地保护容器化应用,降低安全风险,确保应用在安全的环境中运行。同时,随着安全威胁的不断变化,还需要持续关注和研究新的网络安全技术和方法,不断完善和强化网络安全保护措施,以适应日益复杂的安全挑战。
42 5
|
2月前
|
Docker 容器
docker swarm启动服务并连接到网络
【10月更文挑战第16天】
43 5
|
2月前
|
调度 Docker 容器
docker swarm创建覆盖网络
【10月更文挑战第16天】
37 5
|
2月前
|
负载均衡 应用服务中间件 数据安全/隐私保护
docker swarm 创建 Swarm 模式下的网络
【10月更文挑战第14天】
53 6
|
2月前
|
负载均衡 网络协议 关系型数据库
docker swarm 使用网络启动服务
【10月更文挑战第15天】
35 4