搭建Redis主从集群+哨兵+代理predixy

news2024/11/25 10:32:11

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、Redis是什么?
  • 二、搭建Redis集群步骤
    • 1.环境和版本
    • 2.Redis 安装部署
    • 3.主从同步配置
    • 4.哨兵模式配置
    • 5.代理predixy配置
  • 总结


前言

提示:这里可以添加本文要记录的大概内容:

搭建了一个 Redis 服务器集群(主从复制+哨兵模式+代理),实现了主从配置和容灾部署,使得主机出现故障时,可自动进行容灾切换,现详细记录下搭建过程以及遇到的问题


提示:以下是本篇文章正文内容,下面案例可供参考

一、Redis是什么?

Redis(Remote Dictionary Server 远程字典服务)是一个开源的高性能key-value数据库,它通常被称为数据结构服务器,因为值(value)可以是 字符串(String), 哈希(Hash), 列表(list), 集合(sets) 和 有序集合(sorted sets)等类型,官网:https://redis.io/。

1、Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
2、Redis不仅仅支持简单的key-value类型的数据,同时还提供 list,set,zset,hash等数据结构的存储。
3、Redis支持数据的备份,即master-slave模式的数据备份。
不多说网上资料很多

二、搭建Redis集群步骤

1.环境和版本

操作系统:Linux Centos7
Redis版本:redis-5.0.14
Predixy版本:predixy-1.0.5

准备四台Linux服务器centos7系统

服务器IP服务器名节点类型进程
10.20.32.75gremastersvr1predixypredixy
10.20.32.76grestandsvr1masterredis,sentinel
10.20.32.77gresegsvr1slaveredis,sentinel
10.20.32.78gresegsvr2slaveredis,sentinel

2.Redis 安装部署

Master,Slave 三台服务器上分别安装Redis
代码如下(示例):

----#安装Redis
root: mkdir -p /data/redis
root: cd /data/redis
##--解压
root: tar -zxvf redis-5.0.14.tar.gz
root: cd redis-5.0.14
root: make
##命令安装redis到/usr/local/redis中
root: make PREFIX=/usr/local/redis install 
root: cd /usr/local/redis/bin
##进入到redis-5.0.14中复制redis.conf 到  /usr/local/redis/bin下面
##将redis.conf修改daemonize yes 以后端模式启动
##将redis.config里面的bind 127.0.0.1修改为0.0.0.0,不然只允许本机连接,客户端连接的话会拒绝连接
##将redis.config里面的requirepass 123456
##并且将protected-mode no改为yes,意思是是否开启保护模式
root: ./redis-server redis.conf
##查看进程
root: ps -aux | grep redis
##杀死进程
root:kill -9 840

3.主从同步配置

代码如下(示例):

10.20.32.76 主服务(读写)
10.20.32.77 从服务()
10.20.32.78 从服务()

##主redis.config配置
bind:0.0.0.0           #Redis 默认只允许本机访问,把 bind 修改为 0.0.0.0 表示允许所有远程访问,如果想指定限制访问,可设置对应的 ip。
port:6379                 # 监听端口默认为6379,想改其他也行。
protected-mode:no         #关闭保护模式,可以外部访问。
daemonize:yes             #设置为后台启动
logfile:./redis.log       #日志文件,这里放置在当前配置文件目录下,生成后在 bin 目录下可找到
requirepass:123456  #设置 redis 连接密码,如果不需要则可以不用配置
masterauth:123456   #slave 服务连接 master 的密码,如果master没有设置密码则可以不用配置

##从redis.config配置
bind:0.0.0.0           #Redis 默认只允许本机访问,把 bind 修改为 0.0.0.0 表示允许所有远程访问,如果想指定限制访问,可设置对应的 ip。
port:6379                 # 监听端口默认为6379,想改其他也行。
protected-mode:no         #关闭保护模式,可以外部访问。
daemonize:yes             #设置为后台启动
logfile:./redis.log       #日志文件,这里放置在当前配置文件目录下,生成后在 bin 目录下可找到
requirepass:123456  #设置 redis 连接密码,如果不需要则可以不用配置
masterauth:123456   #slave 服务连接 master 的密码,如果master没有设置密码则可以不用配置
replicaof 10.20.32.76 6379  ## 指定当本机为slave服务时,设置master服务的IP地址及端口,在redis启动的时候他会自动跟master进行数据同步,master主机可以不用配置

master服务器发送
set k1 zhanglong
在这里插入图片描述
slave2从自动获取值
在这里插入图片描述
slave1从自动获取值
在这里插入图片描述
主从复制配置成功

4.哨兵模式配置

哨兵可以进行故障转移,如果主宕机了,会投票选出一个新的主,然后原来的主上线后自动变成从机,保证服务的高可用
代码如下(示例):

##修改sentinel.conf配置文
//端口默认为26379。 
port 26379 
//关闭保护模式,可以外部访问。 
protected-mode no 
//设置为后台启动。 
daemonize yes 
//日志文件。 
logfile ./sentinel.log 
//指定主机IP地址和端口,并且指定当有2台哨兵认为主机挂了,则对主机进行容灾切换。 
sentinel monitor mymaster 10.20.32.76 6379 2 
//当在Redis实例中开启了requirepass,这里就需要提供密码。如果没有设置密码则不需要 
sentinel auth-pass mymaster 123456 
//这里设置了主机多少秒无响应,则认为挂了。 
sentinel down-after-milliseconds mymaster 3000 
//主备切换时,最多有多少个slave同时对新的master进行同步,这里设置为默认的1。 
snetinel parallel-syncs mymaster 1 
//故障转移的超时时间,这里设置为三分钟。 
sentinel failover-timeout mymaster 180000 

##sentinel.conf复制到/usr/local/redis/bin下面

##启动哨兵
root: cd /usr/local/redis/bin
root:  ./redis-sentinel  sentinel.conf

#查看哨兵信息
root: ./redis-cli -p 26379 
info sentinel

将Master 的Redis进程Kill
在这里插入图片描述
通过代理发送值
在这里插入图片描述
其他Redis服务器能获取值
在这里插入图片描述
在这里插入图片描述
Master 自动切换到gresegsvr2
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

哨兵模式配置成功

5.代理predixy配置

代码如下(示例):

root: mkdir -p /data/predixy
root: cd /data/predixy
root: tar -xzf predixy-1.0.5-bin-amd64-linux.tar.gz
##部署到工作目录
root: mv predixy-1.0.5 /usr/local/
##修改配置文件
root: cd /usr/local/predixy-1.0.5/conf/

##predixy的配置类似redis, 具体配置项的含义在配置文件里有详细解释,请参考下列配置文件:

##predixy.conf:整体配置文件,会引用下面的配置文件
##cluster.conf:用于Redis Cluster时,配置后端redis信息
##sentinel.conf:用于Redis Sentinel时,配置后端redis信息
##auth.conf:访问权限控制配置,可以定义多个验证密码,可每个密码指定读、写、管理权限,以及定义可访问的健空间
##dc.conf:多数据中心支持,可以定义读写分离规则,读流量权重分配
##latency.conf: 延迟监控规则定义,可以指定需要监控的命令以及延时时间间隔

##修改配置文件predixy.conf
Bind 0.0.0.0:7617
Include sentinel.conf
# Include try.conf

##因为我们的集群就是主从集群+sentinel监控,所以主要配置sentinel.conf
SentinelServerPool {
    Password 123456
    Databases 16
    Hash crc16
    HashTag "{}"
    Distribution modula
    MasterReadPriority 60
    StaticSlaveReadPriority 50
    DynamicSlaveReadPriority 50
    RefreshInterval 1
    ServerTimeout 1
    ServerFailureLimit 10
    ServerRetryTimeout 1
    KeepAlive 120
    Sentinels {
        + 10.20.32.76:26379
        + 10.20.32.77:26379
        + 10.20.32.78:726379
    }
    Group mymaster {
        + 10.20.32.76:6379
        + 10.20.32.77:6379
        + 10.20.32.78:6379		
    }
}

##启动predixy
root: cd /usr/local/predixy-1.0.5/
root: /usr/local/predixy-1.0.5/bin/predixy /usr/local/predixy-1.0.5/conf/predixy.conf

工具连接代理服务器
在这里插入图片描述
通过代理发送设置的值
在这里插入图片描述
Redis三台服务器获取代理发送的值
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
代理配置成功


总结

记录点点滴滴

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

深度学习 -- Dataset与DataLoader

前言 在模型训练的步骤中,数据的部分非常重要,它的过程主要分为数据收集、数据划分、数据读取、数据预处理。 数据收集的有原始样本和标签(Img,label) 数据集的划分需要分为训练集、验证集、测试集。 训练集负责训练模型,验证集…

【C++】C++11常用特性总结

哥们哥们,把书读烂,困在爱里是笨蛋! 文章目录 一、统一的列表初始化1.统一的{}初始化2.std::initializer_list类型的初始化 二、简化声明的关键字1.decltype2.auto && nullptr 三、STL中的一些变化1.新增容器:array &…

趣说数据结构(练习2) —— 顺序表/链表力扣刷题(中等难度)

练习 2 —— 顺序表/链表力扣刷题&#xff08;中等难度&#xff09; 1. 反转链表 II 力扣原题&#xff1a;https://leetcode.cn/problems/reverse-linked-list-ii/ 题目描述 给你单链表的头指针 head 和两个整数 left 和 right &#xff0c;其中 left < right 。请你反转从…

数据可视化大屏的页面布局以及自适应

在做数据可视化大屏之前&#xff0c;我们需要考虑到页面的布局问题以及页面缩放自适应问题&#xff0c;下面分别就这两个方面讲解。 页面布局 类似这种页面区块的明显划分&#xff0c;常用的布局方式有两种&#xff1a; 1、flex布局 2、grid布局 grid布局 grid布局可以按区块…

山东专升本计算机第二章-Windows7操作系统

Windows7操作系统 2.3Windows7的文件和文件夹管理 考点7 Windows7的基础知识 文件&#xff0c;是指存放在外存储器上的一组相关信息的•集合 文件名是操作系统中区分不同文件的唯一标志 文件名是由主文件名和扩展名两部分组成不能使用 ▏ < > * ? \ / &#xff1a; …

单向带头链表的添加修改删除操作

public class HeroNodeDemo {public static void main(String[] args) {HeroNode hero1 new HeroNode(1, "松江");HeroNode hero2 new HeroNode(2, "武松");HeroNode hero3 new HeroNode(3, "及时雨");HeroNode hero4 new HeroNode(4, "…

prometheus实战之一:用ansible部署

欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码)&#xff1a;https://github.com/zq2599/blog_demos 关于《prometheus实战》 《prometheus实战》是欣宸原创的系列文章&#xff0c;旨在通过实战操作来熟悉和掌握prometheus常规技能 本篇概览 本文是《promet…

spring 容器结构/机制debug分析--Spring 学习的核心内容和几个重要概念--IOC 的开发模式--综合解图

目录 Spring Spring 学习的核心内容 解读上图: Spring 几个重要概念 ● 传统的开发模式 解读上图 ● IOC 的开发模式 解读上图 代码示例—入门 xml代码 注意事项和细节 1、说明 2、解释一下类加载路径 3、debug 看看 spring 容器结构/机制 综合解图 Spring Spr…

使用SPY++查看窗口信息去分析C++客户端UI软件问题

目录 1、使用SPY查看窗口的信息 2、使用SPY查看某些软件UI窗口用什么UI组件实现的 2.1、查看海康视频监控客户端安装包程序 2.2、查看华为协同办公软件WeLink 2.3、查看字节协同办公软件飞书 2.4、查看最新版本的Chrome浏览器 2.5、查看小鱼易连视频会议客户端软件 2.6…

STM32H7 DMA

CubeMX配置 发送调用&#xff1a; 发送速度确实挺快的。 接收&#xff1a; HAL_UART_Receive_DMA(&huart1,Rxbuffer,sizeof(Rxbuffer)); 这个函数开启DMA接收,将收到的数据存放到Rxbuffer数组中去,当接收到了sizeof(Rxbuffer)个数据就会回调DMA1_Stream0_IRQHandler函数…

Linux-基本指令

文章目录 Centos用户新增及删除新增删除 两个理论概念管理贯穿 ls指令文件的操作-l (列出详细信息)-a&#xff08;显示所有的文件&#xff0c;包括隐藏文件&#xff09;-F&#xff08;在每个文件名后附上一个字符以说明该文件的类型&#xff09;-d&#xff08;将目录象文件一样…

CTF权威指南 笔记 -第二章二进制文件-2.1-汇编原理

目录 编译原理 GCC编译 四个阶段 (1)预处理阶段 (2)编译阶段 (3)汇编阶段 (4)链接阶段 预处理阶段 编译阶段 汇遍阶段 链接阶段 C语言的生命是从 源文件开始 的 每条C语言都必须要给翻译成 一系列的低级语言 最后 按照可执行文件格式打包 并且作为二进制文件保存起来…

【深入浅出Spring原理及实战】「缓存Cache开发系列」带你深入分析Spring所提供的缓存Cache功能的开发实战指南

带你深入分析Spring所提供的缓存Cache功能的开发实战指南 CacheManager管理器的扩展支持缓存技术类型与CacheManger缓存依赖application配置缓存注解EnableCachingCacheableCachePutCacheEvictCacheConfig SpEL上下文数据注意 SpEL提供了多种运算符 不同Cache的实现机制Concurr…

快速入门微服务保护框架Sentinel

文章目录 一、Sentinel1.1 雪崩问题1.1.1 介绍1.1.2 解决方案 1.2 初识Sentinel1.3 sentinel下载和整合1.4 流量控制1.4.1 簇点链路1.4.2 Sentinel簇点链路设置1.4.3 流控规则1.4.4 热点参数限流1.4.5 隔离和降级1.4.6 授权规则 一、Sentinel 1.1 雪崩问题 1.1.1 介绍 雪崩问…

掌握了这些,才算真正了解C语言数组

也许你认为&#xff0c;C语言中的数组非常好理解&#xff0c;就是把一组相同类型的元素存储在同一块空间里。但是你可能并没有真正理解数组的本质&#xff0c;不信的话请回答一下下面的几个小问题&#xff0c;如果你能非常清晰的回答这些问题&#xff0c;那么你对C语言中的数组…

TF-IDF (BigData, Data Mining)

TF-IDF&#xff08;term frequency–inverse document frequency&#xff09;是一种用于信息检索与数据挖掘的常用加权技术。 TF是词频(Term Frequency)&#xff0c; IDF是逆文本频率指数(Inverse Document Frequency)。 简介 TF-IDF是一种统计方法&#xff0c;用以评估一字词…

【国际象棋】棋盘游戏-微信小程序开发流程详解

与中国象棋类似的&#xff0c;还有国际象棋&#xff0c;知道有人爱玩&#xff0c;于是凭着好奇心&#xff0c;网上研究了一下&#xff0c;跟中国象棋有相似之处&#xff0c;玩法是有些许不一样&#xff0c;不知道象棋最早出于谁之手呢&#xff0c;抽空做一做&#xff0c;最终完…

倾斜摄影超大场景的三维模型的顶层合并,提升模型在WEB三维展示效果

倾斜摄影超大场景的三维模型的顶层合并&#xff0c;提升模型在WEB三维展示效果 倾斜摄影超大场景的三维模型的顶层合并后&#xff0c;可以采取以下措施来提升模型在WEB三维展示效果&#xff1a; 1、优化模型数据&#xff1a;对于倾斜摄影超大场景的三维模型&#xff0c;需要进…

网络安全:namp扫描工具

-sP可以扫描一个网段ip以及状态和基本信息&#xff0c;10.1.1.2-3就是扫描2和3这两个ip的主机 -p可以扫描指定ip对应主机的端口号&#xff0c;可以是一个范围 nmap简单扫描&#xff1a;nmap 地址 检查地址是否在线以及open的端口号 在端口开放&#xff0c;不一定可以与对方正常…