华为云征文|华为云Flexus X实例测试Redis集群部署方案

华为云征文|华为云Flexus X实例测试Redis集群部署方案

什么是华为云Flexus X实例

  • 华为云Flexus云服务是新一代开箱即用、体验跃级、面向中小企业和开发者打造的高品价比云服务产品。Flexus云服务器X实例是华为云Flexus云服务的一个产品。
  • Flexus云服务器X实例是新一代面向中小企业和开发者打造的柔性算力云服务器,可智能感知业务负载,适用于电商直播、企业建站、开发测试环境、游戏服务器、音视频服务等中低负载场景。相较于Flexus应用服务器L实例,Flexus云服务器X实例的优势包含:提供丰富的公共镜像、可灵活自定义vCPU内存配比、智能感知业务动态升降配,负载范围更高等。

使用华为云Flexus云服务器X实例

获取华为云Flexus云服务器X实例后,第一步就是先去云服务器控制台重置密码
在这里插入图片描述
在这里插入图片描述

连接华为云Flexus云服务器X实例

使用 ssh username@ip 命令行登录服务器,第一件事是先更新系统
在这里插入图片描述

使用华为云开源镜像站完成docker-ce安装

开源镜像站链接在此:https://mirrors.huaweicloud.com/home
在这里插入图片描述

查询docker-ce,这里有教我们如何完成软件安装
在这里插入图片描述

ok,至此我们已经完成了docker安装,并成功拉去redis镜像。接下来进入文章的主题,redis-集群部署方案的测试。
在这里插入图片描述在这里插入图片描述

Redis集群部署方案

Redis 支持三种主要的集群部署方案,每种方案都有其特定的应用场景和优缺点。下面是这三种集群部署方案的概述:

  1. 主从复制(Master-Slave Replication)

主从复制是 Redis的一种简单而常用的高可用部署方案。它允许将数据从主节点(Master)复制到一个或多个从节点(Slave),以实现数据冗余和读写分离。

 特点:
 - 数据复制:主节点处理所有的写操作,并将数据同步到从节点。读取操作可以在主节点或从节点上执行,但写操作只能在主节点上执行。
 - 读写分离:可以通过配置让客户端从从节点读取数据,减轻主节点的读负载。
 - 高可用性:如果主节点发生故障,可以手动或使用工具(如 Redis Sentinel)将某个从节点提升为主节点,恢复服务。

优缺点:

 - 优点:简单易用,适合读多写少的应用场景。
 - 缺点:需要手动处理故障转移,扩展性有限(只能在一定程度上缓解读负载)。
  1. Redis Sentinel

Redis Sentinel 是一个用于管理 Redis 主从复制集群的高可用解决方案。它不仅能监控 Redis主从节点的健康状态,还能在主节点发生故障时自动进行故障转移(Failover)。

特点:
 - 监控:Sentinel 节点持续监控主从节点的状态,检测是否有节点宕机。
 - 自动故障转移:如果 Sentinel 检测到主节点宕机,会自动将从节点提升为主节点,并通知其他从节点进行数据复制。
 - 通知:Sentinel 可以通知客户端新的主节点地址,确保服务的持续可用。

优缺点:

 - 优点:提供了自动化的高可用性解决方案,减少了人为干预的需求。
 - 缺点:Redis Sentinel 仍然基于主从复制架构,不能水平扩展写性能。
  1. Redis Cluster

Redis Cluster 是 Redis原生的分布式集群方案,支持数据的自动分片(sharding),从而实现水平扩展,处理大规模的数据和请求。

特点:
 - 数据分片:Redis Cluster 将数据分片到多个节点上,每个节点负责处理不同的哈希槽(hash slot)。Redis
   Cluster 默认有 16384 个哈希槽。
 - 高可用性:每个数据分片可以有多个副本(主从结构),并支持自动故障转移。
 - 无中心架构:Redis Cluster 没有中央控制节点,每个节点都存储自己的数据并负责相应的请求。
 - 线性扩展:通过增加节点可以水平扩展集群的存储和处理能力。

优缺点:
 - 优点:支持数据分片和水平扩展,可以处理非常大的数据集和高并发请求,适用于需要高扩展性的应用场景。
 - 缺点:集群管理相对复杂,需要确保足够的节点来维持数据和服务的高可用性。此外,跨分片操作的性能较低。
# 创建网络
docker network create redis-net

1. 主从复制(Master-Slave Replication)

# 创建主节点
docker run -d --name redis-master --network redis-net -p 6379:6379 redis

# 创建从节点
docker run -d --name redis-slave --network redis-net -p 6380:6379 redis redis-server --slaveof redis-master 6379

验证配置

分别对 redis-master 和 redis-slave 执行以下命令。

# redis-master
docker exec -it redis-master redis-cli 
info replication
set hostname flexusx-8425

# redis-slave
docker exec -it redis-slave redis-cli
info replication
get hostname

从图里我们,可以看到redis-master的role是master,而redis-slave的role是slave。
而我们在redis-master添加的键值对,在redis-slave里可以获得。

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

2. Redis Sentinel

主从搭建

# 创建主节点
docker run -d --name redis-master --network redis-net -p 6379:6379 redis

# 创建从节点1
docker run -d --name redis-slave1 --network redis-net -p 6380:6379 redis redis-server --slaveof redis-master 6379

# 创建从节点2
docker run -d --name redis-slave2 --network redis-net -p 6381:6379 redis redis-server --slaveof redis-master 6379

哨兵搭建

# sentinel.conf
port 26379
sentinel resolve-hostnames yes
sentinel deny-scripts-reconfig yes
sentinel monitor redis-sentinel redis-master 6379 2
sentinel down-after-milliseconds redis-sentinel 30000
sentinel parallel-syncs redis-sentinel 1
sentinel failover-timeout redis-sentinel 180000
# 创建哨兵1
docker run -d --name redis-sentinel1 --network redis-net -p 26379:26379 -v $PWD/sentinel.conf:/etc/redis/sentinel.conf redis redis-sentinel /etc/redis/sentinel.conf

# 创建哨兵2
docker run -d --name redis-sentinel2 --network redis-net -p 26380:26379 -v $PWD/sentinel.conf:/etc/redis/sentinel.conf redis redis-sentinel /etc/redis/sentinel.conf

# 创建哨兵3
docker run -d --name redis-sentinel3 --network redis-net -p 26381:26379 -v $PWD/sentinel.conf:/etc/redis/sentinel.conf redis redis-sentinel /etc/redis/sentinel.conf

在这里插入图片描述

验证配置

在这里插入图片描述

故障转移

这里我们把 redis-master 手动停止,模拟 主从点挂掉的情况,此时 redis-slave1 还是从节点,而主节点变成了redis-slave2
在这里插入图片描述
在这里插入图片描述
然后我们再把 redis-master 重启,发现 redis-master 以从节点的身份重新加入了集群
在这里插入图片描述

3. Redis Cluster

新建文件 docker-compose.yml, 将下面代码复制进去,然后执行 docker compose up -d

services:
  redis-node-1:
    image: redis
    container_name: redis-node-1
    ports:
      - "7001:6379"
    networks:
      - redis-cluster
    command: redis-server --cluster-enabled yes --cluster-config-file /data/nodes.conf --cluster-node-timeout 5000 --appendonly yes

  redis-node-2:
    image: redis
    container_name: redis-node-2
    ports:
      - "7002:6379"
    networks:
      - redis-cluster
    command: redis-server --cluster-enabled yes --cluster-config-file /data/nodes.conf --cluster-node-timeout 5000 --appendonly yes

  redis-node-3:
    image: redis
    container_name: redis-node-3
    ports:
      - "7003:6379"
    networks:
      - redis-cluster
    command: redis-server --cluster-enabled yes --cluster-config-file /data/nodes.conf --cluster-node-timeout 5000 --appendonly yes

  redis-node-4:
    image: redis
    container_name: redis-node-4
    ports:
      - "7004:6379"
    networks:
      - redis-cluster
    command: redis-server --cluster-enabled yes --cluster-config-file /data/nodes.conf --cluster-node-timeout 5000 --appendonly yes

  redis-node-5:
    image: redis
    container_name: redis-node-5
    ports:
      - "7005:6379"
    networks:
      - redis-cluster
    command: redis-server --cluster-enabled yes --cluster-config-file /data/nodes.conf --cluster-node-timeout 5000 --appendonly yes

  redis-node-6:
    image: redis
    container_name: redis-node-6
    ports:
      - "7006:6379"
    networks:
      - redis-cluster
    command: redis-server --cluster-enabled yes --cluster-config-file /data/nodes.conf --cluster-node-timeout 5000 --appendonly yes

networks:
  redis-cluster:
    driver: bridge

创建实例

在这里插入图片描述

实例集群

在这里插入图片描述

验证配置

集群信息

在这里插入图片描述
集群节点
在这里插入图片描述

  • 18
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值