Docker高级篇-Docker容器内Redis集群配置

在这里插入图片描述

1、三主三从集成配置

1.1、关闭防火墙、启动docker服务

systemcl start docker 

1.2、新建6个docker容器实例

docker run -d --name redis-node-1 --net host --privileged=true -v /temp/redis/share/redis-node-1:/data redis --cluster-enabled yes --appendonly yes --port 6381

docker run -d --name redis-node-2 --net host --privileged=true -v /temp/redis/share/redis-node-2:/data redis --cluster-enabled yes --appendonly yes --port 6382

docker run -d --name redis-node-3 --net host --privileged=true -v /temp/redis/share/redis-node-3:/data redis --cluster-enabled yes --appendonly yes --port 6383

docker run -d --name redis-node-4 --net host --privileged=true -v /temp/redis/share/redis-node-4:/data redis --cluster-enabled yes --appendonly yes --port 6384

docker run -d --name redis-node-5 --net host --privileged=true -v /temp/redis/share/redis-node-5:/data redis --cluster-enabled yes --appendonly yes --port 6385

docker run -d --name redis-node-6 --net host --privileged=true -v /temp/redis/share/redis-node-6:/data redis --cluster-enabled yes --appendonly yes --port 6386

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

1.3、进入容器redis-node-1,构建主从关系

# 进入redis-node-1节点
docker exec -it redis-node-1 /bin/bash

# 构建主从关系,以下的ip可以在宿主主机上通过ifconfig查看(ens33)
redis-cli --cluster create 192.168.126.129:6381 192.168.126.129:6382 192.168.126.129:6383 192.168.126.129:6384 192.168.126.129:6385 192.168.126.129:6386 --cluster-replicas 1
  • 实际操作
    在这里插入图片描述
    在这里插入图片描述在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

1.4、以redis-node-1为切入点,查看节点状态

redis-cli -p 6381

cluster info

cluster nodes

在这里插入图片描述在这里插入图片描述

在这里插入图片描述

1.5、如果docker启动报错

只需要重新启动即可。

docker start 容器ID

在这里插入图片描述

1.6、redis集群读写路由增强正确案例

redis-cli -p 6381 -c

FLUSHALL

在这里插入图片描述

1.7、查看集群信息

redis-cli --cluster check 192.168.126.129:6381

在这里插入图片描述

1.8、主从容错切换迁移

在这里插入图片描述

  • 先停止集群1(redis-node-1)
    在这里插入图片描述- 再次查看集群信息,发现节点1(redis-node-1)已经停止

在这里插入图片描述

  • 启动6382节点,我们发现此时6382变成了master,原来6381由master变成了salve

在这里插入图片描述

  • 再次启动redis-node-1,我们发现启动后的redis-node-1依然是slave,而redis-node-2是master

#启动redis-node-1
docker start redis-node-1

(
#停止redis-node-1的命令
docker stop redis-node-1
)

#查看集群状态
cluster nodes

在这里插入图片描述
在这里插入图片描述

1.9、主从扩容

在这里插入图片描述- 新建6387、6388两个节点+新建后启动+查看是否有8个节点

docker run -d --name redis-node-7 --net host --privileged=true -v /temp/redis/share/redis-node-7:/data redis --cluster-enabled yes --appendonly yes --port 6387

docker run -d --name redis-node-8 --net host --privileged=true -v /temp/redis/share/redis-node-8:/data redis --cluster-enabled yes --appendonly yes --port 6388

docker ps

在这里插入图片描述

  • 进入6387容器实例内部
docker exec -it redis-node-7 /bin/bash

在这里插入图片描述

  • 将新增的6387节点作为master加入原集群
# 6381相当于6387的引路人,将6387推荐进入集群
redis-cli --cluster add-node 192.168.126.129:6387 192.168.126.129:6381

在这里插入图片描述
在这里插入图片描述在这里插入图片描述

  • 检查集群情况第1次
redis-cli --cluster check 192.168.126.129:6387

在这里插入图片描述

  • 重新分派槽号
redis-cli --cluster reshard 192.168.126.129:6381

在这里插入图片描述在这里插入图片描述在这里插入图片描述

  • 检查集群情况第2次
redis-cli --cluster check 192.168.126.129:6387

在这里插入图片描述

  • 原来的三个主机都分出来相同的槽点数给新的主节点,并不是全部洗牌,重新分配

在这里插入图片描述

  • 为主节点6387分配从节点6388
# redis-cli --cluster add-node 192.168.126.129:6388 192.168.126.129:6387 --cluster-slave --cluster-master-id 主节点7容器ID

redis-cli --cluster add-node 192.168.126.129:6388 192.168.126.129:6387 --cluster-slave --cluster-master-id a7e68cb432df591df220ad76700ea6bb43093ddc

在这里插入图片描述
在这里插入图片描述

  • 检查集群情况第3次
redis-cli --cluster check 192.168.126.129:6388

在这里插入图片描述

1.10、主从缩容

在这里插入图片描述
-获取redis-node-7的容器ID

redis-cli --cluster check 192.168.126.129:6387
  • 将6388删除

# redis-cli --cluster del-node 192.168.126.129:6388 容器ID

redis-cli --cluster del-node 192.168.126.129:6388 19ad55089a4443f5c17260311ab4ddc50d7981d2

在这里插入图片描述

在这里插入图片描述

  • 检查集群情况第一次:只剩下7个节点
    在这里插入图片描述
  • 重新分配槽点,本案例中时将空余出来的槽点全部分配给节点1
redis-cli --cluster reshard 192.168.126.129:6381

  • 检查集群情况第2次:6387的槽点数已全部分出,目前6387槽点数为0

在这里插入图片描述
在这里插入图片描述

  • 将6387节点删除
redis-cli --cluster del-node 192.168.126.129:6387 容器ID

在这里插入图片描述在这里插入图片描述

  • 第三次检查集群情况,又变回了三主三从

在这里插入图片描述

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Docker是一种容器化技术,它可以将应用程序及其依赖项打包成容器,提供了快速、轻量级和可移植的环境。Nginx是一个高性能的Web服务器和反向代理服务器,它可以处理大量的并发连接。Lua是一种轻量级的脚本语言,可以嵌入到Nginx中,用于定制化和扩展性能。Redis是一个高性能的内存键值存储系统,它支持多种数据结构,并提供了持久化功能。 将这些技术结合起来,可以构建一个高性能、可扩展和可靠的Web应用系统。首先,我们可以使用Docker来创建一个包含Nginx、Lua和Redis容器环境。Nginx可以作为Web服务器,将用户请求转发到不同的后端服务,并通过使用Lua脚本来增加自定义的功能和处理逻辑。Redis可以作为Nginx的缓存数据库,存储一些频繁使用的数据,以提高系统的响应速度和性能。 使用Docker可以快速部署整个系统,并且容器之间相互隔离,避免了环境依赖和冲突的问题。同时,通过Docker容器编排工具,我们可以管理和扩展应用程序的实例数量,以满足流量的需求。此外,Docker还能够自动完成部署、升级和回滚等操作,提高了系统的可靠性和可维护性。 总的来说,使用Docker、Nginx、Lua和Redis可以搭建一个高性能、可伸缩和可靠的Web应用系统。这个系统能够提供快速的响应速度、高并发处理能力,并且具备良好的可扩展性和可维护性。同时,通过使用容器化技术,我们可以更简单地部署和管理整个应用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值