搭建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.75 | gremastersvr1 | predixy | predixy |
| 10.20.32.76 | grestandsvr1 | master | redis,sentinel |
| 10.20.32.77 | gresegsvr1 | slave | redis,sentinel |
| 10.20.32.78 | gresegsvr2 | slave | redis,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 123456Databases 16Hash crc16HashTag "{}"Distribution modulaMasterReadPriority 60StaticSlaveReadPriority 50DynamicSlaveReadPriority 50RefreshInterval 1ServerTimeout 1ServerFailureLimit 10ServerRetryTimeout 1KeepAlive 120Sentinels {+ 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三台服务器获取代理发送的值



代理配置成功
总结
记录点点滴滴
相关文章:
搭建Redis主从集群+哨兵+代理predixy
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、Redis是什么?二、搭建Redis集群步骤1.环境和版本2.Redis 安装部署3.主从同步配置4.哨兵模式配置5.代理predixy配置 总结 前言 提示:…...
Syncthing文件同步 - 免费搭建开源的文件自动同步服务器并公网远程访问【私人云盘】
文章目录 1. 前言2. Syncthing网站搭建2.1 Syncthing下载和安装2.2 Syncthing网页测试2.3 注册安装cpolar内网穿透 3. 本地网页发布3.1 Cpolar云端设置3.2 Cpolar本地设置 4. 公网访问测试5. 结语 1. 前言 在数据爆炸的当下,每天都会产生海量的数据,这些…...
SQL——索引
💡 索引 在关系型数据库中,索引是一种单独的、物理上的对数据库表中的一列或多列的值进行排序的一种存储结构,他是某个表中的一列或着若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单(类似于图书目录&#x…...
Java代码组成部分
一、构造函数与默认构造函数 构造函数,是一种特殊方法。主要用来在创建对象时初始化对象,即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中。 /** * 矩形 */ class Rectangle {/*** 构造函数*/public Rectangle(int leng…...
vue2和vue3有啥区别,vue3的优点有哪些?
Vue.js 是一种流行的 JavaScript 框架,用于开发现代 Web 应用程序。Vue.js 具有简单易用、高效和灵活等特点,能够极大地提高开发效率并改进用户体验。Vue.js 一直在不断更新和改进,它的最新版本是 Vue 3。 在本文中,我们将探讨 V…...
就业内推 | 上市公司招网工,最高25k*14薪,六险一金
01 锐捷网络 招聘岗位:网络工程师 职责描述: 1、承接本产品线(无线或数通)所有咨询、故障、网络变更等业务,响应内外部客户的业务响应需求,需要值班。 2、同时作为产品线技术力的核心,需要负责…...
低代码让开发变得不再复杂
文章目录 前言低代码 VS 传统开发为什么选择IVX?平台比对总结 前言 在数字化的时代背景下,企业都面临巨大的数字化转型的挑战。为了应对这样的挑战,企业软件开发工具和平台也在不断革新和发展。低代码开发平台随之应运而生,成为了…...
【前端客栈】使用CSS实现畅销书排行榜页面
📬📫hello,各位小伙伴们,我是小浪。大家都知道,我最近是在更新各大厂的软件测试开发的面试真题,也是得到了很大的反馈和好评,几位小伙伴也是成功找到了测开的实习,非常不错。如果能前…...
【周末闲谈】超越ChatGPT?科大讯飞星火认知大模型
个人主页:【😊个人主页】 系列专栏:【❤️周末闲谈】 ✨第一周 二进制VS三进制 ✨第二周 文心一言,模仿还是超越? ✨第二周 畅想AR 文章目录 前言星火名字的由来科大讯飞星火落地应用演示赶超ChatGPT的底气在哪里?“硬…...
第N2周:中文文本分类-Pytorch实现
目录 一、前言二、准备工作三、数据预处理1.加载数据2.构建词典3.生成数据批次和迭代器 三、模型构建1. 搭建模型2. 初始化模型3. 定义训练与评估函数 四、训练模型1. 拆分数据集并运行模型 一、前言 🍨 本文为🔗365天深度学习训练营 中的学习记录博客 …...
Salesforce许可证和版本有什么区别,购买帐号时应该如何选择?
Salesforce许可证分配给特定用户,授予他们访问Salesforce产品和功能的权限。Salesforce版本和许可证是不同的概念,但极易混淆。 Salesforce版本:这是对组织购买的Salesforce产品和功能的访问权限。大致可分为Essentials、Professional、Ente…...
接口测试怎么做?全网最详细从接口测试到接口自动化详解,看这篇就够了...
目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 抛出一个问题&…...
DataStore入门及在项目中的使用
首先给个官网的的地址:应用架构:数据层 - DataStore - Android 开发者 | Android Developers 小伙伴们可以直接看官网的资料,本篇文章是对官网的部分细节进行补充 一、为什么要使用DataStore 代替SharedPreferences SharedPreferences&a…...
用Python爬取中国各省GDP数据
介绍 在数据分析和经济研究中,了解中国各省份的GDP数据是非常重要的。然而,手动收集这些数据可能是一项繁琐且费时的任务。幸运的是,Python提供了一些强大的工具和库,使我们能够自动化地从互联网上爬取数据。本文将介绍如何使用P…...
深度学习-第T5周——运动鞋品牌识别
深度学习-第T5周——运动鞋品牌识别 深度学习-第T5周——运动鞋品牌识别一、前言二、我的环境三、前期工作1、导入数据集2、查看图片数目3、查看数据 四、数据预处理1、 加载数据1、设置图片格式2、划分训练集3、划分验证集4、查看标签 2、数据可视化3、检查数据4、配置数据集 …...
自媒体的孔雀效应:插根鸡毛还是专业才华?
自媒体时代,让许多原本默默无闻的人找到了表达自己的平台。有人声称,现在这个时代,“随便什么人身上插根鸡毛就可以当孔雀了”。可是,事实真的如此吗? 首先,我们不能否认的是,自媒体确实为大众提…...
Linux系统优化
一、系统启动流程 1.centos6 centos6开机启动流程,传送门 2.centos7启动流程 二、系统启动运行级别 2.1 什么是运行级别 运行级别:指操作系统当前正在运行的功能级别; [rootweb01 ~]# ll /usr/lib/systemd/system lrwxrwxrwx. 1 root root…...
Java笔记_22(反射和动态代理)
Java笔记_22 一、反射1.1、反射的概述1.2、获取class对象的三种方式1.3、反射获取构造方法1.4、反射获取成员变量1.5、反射获取成员方法1.6、综合练习1.6.1、保存信息1.6.2、跟配置文件结合动态创建 一、反射 1.1、反射的概述 什么是反射? 反射允许对成员变量,成…...
前端web入门-HTML-day01
(创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,请留下您的足迹) 目录 HTML初体验 HTML 定义 标签语法 总结: HTML 基本骨架 基础知识: 总结&#…...
创建一个Go项目
创建一个Go项目 1.创建项目 package mainfunc main() {println("你好啊,简单点了!") }如果是本地的话可以采用go run 项目名的方式。 可以采用go run --work 项目名的方式,此时可以展示日志信息。 如果是只编译的话 go build 项…...
网络编程(Modbus进阶)
思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...
uniapp 对接腾讯云IM群组成员管理(增删改查)
UniApp 实战:腾讯云IM群组成员管理(增删改查) 一、前言 在社交类App开发中,群组成员管理是核心功能之一。本文将基于UniApp框架,结合腾讯云IM SDK,详细讲解如何实现群组成员的增删改查全流程。 权限校验…...
vscode里如何用git
打开vs终端执行如下: 1 初始化 Git 仓库(如果尚未初始化) git init 2 添加文件到 Git 仓库 git add . 3 使用 git commit 命令来提交你的更改。确保在提交时加上一个有用的消息。 git commit -m "备注信息" 4 …...
Leetcode 3576. Transform Array to All Equal Elements
Leetcode 3576. Transform Array to All Equal Elements 1. 解题思路2. 代码实现 题目链接:3576. Transform Array to All Equal Elements 1. 解题思路 这一题思路上就是分别考察一下是否能将其转化为全1或者全-1数组即可。 至于每一种情况是否可以达到…...
23-Oracle 23 ai 区块链表(Blockchain Table)
小伙伴有没有在金融强合规的领域中遇见,必须要保持数据不可变,管理员都无法修改和留痕的要求。比如医疗的电子病历中,影像检查检验结果不可篡改行的,药品追溯过程中数据只可插入无法删除的特性需求;登录日志、修改日志…...
理解 MCP 工作流:使用 Ollama 和 LangChain 构建本地 MCP 客户端
🌟 什么是 MCP? 模型控制协议 (MCP) 是一种创新的协议,旨在无缝连接 AI 模型与应用程序。 MCP 是一个开源协议,它标准化了我们的 LLM 应用程序连接所需工具和数据源并与之协作的方式。 可以把它想象成你的 AI 模型 和想要使用它…...
蓝牙 BLE 扫描面试题大全(2):进阶面试题与实战演练
前文覆盖了 BLE 扫描的基础概念与经典问题蓝牙 BLE 扫描面试题大全(1):从基础到实战的深度解析-CSDN博客,但实际面试中,企业更关注候选人对复杂场景的应对能力(如多设备并发扫描、低功耗与高发现率的平衡)和前沿技术的…...
今日科技热点速览
🔥 今日科技热点速览 🎮 任天堂Switch 2 正式发售 任天堂新一代游戏主机 Switch 2 今日正式上线发售,主打更强图形性能与沉浸式体验,支持多模态交互,受到全球玩家热捧 。 🤖 人工智能持续突破 DeepSeek-R1&…...
多模态大语言模型arxiv论文略读(108)
CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文标题:CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文作者:Sayna Ebrahimi, Sercan O. Arik, Tejas Nama, Tomas Pfister ➡️ 研究机构: Google Cloud AI Re…...
ios苹果系统,js 滑动屏幕、锚定无效
现象:window.addEventListener监听touch无效,划不动屏幕,但是代码逻辑都有执行到。 scrollIntoView也无效。 原因:这是因为 iOS 的触摸事件处理机制和 touch-action: none 的设置有关。ios有太多得交互动作,从而会影响…...
