redis分布式及HA部署文档

2024-06-21 16:38
文章标签 文档 部署 redis 分布式 ha

本文主要是介绍redis分布式及HA部署文档,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本文就官方redis分布式的部署进行总结说明,redis分布式中集成了高可用HA功能,依次进行说明,现对redis的分布式部署做以下总结。

  • 下载redis版本
    官方下载地址:http://download.redis.io/releases/redis-3.2.4.tar.gz

  • redis编译
    解压redis-3.2.4.tar.gz包,进入到redis-3.2.4
    我一般添加快捷方式:ln -s redis-3.2.4 redis
    进入redis目录的src下,执行:.configure完成编译即可

  • 部署环境说明
    参照官方说明,支持redis主备,最少部署六个节点,三主三备

mkdir redis-cluster
cd redis-cluster
mkdir 7000 7001 7002 7003 7004 7005

拷贝编译好的redis分别拷贝到7000,7001,7002,7003,7004,7005下面,见下图所示

这里写图片描述

分别进入到7000,7001,7002,7003,7004,7005的redis-3.2.4目录中,新建redis_cluster_7000.conf redis_cluster_7001.conf等文件,添加以下内容

redis_cluster_7000.conf配置文件如下所示
port 7000
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes


redis_cluster_7001.conf配置文件如下所示
port 7001
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes

   依次类推即可。
  • 分别启动以上六个redis实例
    进入到7000/redis-3.2.4的src目录下,执行

../redis-server ./redis_cluster_7000.conf
../redis-server ./redis_cluster_7001.conf
../redis-server ./redis_cluster_7002.conf
../redis-server ./redis_cluster_7003.conf
../redis-server ./redis_cluster_7004.conf
../redis-server ./redis_cluster_7005.conf

备注:以上启动的六个redis之间没有任何的关系,都是独立的,下文介绍如何将六个redis实例变成3主三备。

  • 安装gem

yum install gem
在线安装失败后,可考虑离线安装

  • 创建redis集群
    进入到任意redis的src目录下,执行如下命令

gem install redis
#创建集群,replicas 1 代表每个节点创建几个备份
./redis-trib.rb create –replicas 1 127.0.0.1:7000 127.0.0.1:7001 \
127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005

  • 查看集群状态

使用如下命令:./redis-trib.rb check 127.0.0.1:7000
如下图所示
这里写图片描述
备注:3个master将16384个槽分配了,后续介绍redis如何将key存储到这些槽中。

  • 新增集群节点
  1. 开启两个redis实例,本文基于同一台机器部署,跨机器部署只需要修改ip就行,如下所示:
    ./redis-server ../redis_cluster_7006.conf &
    ./redis-server ../redis_cluster_7007.conf &
    启动后的redis进程如下图所示:
    这里写图片描述

2.将7006加入到集群中作为主节点:
src目录下执行:./redis-trib.rb add-node 127.0.0.1:7006 127.0.0.1:7000
这里写图片描述
查看集群状态:./redis-trib.rb check 127.0.0.1:7006
这里写图片描述
发现此时:7006已经成为了集群中一个主,但是没有分配一个槽,故此时连接7006操作的话,所有的请求都会转发到其他的solt槽去处理。
3.接下来我们给7006redis添加一个备
redis的src目录下执行:./redis-trib.rb add-node –slave –master-id e6aee83e740d7dc44afd563e4aa160378f5a4cdf 127.0.0.1:7007 127.0.0.1:7000
这里写图片描述
检查集群状态:
这里写图片描述
此时我们发现7007已经变成7006一个备了,但是7006还是没有被分配槽号,接下来我们操作如何进行solt的重分配。
以下命令solt槽的分配交由系统自动完成
./redis-trib.rb reshard 127.0.0.1:7000
这里写图片描述
配置部分截图:

# redis-trib.rb reshard 127.0.0.1:7000 
#下面是主要过程
How many slots do you want to move (from 1 to 16384)? 2000 
#设置slot数2000
What is the receiving node ID? 03ccad2ba5dd1e062464bc7590400441fafb63f2 
#新节点node id
Please enter all the source node IDs.Type 'all' to use all the nodes as source nodes for the hash slots.Type 'done' once you entered all the source nodes IDs.
Source node #1:all
#表示全部节点重新洗牌
Do you want to proceed with the proposed reshard plan (yes/no)? yes 
#确认重新分

再次查看集群状态
这里写图片描述
备注:分配成功

  • 异常总结
[ERR] Nodes don't agree about configuration!
>>> Check for open slots...
[WARNING] Node 127.0.0.1:7006 has slots in importing state (5608).
[WARNING] The following slots are open: 5608

出现这种情况:某个槽位号被打开了,解决方法
redis-trib.rb fix 127.0.0.1:7000

 #执行部分结果如下:[ERR] Nodes don't agree about configuration!
>>> Check for open slots...
[WARNING] Node 127.0.0.1:7006 has slots in importing state (5608).
[WARNING] The following slots are open: 5608
>>> Fixing open slot 5608
Set as migrating in: 
Set as importing in: 127.0.0.1:7006
>>> Moving all the 5608 slot keys to its owner 127.0.0.1:7001
Moving slot 5608 from 127.0.0.1:7006 to 127.0.0.1:7001: 
>>> ****Setting 5608 as STABLE in 127.0.0.1:7006****
>>> Check slots coverage...

由上可以,设置7006的5608槽为stable即可
具体操作如下:
这里写图片描述
再次查看集群,集群恢复正常!

这篇关于redis分布式及HA部署文档的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1081754

相关文章

Redis客户端连接机制的实现方案

《Redis客户端连接机制的实现方案》本文主要介绍了Redis客户端连接机制的实现方案,包括事件驱动模型、非阻塞I/O处理、连接池应用及配置优化,具有一定的参考价值,感兴趣的可以了解一下... 目录1. Redis连接模型概述2. 连接建立过程详解2.1 连php接初始化流程2.2 关键配置参数3. 最大连

使用IDEA部署Docker应用指南分享

《使用IDEA部署Docker应用指南分享》本文介绍了使用IDEA部署Docker应用的四步流程:创建Dockerfile、配置IDEADocker连接、设置运行调试环境、构建运行镜像,并强调需准备本... 目录一、创建 dockerfile 配置文件二、配置 IDEA 的 Docker 连接三、配置 Do

Python操作PDF文档的主流库使用指南

《Python操作PDF文档的主流库使用指南》PDF因其跨平台、格式固定的特性成为文档交换的标准,然而,由于其复杂的内部结构,程序化操作PDF一直是个挑战,本文主要为大家整理了Python操作PD... 目录一、 基础操作1.PyPDF2 (及其继任者 pypdf)2.PyMuPDF / fitz3.Fre

springboot自定义注解RateLimiter限流注解技术文档详解

《springboot自定义注解RateLimiter限流注解技术文档详解》文章介绍了限流技术的概念、作用及实现方式,通过SpringAOP拦截方法、缓存存储计数器,结合注解、枚举、异常类等核心组件,... 目录什么是限流系统架构核心组件详解1. 限流注解 (@RateLimiter)2. 限流类型枚举 (

Redis MCP 安装与配置指南

《RedisMCP安装与配置指南》本文将详细介绍如何安装和配置RedisMCP,包括快速启动、源码安装、Docker安装、以及相关的配置参数和环境变量设置,感兴趣的朋友一起看看吧... 目录一、Redis MCP 简介二、安www.chinasem.cn装 Redis MCP 服务2.1 快速启动(推荐)2.

C#监听txt文档获取新数据方式

《C#监听txt文档获取新数据方式》文章介绍通过监听txt文件获取最新数据,并实现开机自启动、禁用窗口关闭按钮、阻止Ctrl+C中断及防止程序退出等功能,代码整合于主函数中,供参考学习... 目录前言一、监听txt文档增加数据二、其他功能1. 设置开机自启动2. 禁止控制台窗口关闭按钮3. 阻止Ctrl +

MySQL 主从复制部署及验证(示例详解)

《MySQL主从复制部署及验证(示例详解)》本文介绍MySQL主从复制部署步骤及学校管理数据库创建脚本,包含表结构设计、示例数据插入和查询语句,用于验证主从同步功能,感兴趣的朋友一起看看吧... 目录mysql 主从复制部署指南部署步骤1.环境准备2. 主服务器配置3. 创建复制用户4. 获取主服务器状态5

Java docx4j高效处理Word文档的实战指南

《Javadocx4j高效处理Word文档的实战指南》对于需要在Java应用程序中生成、修改或处理Word文档的开发者来说,docx4j是一个强大而专业的选择,下面我们就来看看docx4j的具体使用... 目录引言一、环境准备与基础配置1.1 Maven依赖配置1.2 初始化测试类二、增强版文档操作示例2.

Redis中Stream详解及应用小结

《Redis中Stream详解及应用小结》RedisStreams是Redis5.0引入的新功能,提供了一种类似于传统消息队列的机制,但具有更高的灵活性和可扩展性,本文给大家介绍Redis中Strea... 目录1. Redis Stream 概述2. Redis Stream 的基本操作2.1. XADD

golang程序打包成脚本部署到Linux系统方式

《golang程序打包成脚本部署到Linux系统方式》Golang程序通过本地编译(设置GOOS为linux生成无后缀二进制文件),上传至Linux服务器后赋权执行,使用nohup命令实现后台运行,完... 目录本地编译golang程序上传Golang二进制文件到linux服务器总结本地编译Golang程序