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

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

文章目录

  • 前言
  • 一、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三台服务器获取代理发送的值
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
代理配置成功


总结

记录点点滴滴

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

SpringSecurity框架学习与使用

SpringSecurity框架学习与使用 SpringSecurity学习SpringSecurity入门SpringSecurity深入认证授权自定义授权失败页面权限注解SecuredPreAuthorizePostAuthorizePostFilterPreFilter 参考 SpringSecurity学习 SpringSecurity入门 引入相关的依赖,SpringBoot的版本…

R语言 | 数据框

目录 一、认识数据框 7.1 建立第一个数据框 7.2 验证与设定数据框的列名和行名 二、认识数据框的结构 三、获取数据框内容 3.1 一般获取 3.2 特殊字符$ 3.3 再看取得的数据 四、使用rbind()函数增加数据框的行数据 五、使用cbind()函数增加数据框的列数据 5.1 使用$符号…

超星学习通小助手多线程工具Python

话不多说,直接开始,不会安转的直接使用后面两款,下载直接打开exe运行 第一款:网课小助手python,需要自行安装Python环境(支持Windows、Mac、Linux各种环境) https://wwiv.lanzoul.com/ifVrC0vk…

时序预测 | MATLAB实现BO-CNN-GRU贝叶斯优化卷积门控循环单元时间序列预测

时序预测 | MATLAB实现BO-CNN-GRU贝叶斯优化卷积门控循环单元时间序列预测 目录 时序预测 | MATLAB实现BO-CNN-GRU贝叶斯优化卷积门控循环单元时间序列预测效果一览基本介绍模型描述程序设计参考资料 效果一览 基本介绍 基于贝叶斯(bayes)优化卷积神经网络-门控循环单元(CNN-GR…

数据库设计与前端框架

数据库设计与前端框架 学习目标: 理解多租户的数据库设计方案 熟练使用PowerDesigner构建数据库模型理解前端工程的基本架构和执行流程 完成前端工程企业模块开发 多租户SaaS平台的数据库方案 多租户是什么 多租户技术(Multi-TenancyTechnology&a…

力扣sql中等篇练习(二十一)

力扣sql中等篇练习(二十一) 1 最大数量高于平均水平的订单 1.1 题目内容 1.1.1 基本题目信息 1.1.2 示例输入输出 a 示例输入 b 示例输出 1.2 示例sql语句 # Write your MySQL query statement below WITH t1 as (SELECT order_id,avg(quantity) AquantityFROM OrdersDeta…

GEE:如何进行对MOD09GA数据集进行水体/云掩膜并计算NDVI将其导出至云盘?

目录 01 为什么用GEE而不是传统的下载ENVIArcGIS? 02 操作详解 01 为什么用GEE而不是传统的下载ENVIArcGIS? 由于地理空间数据云中缺少2015年10月份的NDVI月合成影像,于是查看了地理空间数据云的NDVI数据集处理的一些介绍如下(地理空间数据…

什么是SpringBoot自动配置

概述: 现在的Java面试基本都会问到你知道什么是Springboot的自动配置。为什么面试官要问这样的问题,主要是在于看你有没有对Springboot的原理有没有深入的了解,有没有看过Springboot的源码,这是区别普通程序员与高级程序员最好的…

【C++】8.编译:CMake工具入门

😏*★,*:.☆( ̄▽ ̄)/$:*.★* 😏这篇文章主要介绍CMake工具的入门使用。————————————————学其所用,用其所学。——梁启超————————————————— 欢迎来到我的博客,一起学习知识…

【前端客栈】使用CSS实现畅销书排行榜页面

📬📫hello,各位小伙伴们,我是小浪。大家都知道,我最近是在更新各大厂的软件测试开发的面试真题,也是得到了很大的反馈和好评,几位小伙伴也是成功找到了测开的实习,非常不错。如果能前…

Java的线程

介绍线程 线程是系统调度的最小单元,一个进程可以包含多个线程,线程是负责执行二进制指令的。 每个线程有自己的程序计数器、栈(Stack)、寄存器(Register)、本地存储(Thread Local&#xff09…

Git常用命令rebase

Git常用命令rebase 1、git常用命令rebase rebase 会把你当前分支的 commit 放到公共分支的最后面,所以叫变基,就好像你从公共分支又重新拉出来这个 分支一样。 例如如果你从 master 拉了个 feature 分支出来,然后你提交了几个 commit&…

【C++】YY带你手把手掌握C++系列 (P2)未完结

前言 大家好,这里是YY的带你手把手掌握C系列。大部分知识点都含有【特性介绍】【使用场景】【注意要点】【易混淆点】【代码演示】【画图演示】由于C体系之庞大,所以该系列以分P形式更新!本篇博客为P2! 大家可以通过本篇博客查找C…

【鲁棒优化、机会约束】具有分布鲁棒联合机会约束的能源和储备调度研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

项目实现读写分离操作(mysql)

读写分离 1.问题说明 2.读写分离 Master(主库)----(数据同步)—> Slave(从库) Mysql主从复制 mysql主从复制 介绍 mysql主从复制是一个异步的复制过程,底层是基于mysql数据库自带的二进制日志功能。就是一台或多台…

算法套路十七——买卖股票问题:状态机 DP

算法套路十七——买卖股票问题:状态机 DP 状态机DP是一种将动态规划方法应用于有限状态机(Finite State Machine)的问题求解方法。 状态机DP(State Machine DP)是一种动态规划的思想,它通常用于解决一些具…

如何应用金字塔模型提高结构化表达能力

看一下结构化表达的定义: 结构化表达:是基于结构化思维,理清事物整理与部分之间关系、换位思考后,进行简洁、清晰和有信服力的表达,是一种让受众听得明白、记得清楚、产生认同的精益沟通方式。 结构化表达的基本原则是…

总结如何申请注册 GitHub 教师教育优惠 Benefits for Teachers 来免费使用 copilot

目录 1. GitHub 教师教育优惠有什么2. 如何申请教师教育优惠呢2.1 选择学校2.2 更改个人信息2.3 准备证明材料2.4 提交申请2.5 遇到的问题2.5.1 问题 12.5.2 问题 22.5.3 问题 3 3. 申请免费的 GitHub Copilot 学生注册不在此处赘述了,网上有很多教程可以参考。但是…

前端BFC

一、首先我们要先了解常见的定位方案,总共3种(普通流、浮动、绝对定位) 而BFC是属于普通流的 我们可以把BFC看作为页面的一块渲染区域,他有着自己的渲染规则 简单来说BFC可以看作元素的一种属性,当元素拥有了BFC属性…

Python os模块详解

1. 简介 os就是“operating system”的缩写,顾名思义,os模块提供的就是各种 Python 程序与操作系统进行交互的接口。通过使用os模块,一方面可以方便地与操作系统进行交互,另一方面页也可以极大增强代码的可移植性。如果该模块中相…