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

Redis 集群搭建教程

一、介绍

Redis 集群有着高可用、易扩展、更好的性能等优势,本文主要是实战搭建一个三主三从的 Redis 集群。

正常来说,搭建 Redis 集群需要 6 台服务器。为了简单一点,本文通过一台服务器,6 个端口,搭建一个 Redis 的伪集群。

二、准备环境

IP 地址端口号
10.211.55.48001~8006

三、安装 Redis

3.1、安装 C/C++ 环境,编译 Redis 安装包使用

yum -y install gcc gcc-c++ make  

3.2、下载 Redis 安装包

# 切换软件安装目录  
cd /usr/local/  # 新建 redis 安装目录  
mkdir redis  # 切换到 redis 安装目录  
cd redis  # 下载 redis 安装包  
wget http://download.redis.io/releases/redis-6.2.5.tar.gz  # 解压 redis 安装包  
tar -zxvf redis-6.2.5.tar.gz  

3.3、编译 redis

# 进入解压后的 Redis 目录  
cd redis-6.2.5/  # 编译  
make  # 进入编译好的目录(编译成功后 src 目录下会出现编译后的 Redis 服务程序 redis-server)  
cd src  

image-20230921170229468

四、Redis 集群配置

4.1、创建集群相关目录

# 切换目录  
/usr/local/redis  # 创建 Redis 集群目录  
mkdir rediscluster  # 进入 rediscluster 目录  
cd rediscluster  # 批量创建六个文件夹  
mkdir ./node800{1,2,3,4,5,6}  

image-20230924113834429

4.2、redis.conf 文件配置

# 进入 redis.conf 所在目录  
cd /usr/local/redis/redis-6.2.5  # 编辑 redis.conf 文件  
vim redis.conf  

需要修改的配置内容如下

# 设置端口  
port 8001  #去掉绑定的 ip  
#bind 127.0.0.1  #关闭保护模式  
protected-mode no  # 指定数据文件存放位置,必须要指定不同的目录,不然会丢失数据,默认 dir ./。  
dir /usr/local/redis/rediscluster/node8001  # 开启集群模式  
cluster-enabled yes  # 集群节点配置文件,这里的800x最好和port对应上,redis集群自动创建、自动更新  
cluster-config-file nodes-8001.conf  # 集群超时时间,节点超过这个时间没反应就断定是宕机  
cluster-node-timeout 5000  # 开启AOF持久化  
appendonly yes  # 如果要设置密码,需要增加如下配置:  
# 设置redis访问密码  requirepass 123456  
# 设置集群节点间访问密码,跟上面一致  
masterauth 123456  

4.3、拷贝 redis.conf 到集群相关目录

# 进入 redis.conf 目录  
cd /usr/local/redis/redis-6.2.5  # 拷贝 redis.conf 文件到 node800x 相关目录  
cp redis.conf ../rediscluster/node8001  
cp redis.conf ../rediscluster/node8002  
cp redis.conf ../rediscluster/node8003  
cp redis.conf ../rediscluster/node8004  
cp redis.conf ../rediscluster/node8005  
cp redis.conf ../rediscluster/node8006  

4.4、将 node8001 ~ node8006 目录下的 redis.conf 文件的端口号一个一个替换

image-20230925112602941

4.5、启动 Redis 集群

# 切换到 redis 的 src 目录  
cd /usr/local/redis/redis-6.2.5/src  # 一个一个启动 redis  
./redis-server ../../rediscluster/node8001/redis.conf  
./redis-server ../../rediscluster/node8002/redis.conf  
./redis-server ../../rediscluster/node8003/redis.conf  
./redis-server ../../rediscluster/node8004/redis.conf  
./redis-server ../../rediscluster/node8005/redis.conf  
./redis-server ../../rediscluster/node8006/redis.conf  # 查看 redis 的启动状态  
ps -ef | grep redis  

image-20230925142604828

# 切换到 redis 的 src 目录  
cd /usr/local/redis/redis-6.2.5/src  # 组建 redis 集群(注意,执行下面这个命令的时候,要在一行,不要换行)  
./redis-cli -a 123456 --cluster create 10.211.55.4:8001 10.211.55.4:8002 10.211.55.4:8003 10.211.55.4:8004 10.211.55.4:8005 10.211.55.4:8006 --cluster-replicas 1  

image-20230925143613901

五、连接 Redis 集群

5.1、连接方式

使用 Another Redis Desktop Manager 客户端连接集群的方式如下。连接以后就可以和平常一样使用 redis 了。

image-20230925143948182

5.2、集群相关命令

# 假设先在 redis 塞一个 key value 键值对  
set key value  # 查看 key 为 key 的 slot 值  
cluster keyslot key  # 查看slot信息  
cluster slots  # 查看集群相关信息  
cluster info  # 查看集群中节点的相关信息  
cluster nodes  

六、故障模拟

正常情况下的集群,杀掉集群中的某个主节点

# 查看 Redis 进程信息  
ps aux | grep redis  # 杀掉 8001 对应的进程 id(-9 后面的是对应的进程 id,ps aux | grep redis 命令展示的第二列)  
kill -9 15913  

查看集群节点的信息

image-20230925154419541

杀掉 8005 主节点后的节点信息

image-20230925154536167

重新启动 8005 redis

# 切换到 redis 的 src 目录  
cd /usr/local/redis/redis-6.2.5/src  # 一个一个启动 redis  
./redis-server ../../rediscluster/node8005/redis.conf  

image-20230925154713476

七、参考资料

  • Linux搭建redis集群
  • Redis 6.0 集群搭建实践

八、最后

我是 xiucai,一位后端开发工程师。

如果你对我感兴趣,请移步我的个人博客,进一步了解。

- 文中如有错误,欢迎在评论区指正,如果这篇文章帮到了你,欢迎点赞和关注😊
- 本文首发于个人博客,未经许可禁止转载💌

相关文章:

Redis 集群搭建教程

一、介绍 Redis 集群有着高可用、易扩展、更好的性能等优势,本文主要是实战搭建一个三主三从的 Redis 集群。 正常来说,搭建 Redis 集群需要 6 台服务器。为了简单一点,本文通过一台服务器,6 个端口,搭建一个 Redis …...

图形处理软件Photoshop Elements 2020 mac中文版 ps简化版

Photoshop Elements 2020 mac是一款非常实用的图形处理工具。ps elements 2020 mac中文版可以帮助您自动生成照片和视频作品的功能,采用Adobe Sensei AI技术可进行图像组织、编辑和创建等。Photoshop Elements 2020 for Mac激活版可以帮助您轻松整理照片和视频&…...

opencv for unity package在unity中打开相机不需要dll

下载OpenCV for Unity 导入后,里面有很多案例 直接打开就可以运行 打开相机...

[Linux入门]---进程状态

文章目录 1.进程主要状态进程运行状态进程阻塞状态进程的挂起状态 2.Linux进程状态Linux进程内核源代码①R运行状态②S睡眠状态③D磁盘休眠状态T停止状态④X死亡状态⑤Z僵尸状态⑥孤儿进程 3.总结 1.进程主要状态 进程运行状态 ①内存中有一个运行队列,其中有两个指…...

腾讯mini项目-【指标监控服务重构】2023-08-29

今日已办 Collector 指标聚合 由于没有找到 Prometheus 官方提供的可以聚合指定时间区间内的聚合函数,所以自己对接Prometheus的api来聚合指定容器的cpu_avg、cpu_99th、mem_avg 实现成功后对接小组成员测试完提供的时间序列和相关容器,将数据记录在表格…...

opencv 常用的滤波器及应用技巧

常用滤波器: 标准滤波器(邻域平均法):该滤波器是所有滤波器里最简单的一种,输出的像素值由输入的滤波核所覆盖的像素值均值决定(每个邻域像素对其贡献的权重是相同的)。高斯滤波:该…...

【PyTorch攻略(1/7)】 张量基本语法

一、说明 Tensor 是一种特殊的数据结构,与数组和矩阵非常相似。在 PyTorch 中,我们使用张量对模型的输入和输出以及模型的参数进行编码。 张量类似于 NumPy 和 ndarray,除了张量可以在 GPU 或其他硬件加速器上运行。事实上,张量和…...

什么是Jmeter ?Jmeter使用的原理步骤是什么?

1.1 什么是 JMeter Apache JMeter 是 Apache 组织开发的基于 Java 的压力测试工具。用于对软件做压力测试,它最初被设计用于 Web 应用测试,但后来扩展到其他测试领域。 它可以用于测试静态和动态资源,例如静态文件、Java 小服务程序、CGI 脚…...

Mac 通过 brew安装的 ffmpeg 切换版本

现有版本为 6.x ,想切换至 5.x 版本 先安装 5.x 版本 brew install ffmpeg5安装完成后会出现具体版本号,也可以自己指定例如 brew install ffmpeg5.1.3 配置环境变量 .zshrc vi ~/.zshrc添加如下命令 export PATH/usr/local/Cellar/ffmpeg5/5.1.3/bin:…...

【Spring Boot】实战:实现数据缓存框架

🌿欢迎来到@衍生星球的CSDN博文🌿 🍁本文主要学习【Spring Boot】实现数据缓存框架 🍁 🌱我是衍生星球,一个从事集成开发的打工人🌱 ⭐️喜欢的朋友可以关注一下🫰🫰🫰,下次更新不迷路⭐️💠作为一名热衷于分享知识的程序员,我乐于在CSDN上与广大开发者…...

MySQL数据类型之JSON

MySQL数据类型之JSON SON类型是MySQL 5.7版本新增的数据类型,用好JSON数据类型可以有效解决很多业务中实际问题。 使用JSON数据类型,推荐用MySQL 8.0.17以上的版本,性能更好,同时也支持Multi-Valued Indexes; JSON数…...

nginx_0.7.65_00截断_nginx解析漏洞

nginx_0.7.65_00截断_nginx解析漏洞 文章目录 nginx_0.7.65_00截断_nginx解析漏洞1 环境搭建1 解压nginx_0.7.652 双击启动,如有闪退,端口占用的情况,在conf文件nginx.conf修改一下端口号3 查看一下进程有nginx4 启动成功访问127.0.0.1:18080…...

建站百科:HTTP返回状态码是什么?

HTTP返回状态码是用于表示HTTP响应状态的三位数字代码。HTTP状态码由6位数字组成,每3位数字代表一种状态,如200表示成功,404表示未找到资源,500表示服务器内部错误等。 常用的状态码包括: 200:正常的网页…...

人像摄影简记

文章目录 光影室外顺光室内顺光室外逆光室内逆光散射光 姿势错误姿势避免摆拍技巧场景互动抓拍利用道具 构图构图目的构图基础概念画幅:横画幅和竖画幅景别:全身、大半身及半身、特写拍摄高度:平拍、俯拍和仰拍拍摄方位:正面、前侧…...

【Java 基础篇】Java 实现模拟斗地主游戏

欢迎阅读本篇博客,在这篇博客中,我们将详细讲解如何使用Java编写一个简单的模拟斗地主游戏。这个项目将帮助您了解Java编程中的一些基本概念,如面向对象编程、集合框架的使用、随机数生成等。 引言 斗地主是一种非常受欢迎的纸牌游戏&#…...

计算机专业毕业设计项目推荐09-个人医疗系统(Spring+Js+Mysql)

个人医疗系统(SpringJsMysql) **介绍****系统总体开发情况-功能模块****各部分模块实现** 介绍 本系列(后期可能博主会统一为专栏)博文献给即将毕业的计算机专业同学们,因为博主自身本科和硕士也是科班出生,所以也比较了解计算机专业的毕业设计流程以及…...

安卓Compose(一)

为什么学习安卓Compose? 安卓Compose是一个相对新的UI工具包,它的出现为安卓应用程序开发带来了一系列的好处。下面是一些学习Compose的理由: 声明式UI 与传统的安卓XML布局相比,Compose使用了声明式的UI编程范例。这意味着你可以…...

【Linux学习】03Linux用户和权限

Linux(B站黑马)学习笔记 01Linux初识与安装 02Linux基础命令 03Linux用户和权限 文章目录 Linux(B站黑马)学习笔记前言03Linux用户和权限认知root用户root用户(超级管理员)su和exit命令sudo命令 用户、用户…...

LeetCode 面试题 05.04. 下一个数

文章目录 一、题目二、Java 题解2.1 求大数:2.2 求小数: 一、题目 下一个数。给定一个正整数,找出与其二进制表达式中1的个数相同且大小最接近的那两个数(一个略大,一个略小)。 示例1: 输入: n…...

SDXL prompt 笔记

模型 模型有两个,分别是 stable-diffusion-xl-base-1.0、stable-diffusion-xl-refiner-1.0。 base 模型是用来做文生图,refiner 模型是用来做图生图的。 SDXL 模型之 base、refiner 和 VAE_云水木石的博客-CSDN博客 分辨率 默认是1024*1024&#xf…...

Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误

HTTP 状态码 406 (Not Acceptable) 和 500 (Internal Server Error) 是两类完全不同的错误,它们的含义、原因和解决方法都有显著区别。以下是详细对比: 1. HTTP 406 (Not Acceptable) 含义: 客户端请求的内容类型与服务器支持的内容类型不匹…...

docker详细操作--未完待续

docker介绍 docker官网: Docker:加速容器应用程序开发 harbor官网:Harbor - Harbor 中文 使用docker加速器: Docker镜像极速下载服务 - 毫秒镜像 是什么 Docker 是一种开源的容器化平台,用于将应用程序及其依赖项(如库、运行时环…...

在鸿蒙HarmonyOS 5中实现抖音风格的点赞功能

下面我将详细介绍如何使用HarmonyOS SDK在HarmonyOS 5中实现类似抖音的点赞功能,包括动画效果、数据同步和交互优化。 1. 基础点赞功能实现 1.1 创建数据模型 // VideoModel.ets export class VideoModel {id: string "";title: string ""…...

Psychopy音频的使用

Psychopy音频的使用 本文主要解决以下问题: 指定音频引擎与设备;播放音频文件 本文所使用的环境: Python3.10 numpy2.2.6 psychopy2025.1.1 psychtoolbox3.0.19.14 一、音频配置 Psychopy文档链接为Sound - for audio playback — Psy…...

在WSL2的Ubuntu镜像中安装Docker

Docker官网链接: https://docs.docker.com/engine/install/ubuntu/ 1、运行以下命令卸载所有冲突的软件包: for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done2、设置Docker…...

mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包

文章目录 现象:mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包遇到 rpm 命令找不到已经安装的 MySQL 包时,可能是因为以下几个原因:1.MySQL 不是通过 RPM 包安装的2.RPM 数据库损坏3.使用了不同的包名或路径4.使用其他包…...

稳定币的深度剖析与展望

一、引言 在当今数字化浪潮席卷全球的时代,加密货币作为一种新兴的金融现象,正以前所未有的速度改变着我们对传统货币和金融体系的认知。然而,加密货币市场的高度波动性却成为了其广泛应用和普及的一大障碍。在这样的背景下,稳定…...

MySQL账号权限管理指南:安全创建账户与精细授权技巧

在MySQL数据库管理中,合理创建用户账号并分配精确权限是保障数据安全的核心环节。直接使用root账号进行所有操作不仅危险且难以审计操作行为。今天我们来全面解析MySQL账号创建与权限分配的专业方法。 一、为何需要创建独立账号? 最小权限原则&#xf…...

React---day11

14.4 react-redux第三方库 提供connect、thunk之类的函数 以获取一个banner数据为例子 store: 我们在使用异步的时候理应是要使用中间件的,但是configureStore 已经自动集成了 redux-thunk,注意action里面要返回函数 import { configureS…...

基于TurtleBot3在Gazebo地图实现机器人远程控制

1. TurtleBot3环境配置 # 下载TurtleBot3核心包 mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src git clone -b noetic-devel https://github.com/ROBOTIS-GIT/turtlebot3.git git clone -b noetic https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git git clone -b noetic-dev…...