docker下搭建redis集群

1. 环境准备

准备好Linux系统机器,并安装好docker,阅读这篇文章前请先了解清楚docker的基本知识并且会熟悉运用docker的常用命令。学习docker基础知识可以参考这篇博文

安装好并启动docker后就可以开始搭建redis了

2. docker容器下安装redis

本篇文章我们安装redis6.0.6版本,执行以下命令直接下载redis6.0.6版本镜像

复制代码
#dokcer pull 镜像名:版本号
docker pull redis:6.0.6

安装好后再执行 docker images命令,查看到redis6.0.6镜像则安装成功

3. 搭建redis集群

安装好redis镜像后,此时redis还只是单体,我们需要搭建集群,集群配置如下:

  • docker端口号→宿主机对外暴露的端口:7000→7000,7001→7001,7002→7002,7003→7003,7004→7004,7005→7005
  • 挂载目录 :data(数据) → /usr/local/docker/redis/端口号/data/
    conf(配置文件)→ /usr/local/docker/端口号/redis.conf
  • 集群模式:三主三从
  • 节点容器名称:redis-7000,redis-7001,redis-7002,redis-7003,redis-7004,redis-7005

回到linux,首先创建好挂载目录

复制代码
# 批量创建redis节点7000-7005目录
mkdir -p /usr/local/docker/redis/700{0,1,2,3,4,5}/data

然后分别创建个节点的配置文件,并添加配置信息

复制代码
vim /usr/local/docker/redis/7000/redis.conf

# 添加以下配置信息
port 7000									
protected-mode no								
daemonize no
appendonly yes									
cluster-enabled yes							
cluster-config-file nodes.conf					
cluster-node-timeout 20000						

----------------------------------------------------------------------
配置说明:
port # 节点端口
protected-mode # 保护模式,默认值 yes,即开启
daemonize # 是否以守护线程的方式启动(后台启动),默认 no;
appendonly # 是否开启 AOF 持久化模式,默认 no;
cluster-enabled # 是否开启集群模式,默认 no
cluster-config-file # 集群节点信息文件
cluster-node-timeout # 集群节点连接超时时间(ms)

创建7000节点配置文件后将它复制到其他节点目录下,注意复制到其他目录需要将配置文件的port改为该节点的端口号

复制代码
cp /usr/local/docker/redis/7000/redis.conf /usr/local/docker/redis/7001
cp /usr/local/docker/redis/7000/redis.conf /usr/local/docker/redis/7002
cp /usr/local/docker/redis/7000/redis.conf /usr/local/docker/redis/7003
cp /usr/local/docker/redis/7000/redis.conf /usr/local/docker/redis/7004
cp /usr/local/docker/redis/7000/redis.conf /usr/local/docker/redis/7005

接下来就可以创建每个节点的docker容器,以7000节点为例

复制代码
# 创建7000节点容器
docker run 
-p 7000:7000 
-v /usr/local/docker/redis/7000/redis.conf:/etc/redis/redis.conf 
-v /usr/local/docker/redis/7000/data:/data 
--name redis-7000 
--net host 
-d redis:6.0.6 redis-server /etc/redis/redis.conf

----------------------------------------------------------------
命令说明
-p 7000:7000 		#宿主机端口号:容器端口	端口映射
-v /usr/local/docker/redis/7000/redis.conf:/etc/redis/redis.conf 	#宿主机目录:容器目录  redis配置文件挂载
-v /usr/local/docker/redis/7000/data:/data 	#redis数据文件挂载
--name redis-7000 		# 给容器起个名称
--net host 			# 指定网络类型为host,即与宿主机使用同一网络
-d redis:6.0.6 redis-server /etc/redis/redis.conf	#运行容器 并使用配置文件启动容器内的 redis-server  

然后分别执行以下命令创建并运行其他节点容器

复制代码
# 创建7001节点容器
docker run 
-p 7001:7001 
-v /usr/local/docker/redis/7001/redis.conf:/etc/redis/redis.conf 
-v /usr/local/docker/redis/7001/data:/data 
--name redis-7001 
--net host 
-d redis:6.0.6 redis-server /etc/redis/redis.conf

# 创建7002节点容器
docker run 
-p 7002:7002 
-v /usr/local/docker/redis/7002/redis.conf:/etc/redis/redis.conf 
-v /usr/local/docker/redis/7002/data:/data 
--name redis-7002 
--net host 
-d redis:6.0.6 redis-server /etc/redis/redis.conf

# 创建7003节点容器
docker run 
-p 7003:7003 
-v /usr/local/docker/redis/7003/redis.conf:/etc/redis/redis.conf 
-v /usr/local/docker/redis/7003/data:/data 
--name redis-7003 
--net host 
-d redis:6.0.6 redis-server /etc/redis/redis.conf

# 创建7004节点容器
docker run 
-p 7004:7004 
-v /usr/local/docker/redis/7004/redis.conf:/etc/redis/redis.conf 
-v /usr/local/docker/redis/7004/data:/data 
--name redis-7004 
--net host 
-d redis:6.0.6 redis-server /etc/redis/redis.conf

# 创建7005节点容器
docker run 
-p 7005:7005 
-v /usr/local/docker/redis/7005/redis.conf:/etc/redis/redis.conf 
-v /usr/local/docker/redis/7005/data:/data 
--name redis-7005 
--net host 
-d redis:6.0.6 redis-server /etc/redis/redis.conf

此时我们已经创建好了所有节点,但各个节点还是相互独立的,我们需要将他们整合成集群,执行以下命令建立集群

复制代码
redis-cli --cluster create --cluster-replicas 1 
192.168.93.71:7000 192.168.93.71:7001 192.168.93.71:7002 
192.168.93.71:7003 192.168.93.71:7004 192.168.93.71:7005

出现以下结果则表示集群创建成功

我们可以执行以下命令进入其中一个节点查看集群信息

复制代码
# 进入7000节点容器
docker exec -it redis-7000 bash
# 进入redis
redis-cli -p 7000
# 查看集群喜喜
cluster nodes

出现以下结果表示集群创建成功

相关推荐
NCIN EXPE8 小时前
redis 使用
数据库·redis·缓存
hERS EOUS8 小时前
nginx 代理 redis
运维·redis·nginx
NoSi EFUL10 小时前
redis存取list集合
windows·redis·list
Deepincode10 小时前
Redis源码探究系列—SDS 扩容策略与内存预分配机制
redis
eRTE XFUN10 小时前
docker 安装 mysql
mysql·adb·docker
程序员老邢11 小时前
【技术底稿 19】Redis7 集群密码配置 + 权限锁死 + 磁盘占满连锁故障真实排查全记录
java·服务器·经验分享·redis·程序人生·微服务
eEKI DAND11 小时前
对Docker部署的MySQL中的数据进行备份恢复
mysql·docker·容器
东北甜妹12 小时前
Docker 瘦身
阿里云·docker·eureka
coNh OOSI12 小时前
Redis——Windows安装
数据库·windows·redis
Fᴏʀ ʏ꯭ᴏ꯭ᴜ꯭.12 小时前
Redis主从复制配置全攻略
数据库·redis·笔记