Redis主从部署

文章目录

  • Redis主从部署
    • 1.下载安装Redis
    • 2.单点双副本主从配置
      • 1.修改配置信息
      • 2.修改配置文件redis.conf
      • 3.拷贝配置文件到每一个实例文件夹里
      • 4.修改每一个实例的端口和工作目录
      • 5.配置主从关系
      • 6.检查效果
    • 3.哨兵模式监控主从
      • 1.创建实例目录
      • 2.复制配置文件并进行修改
      • 3.启动并测试
    • 4.搭建集群
      • 1.准备工作
      • 2.启动集群
      • 3.检查效果

Redis主从部署

1.下载安装Redis

安装依赖

yum -y install wget gcc gcc-c++ make

下载 redis,下载地址

wget https://download.redis.io/redis-stable.tar.gz

安装

[root@redis1 ~]# mkdir /usr/local/redis
[root@redis1 ~]# tar xf redis-stable.tar.gz -C /usr/local/redis/
[root@redis1 ~]# cd /usr/local/redis/redis-stable/
[root@redis1 redis-stable]# make && make install

没报错就是安装成功了

2.单点双副本主从配置

包含一个主节点一个从节点

ip端口角色
192.168.37.946379master
192.168.37.946380slave

1.修改配置信息

创建两个目录给各个节点使用

[root@redis1 redis-stable]# cd /usr/local/redis/
[root@redis1 redis]# mkdir 6379 6380
[root@redis1 redis]# ls
6379  6380  redis-stable

2.修改配置文件redis.conf

# redis实例的声明 IP
replica-announce-ip 192.168.37.94
# 开启RDB
# save ""
save 3600 1
save 300 100
save 60 10000# 关闭AOF
appendonly no# 绑定地址,默认是127.0.0.1,会导致只能在本地访问。修改为0.0.0.0则可以在任意IP访问
bind 0.0.0.0
# 保护模式,关闭保护模式
protected-mode no
# 数据库数量,设置为1
databases 1

3.拷贝配置文件到每一个实例文件夹里

[root@redis1 redis-stable]# cp redis.conf /usr/local/redis/6379/
[root@redis1 redis-stable]# cp redis.conf /usr/local/redis/6380/

4.修改每一个实例的端口和工作目录

port 6379    #修改成对应端口
dir /usr/local/redis/6379/   #修改成配置文件目录

5.配置主从关系

在从节点的配置文件里添加这一配置
slaveof <masterip> <masterport>

6.检查效果

连接主库
[root@redis1 ~]# redis-cli -p 6379
127.0.0.1:6379> info replication
# Replication
role:master    #这里已经显示master节点
connected_slaves:1
slave0:ip=192.168.37.94,port=6380,state=online,offset=112,lag=1
master_failover_state:no-failover
master_replid:ec57c6ee234cca8fd8ca9b2be04865f4b1f37f11
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:112
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:112
127.0.0.1:6379> exit连接从库
[root@redis1 ~]# redis-cli -p 6380
127.0.0.1:6380> info replication
# Replication
role:slave     #这里显示slave节点
master_host:192.168.37.94
master_port:6379
master_link_status:up
master_last_io_seconds_ago:9
master_sync_in_progress:0
slave_read_repl_offset:126
slave_repl_offset:126
slave_priority:100
slave_read_only:1
replica_announced:1
connected_slaves:0
master_failover_state:no-failover
master_replid:ec57c6ee234cca8fd8ca9b2be04865f4b1f37f11
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:126
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:15
repl_backlog_histlen:112
127.0.0.1:6380> exit

3.哨兵模式监控主从

要先搭建好主从架构

我们现在搭建一个两节点形成的Sentinel集群,来监控之前搭建的主从架构

ip端口节点名称
192.168.37.947379s1
192.168.37.947380s2

1.创建实例目录

[root@redis1 ~]# mkdir /usr/local/redis/s1 /usr/local/redis/s2
[root@redis1 ~]# cd /usr/local/redis/
[root@redis1 redis]# ll
total 4
drwxr-xr-x. 2 root root   40 Jul  8 10:09 6379
drwxr-xr-x. 2 root root   40 Jul  8 10:10 6380
drwxrwxr-x. 8 1000 1000 4096 Jul  8 09:41 redis-stable
drwxr-xr-x. 2 root root    6 Jul  8 10:23 s1
drwxr-xr-x. 2 root root    6 Jul  8 10:23 s2

2.复制配置文件并进行修改

[root@redis1 redis-stable]# cp sentinel.conf ../s1/
[root@redis1 redis-stable]# cp sentinel.conf ../s2
[root@redis1 redis-stable]# cd ..
[root@redis1 redis]# ls
6379  6380  redis-stable  s1  s2
[root@redis1 redis]# cd s1/
[root@redis1 s1]# vim sentinel.conf 
[root@redis1 s1]# cd ../s2
[root@redis1 s2]# vim sentinel.confport 7379    #对应端口
sentinel announce-ip "192.168.37.94"  #连接ip
sentinel monitor mymaster 192.168.37.94 6379 1  #主节点ip和端口和从节点数量
sentinel down-after-milliseconds mymaster 5000
sentinel failover-timeout mymaster 60000
dir "/usr/local/redis/s1"

port 7379:是当前sentinel实例的端口

sentinel announce-ip:当前实例的IP

sentinel monitor mymaster 192.168.37.94 6379 1:指定主节点信息

mymaster:主节点名称,自定义,任意写
192.168.37.94 6379:主节点的ip和端口
1:选举master时的quorum值,低于某个值则集群会停止服务。
dir:日志存储的路径

3.启动并测试

[root@redis1 redis]# redis-sentinel s2/sentinel.conf
[root@redis1 redis]# redis-sentinel s1/sentinel.conf

我们尝试让6379宕机

在这里插入图片描述

从节点报错几次之后就会被切换成主节点

在这里插入图片描述

哨兵节点日志

在sentinel集群环境下需要多个sentinel互相沟通来确认某个master是否真的死了,quorum这个参数是进行客观下线的一个依据,意思是至少有quorum个sentinel认为这个master有故障,才会对这个master进行下线以及故障转移。因为有的时候,某个sentinel节点可能因为自身网络原因,导致无法连接master,而此时master并没有出现故障,所以,这就需要多个sentinel都一致认为该master有问题,才可以进行下一步操作,这就保证了公平性和高可用。

4.搭建集群

1.准备工作

因为集群操作需要新的节点进行部署我这边直接删掉了原来的主从节点

[root@redis1 redis]# rm -rf 6379 6380 s1 s2
[root@redis1 redis]# ls
redis-stable
[root@redis1 redis]# mkdir 6379 6380 6381 7379 7380 7381

准备一个新的redis.conf文件,内容如下:

daemonize yes
bind 0.0.0.0
dir /opt/redis-stable/cluster/
port 6379
dbfilename dump_6379.rdb
pidfile /var/run/redis_6379.pid
# 开启集群设置
cluster-enabled yes
# 设置节点配置文件
cluster-config-file node-6379.conf
# 设置节点失联时间,超过该时间(毫秒),集群自动进行主从切换
cluster-node-timeout 15000将配置文件复制到所有的文件夹中,然后启动所有的redis节点

2.启动集群

[root@redis1 ~]# /usr/local/redis/redis-stable/src/redis-cli --cluster create --cluster-replicas 1 192.168.37.94:6379 192.168.37.94:6380 192.168.37.94:6381 192.168.37.94:7379 192.168.37.94:7380 192.168.37.94:7381

在这里插入图片描述

3.检查效果

[root@redis1 ~]# redis-cli -p 6379
127.0.0.1:6379> set a 1
(error) MOVED 15495 192.168.37.94:6381    #如果正常的使用就会出现报错
[root@redis1 ~]# redis-cli -c -p 6379    #集群操作的时候要加-c选项
127.0.0.1:6379> set a 1
-> Redirected to slot [15495] located at 192.168.37.94:6381
OK
192.168.37.94:6381> 

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

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

相关文章

Java增加线程后kafka仍然消费很慢

文章目录 一、问题分析二、控制kafka消费速度属性三、案例描述 一、问题分析 Java增加线程通常是为了提高程序的并发处理能力&#xff0c;但如果Kafka仍然消费很慢&#xff0c;可能的原因有&#xff1a; 网络延迟较大&#xff1a;如果网络延迟较大&#xff0c;即使开启了多线…

使用redis进行短信登录验证(验证码打印在控制台)

使用redis进行短信登录验证 一、流程1. 总体流程图2. 流程文字讲解&#xff1a;3.代码3.1 UserServiceImpl&#xff1a;&#xff08;难点&#xff09;3.2 拦截器LoginInterceptor&#xff1a;3.3 拦截器配置类&#xff1a; 4 功能实现&#xff0c;成功存入redis &#xff08;黑…

悠律凝声环Ringbuds Pro耳机:素皮纹理质感独一档,音质也拉满

悠律&#xff08;UMELODY&#xff09;推出的这款新品——凝声环开放式耳机&#xff0c;以其独特的设计风格和出色的音质表现赢得了众多消费者的喜爱。 在外观上&#xff0c;凝声环采用了时尚潮酷的设计理念&#xff0c;并且采用简约典雅素皮工艺&#xff0c;首次将“素皮”材料…

QT文件生成可执行的exe程序

将qt项目生成可执行的exe程序可按照以下步骤进行&#xff1a; 1、在qt中构建运行生成.exe文件&#xff1b; 2、从自定义的路径中取出exe文件放在一个单独的空文件夹中&#xff08;exe文件在该文件夹中的release文件夹中&#xff09;&#xff1b; 3、从开始程序中搜索qt&#xf…

提升Selenium在Chrome上的HTML5视频捕获效果的五个方法

在使用Selenium进行网页自动化测试时&#xff0c;捕获HTML5视频是一个常见的需求。然而&#xff0c;许多开发者发现&#xff0c;在使用Chrome浏览器时&#xff0c;视频捕获效果并不理想&#xff0c;经常出现视频背景为空白的问题。本文将概述五种方法&#xff0c;帮助提升Selen…

品牌渠道低价管控的思考与策略

消费者在购买产品时追求低价、货比三家&#xff0c;这无可非议。然而&#xff0c;产品低价就一定是好事吗&#xff1f;倘若品牌为了迎合消费者对低价的需求&#xff0c;一味追求低价引流&#xff0c;最终的结果只能是从源头压价&#xff0c;比如在原材料的选购、供应商的选择上…

校园运动用品租借租赁租体育用品平台设计

校园运动用品租借租赁租体育用品平台设计 摘 要 随着社会的发展&#xff0c;社会的方方面面都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。 基于web的校园运动用品租借平台主要有管理员和用户两个角色功能模块&#xff0c;管理员对后台对有相…

Python 接口自动化中,如何实现参数化测试?

在Python接口自动化中&#xff0c;参数化测试是一种非常重要的技术&#xff0c;它可以帮助我们更高效地执行大量的接口测试用例。参数化测试允许我们通过修改测试数据&#xff0c;多次执行同一个测试用例&#xff0c;以验证系统在不同输入情况下的行为。下面&#xff0c;我将从…

[高频 SQL 50 题(基础版)]第一千七百五十七题,可回收且低脂产品

题目&#xff1a; 表&#xff1a;Products ---------------------- | Column Name | Type | ---------------------- | product_id | int | | low_fats | enum | | recyclable | enum | ---------------------- product_id 是该表的主键&#xff08;具有唯…

php简单商城小程序系统源码

&#x1f6cd;️【简单商城小程序】&#x1f6cd;️ &#x1f680;一键开启&#xff0c;商城搭建新体验&#x1f680; 你还在为繁琐的商城搭建流程头疼吗&#xff1f;现在&#xff0c;有了简单商城系统小程序&#xff0c;一切变得轻松又快捷&#xff01;无需复杂的编程知识&a…

羊大师:暑期不“胖”秘籍:羊奶滋养,细嚼慢咽是关键!

夏日炎炎&#xff0c;假期悠长&#xff0c;如何在享受悠闲时光的同时&#xff0c;保持轻盈体态&#xff0c;成了许多人心中的小秘密。今天&#xff0c;就让我们一起揭秘暑期不“胖”的秘籍&#xff0c;让羊奶的滋养与细嚼慢咽的智慧&#xff0c;成为你美丽夏日的守护神。 羊奶轻…

BUUCTF[堆][of_by_one]

堆中of_by_one 介绍&#xff1a; 严格来说 off-by-one 漏洞是一种特殊的溢出漏洞&#xff0c;off-by-one 指程序向缓冲区中写入时&#xff0c;写入的字节数超过了这个缓冲区本身所申请的字节数并且只越界了一个字节。溢出字节为可控制任意字节 &#xff1a;通过修改大小(size…

一个项目学习Vue3---事件处理

学习下面代码&#xff0c;了解Vue3的事件处理 <!--条件和列表渲染--> <template><el-button v-on:click"countAdd" type"primary">count{{ count }}</el-button><el-button click"countAdd" type"primary"…

18.按键消抖模块设计(使用状态机,独热码编码)

&#xff08;1&#xff09;设计意义&#xff1a;按键消抖主要针对的时机械弹性开关&#xff0c;当机械触点断开、闭合时&#xff0c;由于机械触点的弹性作用&#xff0c;一个按键开关在闭合时不会马上稳定地接通&#xff0c;在断开时也不会一下子就断开。因而在闭合以及断开的瞬…

解决centos yum和wget指令都用不了(换源)

先ping一下网络&#xff0c;看看能不能ping通&#xff0c;先排除是网络的问题 ping www.baidu.com有消息回传说明网络有连接&#xff0c;没有的话就要去把虚拟机的网络连接好&#xff08;CtrlC关闭&#xff09; 接下来写centos更换源 一般yum用不了&#xff0c;下载不来wget …

树莓派采集系统

树莓派&#xff08;Raspberry Pi&#xff09;是一款非常受欢迎的小型单板计算机&#xff0c;因其低成本、低功耗以及丰富的I/O接口&#xff0c;非常适合用来搭建数据采集系统。无论是环境监测、智能家居、工业自动化&#xff0c;还是科学实验&#xff0c;树莓派都能胜任。以下是…

苹果开发者取消自动续费

文档&#xff1a;https://support.apple.com/zh-cn/118428 如果没有找到订阅&#xff0c;那就是账号不对 取消订阅后&#xff0c;就不会自动续费了&#xff0c;如果不放心&#xff0c;可以把付款绑定的方式也取消

window 安装 openssl

文章目录 前言window 安装 openssl1. 下载2. 安装3. 配置环境变量4. 测试 前言 如果您觉得有用的话&#xff0c;记得给博主点个赞&#xff0c;评论&#xff0c;收藏一键三连啊&#xff0c;写作不易啊^ _ ^。   而且听说点赞的人每天的运气都不会太差&#xff0c;实在白嫖的话…

虚幻引擎中增强输入映射中鼠标输入无反应,怎么办?

在本地重新实现官方示例Cropout的时候&#xff0c;有增强输入&#xff0c;设置了鼠标左键的输入操作&#xff0c;但是蓝图一直不能触发 鼠标输入无效&#xff0c;而改用键盘输入则能正常触发。 解决办法就是在蓝图中设置输入模式游戏和UI 则鼠标左键控制的IA_Villager可以正…

Mybatis实现RBAC权限模型查询

RBAC权限模型 Role-Based Access Control&#xff0c;中文意思是&#xff1a;基于角色&#xff08;Role&#xff09;的访问控制。这是一种广泛应用于计算机系统和网络安全领域的访问控制模型。 简单来说&#xff0c;就是通过将权限分配给➡角色&#xff0c;再将角色分配给➡用…