Redis集群方案及实战(五)

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Tair(兼容Redis),内存型 2GB
简介: Redis集群方案及实战

五.RedisCluster-Linux搭建

1.概述

  • 本文以windows中使用Linux虚拟机,并在虚拟机中使用Docker,Docker通过容器编排搭建Redis集群,如果使用云服务器那么部分配置需要修改,请另行百度
  • 需要先在windows上安装Linux系统,并在Linux系统中安装Docker

2.实战

  • 第一步:先下载一个SSH连接工具并连接到Linux,也可以使用IDEA连接,傻瓜式安装即可
  • FinalShell下载地址:www.hostbuf.com/t/988.html

  • 第二步:创建节点配置文件夹
# 返回上一级
cd ..
# 进入home目录
cd home
# 创建RedisCluster文件夹
mkdir RedisCluster
# 进入RedisCluster文件夹
cd RedisCluster
# 创建六个文件夹并创建出6个配置文件
mkdir 7901 7902 7903 7904 7905 7906
# 进入到创建好的7901文件夹中
ls
cd 7901

  • 第三步:创建节点配置文件
# 1.创建并编辑配置文件
vi redis.conf
# 2.点击i进入编辑状态,然后将下面的配置文件粘贴到redis.conf文件中,注意修改端口号
# 3.点击Esc退出输入
# 4.输入命令保存并退出注意有冒号::wq
# 5.执行 ls 查看是否创建成功
# 是否开启保护模式,yes时外部访问redis需要配置bind ip或访问密码,线上建议开启
protected-mode no
# 主节点连接密码,用于保护集群,保持与requirepass一致即可
masterauth 123456
# 每个redis的端口都需要不同
port 7901
# 是否开启集群
cluster-enabled yes
# 该参数指定了集群配置文件的位置。每个节点在运行过程中,会维护一份集群配置文件
# 每当集群信息发生变化时比如增删节点,集群内所有节点会将最新信息更新到该配置文件
# 当节点重启后,会重新读取该配置文件,获取集群信息,可以方便的重新加入到集群中
# 此集群配置文件redis节点会自行维护,注意修改端口号
cluster-config-file nodes-7901.conf
# 集群节点不可用的最大时间,单位是毫秒,如果主节点在指定时间内不可达,那么会进行故障转移
cluster-node-timeout 15000
# 云服务器上部署需指定公网ip,此处设置Linux服务器Ip
cluster-announce-ip 192.168.2.79
# 集群节点映射端口
cluster-announce-port 7901
# 集群节点通信端口
cluster-announce-bus-port 17901
# 开启AOF持久化
appendonly yes
# AOF持久化文件名称
appendfilename "appendonly.aof"
# 设置节点密码,注意所有节点密码必须一致
requirepass 123456
# Redis后台运行,在docker中无需开启
daemonize no

  • 第四步:拷贝配置文件到其他节点文件夹中
[root@localhost 7901]# cp redis.conf ../7902
[root@localhost 7901]# cp redis.conf ../7903
[root@localhost 7901]# cp redis.conf ../7904
[root@localhost 7901]# cp redis.conf ../7905
[root@localhost 7901]# cp redis.conf ../7906

  • 第五步:修改所有节点配置文件
# 进入到其他五个节点文件夹中修改配置的端口
vi redis.conf
# 点击Esc 输入 :wq保存并退出
# 返回上一级编辑指定文件夹:vi ../7902/redis.conf 

  • 第六步:编写docker-compose.yml文件
  • 注意:要在RedisCluster文件夹下创建

version: "3"
# 定义服务可以多个
services:
  redis-cluster:
    image: redis:latest
    command: redis-cli --cluster create  192.168.2.79:7901 192.168.2.79:7902 192.168.2.79:7903 192.168.2.79:7904 192.168.2.79:7905 192.168.2.79:7906 --cluster-replicas 1 --cluster-yes -a 123456
    depends_on:
      - redis-7901
      - redis-7902
      - redis-7903
      - redis-7904
      - redis-7905
      - redis-7906                  
  redis-7901: # 服务名称
    image: redis:latest # 创建容器时所需的镜像
    container_name: redis-7901 # 容器名称
    restart: always # 容器总是重新启动
    ports:
      - 7901:7901
      - 17901:17901
    volumes: # 数据卷,目录挂载
      - ./etc_rc.local:/etc/rc.local
      - ./7901/redis.conf:/etc/redis/redis.conf
      - ./7901/data:/data
    command: ["redis-server", "/etc/redis/redis.conf"] # 覆盖容器启动后默认执行的命令
  redis-7902: # 服务名称
    image: redis:latest # 创建容器时所需的镜像
    container_name: redis-7902 # 容器名称
    restart: always # 容器总是重新启动
    ports:
      - 7902:7902
      - 17902:17902
    volumes: # 数据卷,目录挂载
      - ./etc_rc.local:/etc/rc.local
      - ./7902/redis.conf:/etc/redis/redis.conf
      - ./7902/data:/data
    command: ["redis-server", "/etc/redis/redis.conf"] # 覆盖容器启动后默认执行的命令
  redis-7903: # 服务名称
    image: redis:latest # 创建容器时所需的镜像
    container_name: redis-7903 # 容器名称
    restart: always # 容器总是重新启动
    ports:
      - 7903:7903
      - 17903:17903
    volumes: # 数据卷,目录挂载
      - ./etc_rc.local:/etc/rc.local
      - ./7903/redis.conf:/etc/redis/redis.conf
      - ./7903/data:/data
    command: ["redis-server", "/etc/redis/redis.conf"] # 覆盖容器启动后默认执行的命令
  redis-7904: # 服务名称
    image: redis:latest # 创建容器时所需的镜像
    container_name: redis-7904 # 容器名称
    restart: always # 容器总是重新启动
    ports:
      - 7904:7904
      - 17904:17904
    volumes: # 数据卷,目录挂载
      - ./etc_rc.local:/etc/rc.local
      - ./7904/redis.conf:/etc/redis/redis.conf
      - ./7904/data:/data
    command: ["redis-server", "/etc/redis/redis.conf"] # 覆盖容器启动后默认执行的命令
  redis-7905: # 服务名称
    image: redis:latest # 创建容器时所需的镜像
    container_name: redis-7905 # 容器名称
    restart: always # 容器总是重新启动
    ports:
      - 7905:7905
      - 17905:17905
    volumes: # 数据卷,目录挂载
      - ./etc_rc.local:/etc/rc.local
      - ./7905/redis.conf:/etc/redis/redis.conf
      - ./7905/data:/data
    command: ["redis-server", "/etc/redis/redis.conf"] # 覆盖容器启动后默认执行的命令
  redis-7906: # 服务名称
    image: redis:latest # 创建容器时所需的镜像
    container_name: redis-7906 # 容器名称
    restart: always # 容器总是重新启动
    ports:
      - 7906:7906
      - 17906:17906
    volumes: # 数据卷,目录挂载
      - ./etc_rc.local:/etc/rc.local
      - ./7906/redis.conf:/etc/redis/redis.conf
      - ./7906/data:/data
    command: ["redis-server", "/etc/redis/redis.conf"] # 覆盖容器启动后默认执行的命令


相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
3月前
|
canal 缓存 NoSQL
Redis缓存与数据库如何保证一致性?同步删除+延时双删+异步监听+多重保障方案
根据对一致性的要求程度,提出多种解决方案:同步删除、同步删除+可靠消息、延时双删、异步监听+可靠消息、多重保障方案
Redis缓存与数据库如何保证一致性?同步删除+延时双删+异步监听+多重保障方案
|
4月前
|
监控 NoSQL Redis
看完这篇就能弄懂Redis的集群的原理了
看完这篇就能弄懂Redis的集群的原理了
140 0
|
2月前
|
NoSQL 关系型数据库 MySQL
MySQL与Redis协同作战:优化百万数据查询的实战经验
【10月更文挑战第13天】 在处理大规模数据集时,传统的关系型数据库如MySQL可能会遇到性能瓶颈。为了提升数据处理的效率,我们可以结合使用MySQL和Redis,利用两者的优势来优化数据查询。本文将分享一次实战经验,探讨如何通过MySQL与Redis的协同工作来优化百万级数据统计。
60 5
|
2月前
|
缓存 NoSQL Java
Spring Boot与Redis:整合与实战
【10月更文挑战第15天】本文介绍了如何在Spring Boot项目中整合Redis,通过一个电商商品推荐系统的案例,详细展示了从添加依赖、配置连接信息到创建配置类的具体步骤。实战部分演示了如何利用Redis缓存提高系统响应速度,减少数据库访问压力,从而提升用户体验。
88 2
|
2月前
|
存储 NoSQL 大数据
大数据-51 Redis 高可用方案CAP-AP 主从复制 一主一从 全量和增量同步 哨兵模式 docker-compose测试
大数据-51 Redis 高可用方案CAP-AP 主从复制 一主一从 全量和增量同步 哨兵模式 docker-compose测试
35 3
|
3月前
|
缓存 NoSQL 应用服务中间件
Redis实战篇
Redis实战篇
|
4月前
|
NoSQL 安全 Java
Redis6入门到实战------ 三、常用五大数据类型(字符串 String)
这篇文章深入探讨了Redis中的String数据类型,包括键操作的命令、String类型的命令使用,以及String在Redis中的内部数据结构实现。
Redis6入门到实战------ 三、常用五大数据类型(字符串 String)
|
4月前
|
NoSQL 关系型数据库 Redis
Redis6入门到实战------ 九、10. Redis_事务_锁机制_秒杀
这篇文章深入探讨了Redis事务的概念、命令使用、错误处理机制以及乐观锁和悲观锁的应用,并通过WATCH/UNWATCH命令展示了事务中的锁机制。
Redis6入门到实战------ 九、10. Redis_事务_锁机制_秒杀
|
2月前
|
存储 NoSQL Java
Spring Boot项目中使用Redis实现接口幂等性的方案
通过上述方法,可以有效地在Spring Boot项目中利用Redis实现接口幂等性,既保证了接口操作的安全性,又提高了系统的可靠性。
42 0
|
4月前
|
运维 监控 NoSQL
【Redis】哨兵(Sentinel)原理与实战全解~炒鸡简单啊
Redis 的哨兵模式(Sentinel)是一种用于实现高可用性的机制。它通过监控主节点和从节点,并在主节点故障时自动进行切换,确保集群持续提供服务。哨兵模式包括主节点、从节点和哨兵实例,具备监控、通知、自动故障转移等功能,能显著提高系统的稳定性和可靠性。本文详细介绍了哨兵模式的组成、功能、工作机制以及其优势和局限性,并提供了单实例的安装和配置步骤,包括系统优化、安装、配置、启停管理和性能监控等。此外,还介绍了如何配置主从复制和哨兵,确保在故障时能够自动切换并恢复服务。