Redis集群架构搭建——主从、哨兵、集群

上一篇文章Ubuntu上通过源码方式安装Redis已经介绍了如何安装redis,在这篇文章中,将会教大家搭建Redis的几种高可用的架构:主从架构、哨兵集群、Cluster集群。

本篇文章使用的redis版本为6.2.13,不同版本的配置可能有略微的区别,比如replicaof/slaveof。

因为设备有限,只能在一台Ubuntu虚拟机上通过不同端口启动多个redis服务,

 注意,启动redis的命令不要直接复制,否则可能会提示“没有那个文件或目录”,自己手敲的命令就可以正常执行(血的教训)。

目录

一、搭建主从架构

搭建主节点

复制配置文件

修改配置文件

启动主节点

搭建从节点

复制配置文件

修改配置文件 

启动从节点

二、搭建哨兵集群架构

增加一个从节点

搭建哨兵节点

复制sentinel.conf

修改设置

启动哨兵节点

查看集群信息

测试哨兵选主

三、搭建高可用集群架构


一、搭建主从架构

主从架构的redis集群模式最低配置是一个master一个slave,所以要启动两个redis服务。

搭建主节点

复制配置文件

切换到redis安装目录,复制一份配置文件

cp redis.conf redis_6379.conf

如下图所示:

修改配置文件

修改一下redis_6379.conf,通过Ctrl+F搜索并修改以下配置。

# bind 127.0.0.1 -::1protected-mode no# 设置启动端口号
port 6379# 设置后台启动
daemonize yes# 进程ID保存的文件
pidfile /var/run/redis_6379.pid# 设置日志文件名
logfile "redis_6379.log"

启动主节点

按照上一步修改完redis_6379.config之后,通过下面的命令启动redis

./src/redis-server redis_6379.conf

如图,查看日志文件,redis成功启动了

搭建从节点

复制配置文件

切换到redis安装目录,复制一份配置文件,直接复制之前的6379文件,懒得重复修改一些设置。

cp redis_6379.conf redis_6389.conf

修改配置文件 

修改一下redis_6389.conf,通过Ctrl+F搜索并修改以下配置。

# 设置启动端口号
port 6389# 从节点只能处理读操作,当前版本redis默认开启的配置
replica-read-only yes# 配置redis主节点ip地址和端口号
replicaof 192.168.254.128 6379# 进程ID保存的文件
pidfile /var/run/redis_6389.pid# 保存数据的文件地址
dir /usr/local/redis/6389/data# 日志文件的文件名
logfile "/usr/local/redis/6389/logs/redis_6389.log"

注意:为了避免文件找不到问题,需要先在/usr/local下创建对应的目录

/redis/6389/data

/redis/6389/logs

启动从节点

通过以下命令启动从节点

./src/redis‐server redis_6389.conf

如下图,slave节点成功启动,并从主节点6379同步了数据。

然后在主节点设置几个key,看一下是否会同步到从节点:

通过redis-cli命令连接主节点(默认连接的是端口号是6379的redis节点),可以通过-p指定端口号。第一次使用redis-cli可能会提示安装redis-tools,复制命令回车即可。

设置一个name

从节点上获取name

至此,redis主从架构的搭建就圆满完成了。

二、搭建哨兵集群架构

哨兵集群架构其实就是在主从架构的基础上,引入了哨兵节点,哨兵不处理客户端的读写请求,之负责监控主节点和从节点,当发现主节点挂了,会重新选举一个主节点,选举主节点的过程是通过多个哨兵投票得到的,只有超过半数的哨兵同意选举才能成立,所以哨兵的数量要设置成奇数,防止平票重新选举的情况发生。因此,哨兵集群架构最少要有3个哨兵节点。

增加一个从节点

在第一节主从架构的基础上,再搭建一个redis节点6399。

从6389节点复制一份配置文件

cp redis_6389.conf redis_6399.conf

然后修改下面这些配置就可以了(能偷懒就偷懒ovo)

port 6399pidfile /var/run/redis_6399.pidlogfile "/usr/local/redis/6399/logs/redis_6399.log"dir /usr/local/redis/6399/data

然后输入命令启动

./src/redis‐server redis_6399.conf

同样的,它会从主节点6379同步数据。

搭建哨兵节点

复制sentinel.conf

cp sentinel.conf sentinel_6380.conf 

修改设置

port 6380daemonize yeslogfile "/usr/local/redis/6380/logs/redis_6380.log"dir /usr/local/redis/6380/datapidfile /var/run/redis_6380.pid# 配置主节点ip和端口号,最后一个2表示当哨兵节点中两个通过选举结果时,才设置候选节点为master
# 一般设置成哨兵节点数/2 + 1
sentinel monitor mymaster 192.168.254.128 6379 2

然后按照类似的方法创建两个哨兵节点6390和6400

复制

cp sentinel_6380.conf sentinel_6390.conf

替换6380为6390,然后同理创建6400

启动哨兵节点

src/redis-sentinel sentinel_6380.confsrc/redis-sentinel sentinel_6390.confsrc/redis-sentinel sentinel_6400.conf

启动完成后,点击任意一个配置文件,发现文件末尾多了一段内容。

查看集群信息

连接6400端口的哨兵节点,通过redis的info命令查看到整个集群的信息

redis-cli -p 6400info

测试哨兵选主

通过kill命令杀死redis主节点,看一下能否完成新的master选举。

如上图,主节点已经下线了,连接其他两个从节点中任意一个,例如,连接6389

发现6389被设置成了主节点

至此,redis的哨兵集群架构也搭建完成了。

三、搭建高可用集群架构

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/139191.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

腾讯云微服务平台 TSF 异地多活单元化能力重磅升级

导语 2023腾讯全球数字生态大会已于9月7-8日完美落幕,40专场活动展示了腾讯最新的前沿技术、核心产品、解决方案。 微服务与消息队列专场,腾讯云微服务平台 TSF 产品经理张桢带来了《腾讯云微服务平台 TSF 异地多活单元化能力重磅升级》的精彩演讲。本…

Centos7部署单机版MongoDB

目录 Centos7部署单机版MongoDBMongoDB介绍数据模型索引分布式高可用性查询语言驱动和社区用途缺点 下载并解压安装包创建相关文件夹和文件编辑mongod.conf文件启动mongodb创建管理员用户终止MongoDB服务配置自启动服务关闭SELinux编辑自启动服务文件mongodb服务命令 Centos7部…

iOS17.0.2更新修复iPhone 15系列机型数据迁移问题,附新机快速数据迁移办法!

iPhone 15 系列机型已于今日正式发售,为解决iPhone15这些机型出现的数据迁移问题,苹果紧急发布了 iOS 17.0.2 更新,内部版本号为 21A350。 需要注意的是, iOS 17.0.2 更新仅适用于 iPhone 15、iPhone 15 Plus、iPhone 15 Pro 和 …

QT-day2

完善登录框 点击登录按钮后,判断账号(admin)和密码(123456)是否一致,如果匹配失败,则弹出错误对话框,文本内容“账号密码不匹配,是否重新登录”,给定两个按钮…

Android 启动优化案例:WebView非预期初始化排查

去年年底做启动优化时,有个比较好玩的 case 给大家分享下,希望大家能从我的分享里 get 到我在做一些问题排查修复时是怎么看上去又low又土又高效的。 1. 现象 在我们使用 Perfetto 进行app 启动过程性能观测时,在 UI 线程发现了一段 几十毫…

ruoyi框架修改左侧菜单样式

菜单效果 ruoyi前端框架左侧的菜单很丑,我们需要修改一下样式,下面直接看效果。 修改代码 1、sidebar.scss .el-menu-item, .el-submenu__title {overflow: hidden !important;text-overflow: ellipsis !important;white-space: nowrap !important;//…

Docker核心原理与实操

第一章、Docker基本概念 1、概念:Docker是一种容器技术,可以解决软件跨环境迁移问题。 2、实现原理:是一个分层复用的文件系统;每一层都是一个独立的软件; …

Linux中创建用户要自己设置密码

因为不知道Linux默认设置的密码,没办法接下来愉快的使用。如下: 而想要新建Linux用户密码,请您执行以下步骤: . 1.打开终端并以root身份登录; 2.输入命令“useradd username",其中username为您新建的用户名; 3.使用命令“passwd usernam…

SDXL prompt 笔记

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

Springboot2 Pandas Pyecharts 量子科技专利课程设计大作业

数据集介绍 1.背景 根据《中国科学:信息科学》期刊上的一篇文章,量子通信包括多种协议与应用类型: 基于量子隐形传态与量子存储中继等技术,可实现量子态信息传输,进而构建量子信息网络,已成为当前科研热点&…

GDB的TUI模式(文本界面)

2023年9月22日,周五晚上 今晚在看GDB的官方文档时,发现GDB居然有文本界面模式 TUI (Debugging with GDB) (sourceware.org) GDB开启TUI的条件 GDB的文本界面的开启条件是:操作系统有适当版本的curses库 The TUI mode is supported only on…

ArrayList 的自动扩容机制

触发扩容 ArrayList 是一个数组结构的存储容器,默认情况下,数组的长度是 10 当然我们也可以在构建 ArrayList 对象的时候自己指定初始长度。随着在程序里面不断的往 ArrayList 中添加数据,当添加的数据达到 10 个的时候,ArrayLis…

web:[GXYCTF2019]Ping Ping Ping

题目 点进题目,页面只显示/?ip,没有其他信息 联系到题目名为ping,猜测题目于ping地址有关,先尝试一下 构造payload http://31e941af-c0d7-49c9-a3fe-84cb13d8adae.node4.buuoj.cn:81/?ip127.0.0.1 这里猜测可能为远程命令执行…

Linux(CentOS)安装msf

目录 一、安装MSF 1.1 在线安装 1.2 离线安装 二、安装Postgresql数据库 一、安装MSF 1.1 在线安装 需要挂梯子!挂完梯子需要reboot重启,多试几次就可以,国内网络我试了很久都不行。没条件没梯子的看1.2离线安装 cd /opt curl https://ra…

Cortex-M4之FPU单元

最近在学习实时操作系统,以下是我对学习实时操作系统过程中做的一些笔记。 一、FPU单元 在 Coretex-M4 处理器中有一个可选的单精度 FPU 单元,一般 STM32F429 就有 FPU 单元, 如果使能了 FPU 单元的话就可以使用它来对单精度浮点数进行计算…

【探索Linux世界|中秋特辑】--- 倒计时和进度条的实现与演示

个人主页:兜里有颗棉花糖 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 兜里有颗棉花糖 原创 收录于专栏【Linux专栏】🎈 本专栏旨在分享学习Linux的一点学习心得,欢迎大家在评论区讨论💌 演示环境&#xff1…

栈的详细实现

一 定义 概念 栈是一种特殊的线性表,只允许在固定的一端进行操作。该端叫做栈顶,相对的另一端叫做栈底。 符合LIFO(后进先出)的规则 关于栈顶的两个操作: 压栈/入栈/进栈:在栈顶部插入数据 出栈:栈顶删…

2023华为杯研究生数学建模C题分析

完整的分析查看文末名片获取! 问题一 在每个评审阶段,作品通常都是随机分发的,每份作品需要多位评委独立评审。为了增加不同评审专家所给成绩之间的可比性,不同专家评审的作品集合之间应有一些交集。但有的交集大了,则…

软件测试缺陷报告详解

【软件测试行业现状】2023年了你还敢学软件测试?未来已寄..测试人该何去何从?【自动化测试、测试开发、性能测试】 缺陷报告是描述软件缺陷现象和重现步骤地集合。软件缺陷报告Software Bug Report(SBR)或软件问题报告Software Pr…

《动手学深度学习 Pytorch版》 7.5 批量规范化

7.5.1 训练深层网络 训练神经网络的实际问题: 数据预处理的方式会对最终结果产生巨大影响。 训练时,多层感知机的中间层变量可能具有更广的变化范围。 更深层的网络很复杂容易过拟合。 批量规范化对小批量的大小有要求,只有批量大小足够…