当前位置: 首页 > article >正文

828华为云征文 | 云服务器Flexus X实例,Docker集成搭建Redis集群

828华为云征文 | 云服务器Flexus X实例,Docker集成搭建Redis集群

Redis 集群是一种分布式的 Redis 解决方案,能够在多个节点之间分片存储数据,实现水平扩展和高可用性。与传统的主从架构不同,Redis 集群支持数据自动分片、主节点故障自动切换,并可以在多台服务器之间平衡负载,确保系统的高可用性和数据一致性

搭建Redis集群

1、购买华为云 Flexus X 实例

Flexus云服务器X实例-华为云 (huaweicloud.com)

2、安装docker,并检查安装版本(此处我已安装不做演示)

curl -fsSL https://get.docker.com | bash
docker -version

在这里插入图片描述

3、拉取redis镜像

docker pull redis:6.0.8

在这里插入图片描述

4、使用 docker network create 命令可以创建一个自定义的 Docker 网络,用于连接容器,创建 Redis 集群时,容器需要在同一网络中以便彼此通信

docker network create redis-cluster-net

在这里插入图片描述

5、启动了三个 Redis 容器实例,每个实例位于自定义网络 redis-cluster-net 中,且 Redis 集群模式已开启,作为主节点

docker run -itd --name redis-master1 --network redis-cluster-net -p 6379:6379 -v /data/redis/share/redis-node-1:/data redis:6.0.8 --cluster-enabled yes  --appendonly yes --port 6379

在这里插入图片描述

docker run -itd --name redis-master2 --network redis-cluster-net -p 6380:6379 -v /data/redis/share/redis-node-2:/data redis:6.0.8 --cluster-enabled yes  --appendonly yes --port 6379

在这里插入图片描述

docker run -itd --name redis-master3 --network redis-cluster-net -p 6381:6379 -v /data/redis/share/redis-node-3:/data redis:6.0.8 --cluster-enabled yes  --appendonly yes --port 6379

在这里插入图片描述

6、启动了三个 Redis 从节点redis-slave1, redis-slave2, redis-slave3,接下来需要将这些从节点加入到 Redis 集群中,指定它们分别作为主节点的从节点

docker run -itd --name redis-slave1 --network redis-cluster-net -p 6382:6379 -v /data/redis/share/redis-slave-1:/data redis:6.0.8 --cluster-enabled yes  --appendonly yes --port 6379

在这里插入图片描述

docker run -itd --name redis-slave2 --network redis-cluster-net -p 6383:6379 -v /data/redis/share/redis-slave-2:/data  redis:6.0.8 --cluster-enabled yes  --appendonly yes --port 6379

在这里插入图片描述

docker run -itd --name redis-slave3 --network redis-cluster-net -p 6384:6379 -v /data/redis/share/redis-slave-3:/data  redis:6.0.8 --cluster-enabled yes  --appendonly yes --port 6379

在这里插入图片描述

7、进入之前的任意一个主节点容器,比如 redis-master1

docker exec -it redis-master1 /bin/bash

在这里插入图片描述

8、使用 redis-cli 连接到 Redis 集群并配置从节点,需要知道每个主节点和从节点的容器 IP 地址或主机名,此处查询容器 IP 地址或主机名

docker inspect redis-master1 | grep IPAddress
docker inspect redis-master2 | grep IPAddress
docker inspect redis-master3 | grep IPAddress
docker inspect redis-slave1 | grep IPAddress
docker inspect redis-slave2 | grep IPAddress
docker inspect redis-slave3 | grep IPAddress

在这里插入图片描述

9、将从节点添加到集群,创建 Redis 集群

redis-cli --cluster create 172.18.0.2:6379 172.18.0.3:6379 172.18.0.4:6379 172.18.0.5:6379 \172.18.0.6:6379 172.18.0.7:6379 --cluster-replicas 1

redis-cli:

  • Redis 的命令行工具,用于与 Redis 服务器进行交互。

--cluster create:

  • 指示 redis-cli 以集群模式创建 Redis 集群。

172.18.0.2:6379, 172.18.0.3:6379, 172.18.0.4:6379:

  • 这三个 IP 地址和端口组合代表要添加到集群中的主节点。
  • 主节点负责处理写入和读取请求。

172.18.0.5:6379, 172.18.0.6:6379, 172.18.0.7:6379:

  • 这三个 IP 地址和端口组合代表要添加到集群中的从节点。
  • 从节点是主节点的数据副本,提供冗余和高可用性。

--cluster-replicas 1:

  • 指定每个主节点有一个从节点(副本)。这意味着在创建集群时,Redis 将自动为每个主节点分配一个从节点

在这里插入图片描述

10、检查集群状态

redis-cli -c -p 6379 cluster nodes

在这里插入图片描述

  • 如上redis集群就算部署成功了,接下来可以实现数据存储和管理、集群管理、性能优化等
数据存储和管理

数据写入:使用 SET 和 GET 命令存储和检索数据

redis-cli -c -p 6379 SET mykey "Hello, Redis!"
redis-cli -c -p 6379 GET mykey

数据结构: 利用 Redis 提供的多种数据结构(如列表、集合、有序集合、哈希等)进行复杂数据操作

集群管理

监控集群状态: 使用 CLUSTER INFO 命令获取集群的状态信息

redis-cli -c -p 6379 CLUSTER INFO

添加/删除节点: 根据需求,可以动态地添加或移除节点

性能优化

监控性能: 使用 INFO 命令监控 Redis 的性能指标,了解内存使用、命令统计等

redis-cli -c -p 6379 INFO
总结

在这里插入图片描述

华为云 Flexus X 实例上搭建 Docker 集成的 Redis 集群,体会到了云计算与容器技术的强大结合,继续探索更复杂的架构,提升应用的性能和可扩展性,为发和运维技能提升奠定了坚实的基础,如果有小伙伴和我一样需要持续学习可以一同购买华为云 Flexus X 实例搭建案例学习,此刻也是华为云828 Flexus X实例大力优惠时刻,性价比非常高!

华为云828 Flexus X实例


http://www.kler.cn/news/316877.html

相关文章:

  • 实战19-详情页UI4等分
  • 浅谈C#之SynchronizationContext
  • Fyne ( go跨平台GUI )中文文档- 架构 (八)完结
  • Openpyxl 插入数据添加数据
  • leetcode 437.路径总和III
  • Gitlab runner的简单使用(一)
  • 【Redis】之Geo
  • 红黑树:强大的数据结构之插入详解,附图
  • yolov8多任务模型-目标检测+车道线检测+可行驶区域检测-yolo多检测头代码+教程
  • Spring IOC容器Bean对象管理-注解方式
  • 每日一题——第九十四题
  • pywinauto:Windows桌面应用自动化测试(十)
  • 成都睿明智科技有限公司怎么样?
  • 【深度】为GPT-5而生的「草莓」模型!从快思考—慢思考到Self-play RL的强化学习框架
  • Shader 中的光源
  • 民主测评系统可以解决哪些问题?
  • Typescript进阶:解锁Infer类型的使用
  • C++笔记---set和map
  • NLP--自然语言处理学习-day1
  • 《微信小程序实战(3) · 推广海报制作》
  • 文件系统(软硬链接 动静态库 动态库加载的过程)
  • C++学习笔记(32)
  • 在C#中使用NPOI将表格中的数据导入excel中
  • 工业交换机如何保证数据的访问安全
  • SkyWalking 简介
  • 深入理解Go语言中的并发封闭与for-select循环模式
  • 使用脚本自动化管理外部Git仓库依赖
  • 如何基于Flink CDC与OceanBase构建实时数仓,实现简化链路,高效排查
  • MySQL面试题——第一篇
  • 人工智能不是人工“制”能