利用 docker 搭建 redis 集群

本文涉及的产品
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
简介: 本文是博主学习docker的记录,希望对大家有所帮助。

创建redis的docker网端

这里设置为172.11.0.0/16

docker network create --driver bridge --subnet 127.11.0.0/16 --gateway 172.11.0.1 redis-net

在这里插入图片描述

创建redis的配置文件

先创建shell脚本来生成redis配置文件

vim redis-node-config.sh

输入以下内容

#!/bin/bash

# 配置文件存放路径
BASE_PATH=/test/redis
# 创建个数
REDIS_COUNT=6
# ip前缀
REDIS_IP=172.11.0.1

for port in $(seq 1 $REDIS_COUNT); 
do 
mkdir -p $BASE_PATH/node-$port/conf
mkdir -p $BASE_PATH/node-$port/data
touch $BASE_PATH/node-$port/conf/redis.conf
cat <<EOF > $BASE_PATH/node-$port/conf/redis.conf
port 6379
# 生产环境中为了安全性请绑定当前机器的ip
bind 0.0.0.0 
# 启动集群模式                        
cluster-enabled yes                    
cluster-config-file nodes.conf
# redis节点宕机被发现的时间
cluster-node-timeout 5000            
cluster-announce-ip $REDIS_IP$port
cluster-announce-port 6379
cluster-announce-bus-port 16379
appendonly yes
EOF
done

赋予脚本可执行权限

chmod +x redis-node-config.sh

运行脚本创建配置文件

./redis-node-config.sh

查看脚本是否成功生成文件
在这里插入图片描述

脚本启动redis容器

创建启动脚本

vim redis-run.sh

输入以下内容

#!/bin/bash

# 配置文件存放路径
BASE_PATH=/test/redis
# 创建个数
REDIS_COUNT=6
# ip前缀
REDIS_IP=172.11.0.1

for port in $(seq 1 $REDIS_COUNT);
do
docker run -d  -p 637$port:6379 -p 1667$port:16379 \
--name redis-$port \
-v $BASE_PATH/node-$port/data:/data \
-v $BASE_PATH/node-$port/conf/redis.conf:/etc/redis/redis.conf \
--net redis-net \
--ip $REDIS_IP$port \
redis redis-server /etc/redis/redis.conf
done

赋予脚本可执行权限

chmod +x redis-run.sh

运行脚本启动redis容器

./redis-run.sh

在这里插入图片描述

开始搭建redis集群

# 进入其中一个容器
docker exec -it redis-1 /bin/bash
# 说明:--cluster :使用cluster的方式搭建集群 --cluster-replicas 1 :一个主机有一个从机
redis-cli --cluster create 172.11.0.11:6379 172.11.0.12:6379 172.11.0.13:6379 172.11.0.14:6379 172.11.0.15:6379 172.11.0.16:6379 --cluster-replicas 1

执行过程中需要输入一次yes
在这里插入图片描述

测试redis集群

# 进入redis-1容器
docker exec -it redis-1 /bin/bash
# -c:以集群方式启动
redis-cli -c
# 设置一个键值对
set name berbai01

这里显示是172.11.0.12上的redis处理了set
在这里插入图片描述

# 查看集群节点
cluster nodes

三主三从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
目录
相关文章
|
8天前
|
负载均衡 监控 NoSQL
Redis的几种主要集群方案
【5月更文挑战第15天】Redis集群方案包括主从复制(基础,读写分离,手动故障恢复)、哨兵模式(自动高可用,自动故障转移)和Redis Cluster(官方分布式解决方案,自动分片、容错和扩展)。此外,还有Codis、Redisson和Twemproxy等工具用于代理分片和负载均衡。选择方案需考虑应用场景、数据量和并发需求,权衡可用性、性能和扩展性。
182 2
|
8天前
|
存储 监控 负载均衡
保证Redis的高可用性是一个涉及多个层面的任务,主要包括数据持久化、复制与故障转移、集群化部署等方面
【5月更文挑战第15天】保证Redis高可用性涉及数据持久化、复制与故障转移、集群化及优化策略。RDB和AOF是数据持久化方法,哨兵模式确保故障自动恢复。Redis Cluster实现分布式部署,提高负载均衡和容错性。其他措施包括身份认证、多线程、数据压缩和监控报警,以增强安全性和稳定性。通过综合配置与监控,可确保Redis服务的高效、可靠运行。
180 2
|
6天前
|
Docker 容器
docker部署omni_usdt 0.8.0版本私有链集群环境
docker部署omni_usdt 0.8.0版本私有链集群环境
|
8天前
|
存储 NoSQL Redis
Redis源码、面试指南(5)多机数据库、复制、哨兵、集群(下)
Redis源码、面试指南(5)多机数据库、复制、哨兵、集群
224 1
|
8天前
|
监控 NoSQL Redis
Redis源码、面试指南(5)多机数据库、复制、哨兵、集群(上)
Redis源码、面试指南(5)多机数据库、复制、哨兵、集群
277 0
|
8天前
|
NoSQL Redis Docker
Mac上轻松几步搞定Docker与Redis安装:从下载安装到容器运行实测全程指南
Mac上轻松几步搞定Docker与Redis安装:从下载安装到容器运行实测全程指南
34 0
|
8天前
|
存储 监控 NoSQL
Redis哨兵&分片集群
Redis哨兵&分片集群
32 0
|
8天前
|
NoSQL Linux Redis
本地虚拟机centos7通过docker安装主从redis3.2
本地虚拟机centos7通过docker安装主从redis3.2
24 0
|
8天前
|
NoSQL 算法 Java
深入浅出Redis(八):Redis的集群模式
深入浅出Redis(八):Redis的集群模式
|
8天前
|
监控 Docker 容器
【Docker 专栏】Docker Swarm 集群的扩展与缩容策略
【5月更文挑战第8天】本文探讨了Docker Swarm集群的扩展与缩容策略。集群扩展可提高性能、增强可用性和适应业务发展,可通过手动或自动方式实现。缩容则需考虑业务需求、资源利用率和节点状态,可手动或按策略执行。关键步骤包括添加/移除节点及任务迁移。注意数据同步、监控评估和测试验证。案例分析和总结强调了灵活管理对保持集群最佳状态的重要性。
【Docker 专栏】Docker Swarm 集群的扩展与缩容策略