Linux下部署Redis集群 - 一主二从三哨兵模式
三台服务器redis一主二从三哨兵模式搭建
最近使用到了redis集群部署,使用一主二从三哨兵集群部署redis,将自己部署的过程中的使用心得分享给大家,希望大家以后部署的过程减少一些坑。
服务器准备
3台服务器 ,确定主redis和从redis。
182.168.40.142 (master节点)
182.168.40.141 (slave1节点)
182.168.40.140 (slave2节点)
服务器分别需要开通6379、6380、6381和26379、26380、26381端口或者关闭防火墙
一、 部署redis(基础部署,主从部署先要完成基础部署,该部分操作需要在所有节点执行)
1.下载
wget http://download.redis.io/releases/redis-6.2.6.tar.gz
2. 解压
tar -zxvf redis-6.2.6.tar.gz
mv redis-6.2.6 /usr/local/
3.编译
进入目录命令 cd /usr/local/redis-6.2.6
编译命令 make
4. 安装
进入src命令 cd /usr/local/redis-6.2.6/src/
安装命令 make install
5. 重点:
5.1 新建 bin 和 etc 文件夹5.2 装载配置文件在etc进入目录命令 : cd /usr/local/redis-6.2.6/
创建etc文件夹: mkdir etc
创建bin文件夹: mkdir bin
创建logs文件夹: mkdir logs
5.3 在bin下装载如下文件复制文件命令 cp redis.conf /usr/local/redis-6.2.6/etc
将mkreleasehdr.sh、redis-benchmark、redis-check-aof、redis-check-rdb、redis-cli、redis-server、redis-sentinel文件复制到 bin 文件夹
5.4 改下redis.conf配置cd src/
cp mkreleasehdr.sh redis-benchmark redis-check-aof redis-check-rdb redis-cli redis-server redis-sentinel /usr/local/redis-6.2.6/bin/
修改后的配置如下
5.5 启动redis命令bind:0.0.0.0
protected-mode:no
daemonize:yes
requirepass:123456(密码自己设置)
logfile "/usr/local/redis-6.2.6/logs/redis-6379.log"
dbfilename dump-6379.rdb
切换到bin目录,使用下面命令启动redis
5.6 客户端关闭命令:cd /usr/local/redis-6.2.6/bin
./redis-server /usr/local/redis-6.2.6/etc/redis.conf
方式一:redis-cli -p 端口号shutdown
方式二:首先ps -ef | grep redis 获取进程号 然后kill -9 进程号
二、redis主从配置
2.1 主机redis配置文件
bind : 0.0.0.0 表示允许所有远程访问
port:端口号 (默认就好)
protected-mode:no (关闭保护模式,可以外部访问)
daemonize:yes (设置为后台启动)
pidfile /var/run/redis_6379.pid
logfile “/usr/local/redis-6.2.6/logs/redis_6379.log”
dbfilename dump_6378.rdb
requirepass: redis的连接密码
masterauth: slave 服务连接 master 的密码(跟redis密码一致)
修改配置文件后需要重启redis
2.2 从redis配置文件
bind : 0.0.0.0 表示允许所有远程访问
port:6380
protected-mode:no (关闭保护模式,可以外部访问)
daemonize:yes (设置为后台启动)
pidfile /var/run/redis_6380.pid
logfile “/usr/local/redis-6.2.6/logs/redis_6380.log”
dbfilename dump_6380.rdb
requirepass: redis的连接密码
replicaof: 主redis服务器ip 主redis端口(配置为master的从)
masterauth: slave 服务连接 master 的密码(跟redis密码一致)
修改配置文件后需要重启redis
==================================================
bind : 0.0.0.0 表示允许所有远程访问
port:6381
protected-mode:no (关闭保护模式,可以外部访问)
daemonize:yes (设置为后台启动)
pidfile /var/run/redis_6381.pid
logfile “/usr/local/redis-6.2.6/logs/redis_6381.log”
dbfilename dump_6381.rdb
requirepass: redis的连接密码
replicaof: 主redis服务器ip 主redis端口(配置为master的从)
masterauth: slave 服务连接 master 的密码(跟redis密码一致)
修改配置文件后需要重启redis
2.3 主从测试
1.切换目录
cd /usr/local/redis-6.2.6/bin/
2.连接客户端
./redis-cli -h ip地址 -p端口号
3.密码校验
auth redis密码
4.主从配置信息
info replication
有如下信息代表主从是ok的
Role:代表当前服务器的角色 master代表主redis,slave代表从redis
connected_slaves 后面的数字代表从redis的数量
slave:代表从redis的地址,端口等信息
在 master 上添加数据,看 slave 上是否会同步数据
三、哨兵配置
3.1 主机sentinel配置文件
port 26379
daemonize yes(后台启动)
sentinel monitor mymaster 192.169.40.142 6379 2(主redis的ip 主redis的port 从节点个数)
sentinel auth-pass mymaster 123456(redis的密码)
pidfile "/var/run/redis-sentinel_26379.pid"
logfile "/usr/local/redis-6.2.6/logs/sentinel_26379.log"
3.2 从机sentinel配置文件
port 26380
daemonize yes(后台启动)
sentinel monitor mymaster 192.169.40.142 6379 2(主redis的ip 主redis的port 从节点个数)
sentinel auth-pass mymaster 123456(redis的密码)
pidfile "/var/run/redis-sentinel_26380.pid"
logfile "/usr/local/redis-6.2.6/logs/sentinel_26380.log"
==================================================
port 26381
daemonize yes(后台启动)
sentinel monitor mymaster 192.169.40.142 6379 2(主redis的ip 主redis的port 从节点个数)
sentinel auth-pass mymaster 123456(redis的密码)
pidfile "/var/run/redis-sentinel_26381.pid"
logfile "/usr/local/redis-6.2.6/logs/sentinel_26381.log"
3.3 验证哨兵模式
1.分别在三台机器上,进入 redis 解压目录,依次执行2. 连接任意 sentinel 节点cd /usr/local/bin/
./redis-sentinel /usr/local/etc/sentinel.conf
3. redis 命令行上,执行 info sentinel 命令cd /usr/local/redis-6.2.6/bin
./redis-cli -h ip -p port
如: ./redis-cli -h 192.168.40.142 -p 26379
验证 sentinel 状态为ok就是正确的,有如下类似信息,则配置完成
4. 测试哨兵模式
停止主服务器6379,测试主服务器的重新选举,会另外选一个从服务器作为主服务器
重新启动6379,不会把6379切换成主服务器,而是作为了从服务器
相关文章:

Linux下部署Redis集群 - 一主二从三哨兵模式
三台服务器redis一主二从三哨兵模式搭建 最近使用到了redis集群部署,使用一主二从三哨兵集群部署redis,将自己部署的过程中的使用心得分享给大家,希望大家以后部署的过程减少一些坑。 服务器准备 3台服务器 ,确定主redis和从red…...

实战设计模式之建造者模式
概述 在实际项目中,我们有时会遇到需要创建复杂对象的情况。这些对象可能包含多个组件或属性,而且每个组件都有自己的配置选项。如果直接使用构造函数或前面介绍的工厂方法来创建这样的对象,可能会导致以下两个严重问题。 1、参数过多。当一个…...

活动预告 | Microsoft Azure 在线技术公开课:使用 Azure OpenAI 服务构建生成式应用
课程介绍 通过 Microsoft Learn 免费参加 Microsoft Azure 在线技术公开课,掌握创造新机遇所需的技能,加快对 Microsoft Cloud 技术的了解。参加我们举办的“使用 Azure OpenAI 服务构建生成式应用”活动,了解如何使用包括 GPT 在内的强大的…...
ubuntu安装firefox
firefox下载地址:https://ftp.mozilla.org/pub/firefox/releases/ 卸载 sudo apt-get update dpkg --get-selections |grep firefox apt-get purge firefox 解压 tar -xjf firefox*.tar.bz2复制文件 sudo mv firefox/ /opt/firefox30sudo mv /usr/bin/firefox /…...
计算机网络原理(谢希仁第八版)第4章课后习题答案
第四章 网络层 详细计算机网络(谢希仁-第八版)第四章习题全解_计算机网络第八版谢希仁课后答案-CSDN博客 1.网络层向上提供的服务有哪两种?是比较其优缺点。网络层向运输层提供 “面向连接”虚电路(Virtual Circuit)服…...

RabbitMQ-基本使用
RabbitMQ: One broker to queue them all | RabbitMQ 官方 安装到Docker中 docker run \-e RABBITMQ_DEFAULT_USERrabbit \-e RABBITMQ_DEFAULT_PASSrabbit \-v mq-plugins:/plugins \--name mq \--hostname mq \-p 15672:15672 \-p 5672:5672 \--network mynet\-d \rabbitmq:3…...
从零开始学架构——互联网架构的演进
1 技术演进 1.1 技术演进的动力 对于新技术,我们应该站在行业的角度上思考,哪些技术我们要采取,哪些技术我们不能用,投入成本过大会不会导致满盘皆输?市场、技术、管理三者组成的业务发展铁三角,任何一个…...

python +tkinter绘制彩虹和云朵
python tkinter绘制彩虹和云朵 彩虹,简称虹,是气象中的一种光学现象,当太阳光照射到半空中的水滴,光线被折射及反射,在天空上形成拱形的七彩光谱,由外圈至内圈呈红、橙、黄、绿、蓝、靛、紫七种颜色。事实…...

重新整理机器学习和神经网络框架
本篇重新梳理了人工智能(AI)、机器学习(ML)、神经网络(NN)和深度学习(DL)之间存在一定的包含关系,以下是它们的关系及各自内容,以及人工智能领域中深度学习分支对比整理。…...

TypyScript从入门到精通
TypyScript从入门到精通 TypyScript 是什么?增加了什么环境搭建二、为何需要 TypeScript三、编译 TypeScript四、类型声明五、类型推断基本类型六、类型总览JavaScript 中的数据类型TypeScript 中的数据类型1. 上述所有 JavaScript 类型2. 六个新类型:3.…...

【MATLAB】绘制投资组合的有效前沿
文章目录 一、数据准备二、有效前沿三、代码3.1 数据批量读取、预处理3.2 绘制可行集3.3 绘制有效前沿3.4 其它-最大夏普率 一、数据准备 准备多个股票的的历史数据,目的就是找到最优的投资组合。 下载几个标普500里面的公式的股票数据吧,下载方法也可…...

matlab时频分析库
time frequency gallery...

GBase 8s 数据库备份还原
每一天都是一个新的篇章,等待着你去书写属于自己的故事!!! 一:备份 1.1.下载脚本文件,并上传到数据库服务器上相应目录。 解压后目录为: 说明: dbcomm.sh:导出注释脚本…...
C++模板相关概念汇总
文章目录 一、模板的概念与作用二、函数模板模板的非类型参数调用顺序 三、类模板四、模板的编译模型 一、模板的概念与作用 C模板是一种强大的代码复用机制,它允许程序员编写通用的代码,能够处理不同类型的数据,而无需为每种类型都重复编写…...

MYSQL------sql基础
SQL基础与简介 定义:SQL即结构化查询语言(Structured Query Language),是一种特殊目的的编程语言,用于存取数据以及查询、更新和管理关系数据库系统。作用:可以用于数据库的创建、数据的插入、查询、更新和…...
React Router 用法概览
React Router 用法 React 使得开发者能够轻松地创建交互式的单页应用(SPA),单页应用的一个常见挑战是如何处理页面导航和路由吗,React Router 就是解决这个问题的工具 路由(Router)是 React Router 的核心…...

网络安全之高防IP的实时监控精准防护
高防IP是一种网络安全设备,用于保护网络服务不受到各类攻击的影响,确保业务的持续稳定运行。它通过监控、识别和封锁恶意攻击流量,提供高级别的防护,降低业务被攻击的风险,并提升网络的稳定性和可靠性。 一、实时监控的…...

2024年中国新能源汽车用车发展怎么样 PaperGPT(二)
用车趋势深入分析 接上文,2024年中国新能源汽车用车发展怎么样 PaperGPT(一)-CSDN博客本文将继续深入探讨新能源汽车的用车强度、充电行为以及充电设施的现状。 用车强度 月均行驶里程:2024年纯电车辆月均行驶超过1500公里&…...
LINUXC 时间相关操作
文章目录 时间戳获取本地时间struct tm 结构体高精度的时间struct timeval 结构体相关函数time()localtime()gmtime()gettimeofday()strftime()mktime() 示例代码 时间戳 时间戳是指计算机中存储的数字型时间。它是以一个特定的时间点作为起点(通常是1970年1月1日0…...

网络游戏之害
网络游戏之害: 网络游戏于今之世风靡四方,其娱人耳目、畅人心怀之效,固为人知,然所藏之害,若隐伏之暗潮,汹涌而至时,足以覆舟,尤以青年为甚,今且缕析其害,以…...
RestClient
什么是RestClient RestClient 是 Elasticsearch 官方提供的 Java 低级 REST 客户端,它允许HTTP与Elasticsearch 集群通信,而无需处理 JSON 序列化/反序列化等底层细节。它是 Elasticsearch Java API 客户端的基础。 RestClient 主要特点 轻量级ÿ…...
树莓派超全系列教程文档--(62)使用rpicam-app通过网络流式传输视频
使用rpicam-app通过网络流式传输视频 使用 rpicam-app 通过网络流式传输视频UDPTCPRTSPlibavGStreamerRTPlibcamerasrc GStreamer 元素 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 使用 rpicam-app 通过网络流式传输视频 本节介绍来自 rpica…...

云启出海,智联未来|阿里云网络「企业出海」系列客户沙龙上海站圆满落地
借阿里云中企出海大会的东风,以**「云启出海,智联未来|打造安全可靠的出海云网络引擎」为主题的阿里云企业出海客户沙龙云网络&安全专场于5.28日下午在上海顺利举办,现场吸引了来自携程、小红书、米哈游、哔哩哔哩、波克城市、…...

MFC内存泄露
1、泄露代码示例 void X::SetApplicationBtn() {CMFCRibbonApplicationButton* pBtn GetApplicationButton();// 获取 Ribbon Bar 指针// 创建自定义按钮CCustomRibbonAppButton* pCustomButton new CCustomRibbonAppButton();pCustomButton->SetImage(IDB_BITMAP_Jdp26)…...
MySQL用户和授权
开放MySQL白名单 可以通过iptables-save命令确认对应客户端ip是否可以访问MySQL服务: test: # iptables-save | grep 3306 -A mp_srv_whitelist -s 172.16.14.102/32 -p tcp -m tcp --dport 3306 -j ACCEPT -A mp_srv_whitelist -s 172.16.4.16/32 -p tcp -m tcp -…...

使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台
🎯 使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台 📌 项目背景 随着大语言模型(LLM)的广泛应用,开发者常面临多个挑战: 各大模型(OpenAI、Claude、Gemini、Ollama)接口风格不统一;缺乏一个统一平台进行模型调用与测试;本地模型 Ollama 的集成与前…...
python报错No module named ‘tensorflow.keras‘
是由于不同版本的tensorflow下的keras所在的路径不同,结合所安装的tensorflow的目录结构修改from语句即可。 原语句: from tensorflow.keras.layers import Conv1D, MaxPooling1D, LSTM, Dense 修改后: from tensorflow.python.keras.lay…...

保姆级教程:在无网络无显卡的Windows电脑的vscode本地部署deepseek
文章目录 1 前言2 部署流程2.1 准备工作2.2 Ollama2.2.1 使用有网络的电脑下载Ollama2.2.2 安装Ollama(有网络的电脑)2.2.3 安装Ollama(无网络的电脑)2.2.4 安装验证2.2.5 修改大模型安装位置2.2.6 下载Deepseek模型 2.3 将deepse…...
Java求职者面试指南:计算机基础与源码原理深度解析
Java求职者面试指南:计算机基础与源码原理深度解析 第一轮提问:基础概念问题 1. 请解释什么是进程和线程的区别? 面试官:进程是程序的一次执行过程,是系统进行资源分配和调度的基本单位;而线程是进程中的…...
LRU 缓存机制详解与实现(Java版) + 力扣解决
📌 LRU 缓存机制详解与实现(Java版) 一、📖 问题背景 在日常开发中,我们经常会使用 缓存(Cache) 来提升性能。但由于内存有限,缓存不可能无限增长,于是需要策略决定&am…...