Redis3.x安装配置,Sentinel部署

      redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排 序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文 件,并且在此基础上实现了master-slave(主从)同步。

1.安装配置

1.1安装

cd /home/tools
# 解压安装包后拷贝到/usr/local目录
tar -zxvf redis-3.0.4.tar.gz
cp -r /home/tools/redis-3.0.4 /usr/local
# 进入拷贝的src目录
cd /usr/local/redis/src
# 安装
make MALLOC libc
1.2将配置文件redis.conf拷贝到/etc/redis
cp -r /usr/local/redis/redis.conf /etc/redis

    配置详情请参考http://blog.sina.com.cn/s/blog_636415010101970j.html

1.3编写开机启动脚本

vi /etc/init.d/redis

    输入如下内容:

PATH=/usr/local/bin:/sbin:/usr/bin:/bin
 
REDISPORT=6379
EXEC=/usr/local/redis/src/redis-server
REDIS_CLI=/usr/local/redis/src/redis-cli

PIDFILE=/var/run/redis.pid
# redis config file path
CONF="/etc/redis/redis.conf" 
 
case "$1" in
        start)
                if [ -f $PIDFILE ]
                then
                        echo "$PIDFILE exists, process is already running or crashed."
                else
                        echo "Starting Redis server..."
                        $EXEC $CONF
                fi
                if [ "$?"="0" ]
                then
                        echo "Redis is running..."
                fi
                ;;
        stop)
                if [ ! -f $PIDFILE ]
                then
                        echo "$PIDFILE exists, process is not running."
                else
                        PID=$(cat $PIDFILE)
                        echo "Stopping..."
             		$REDIS_CLI -p $REDISPORT SHUTDOWN

                        while [ -x $PIDFILE ]
                        do
                                echo "Waiting for Redis to shutdown..."
                                sleep 1
                        done
                        echo "Redis stopped"
                fi
                ;;
        restart|force-reload)
                ${0} stop
                ${0} start
                ;;
        *)
                echo "Usage: /etc/init.d/redis {start|stop|restart|force-reload}" >&2
                exit 1
esac
chmod -R 755 /etc/init.d/redis

    完成后设置开机启动:

chkconfig redis on

    或在/etc/rc.d/rc.local中添加

service redis start

    至此,基本的安装配置完成。

2.Sentinel架构实现主从容灾切换

2.1实现目标

目标清单:

1) 192.168.31.220、192.168.31.221和192.168.31.222为三台redis服务器。初始状态下220为master,221和222为slave,slave的数据来源于master。

2)redis服务器上各自存在一个Sentinel,监控本机redis的运行情况,并通知给闭路环上其它的redis节点;

3)当master发生异常(例如:宕机和断电等)导致不可运行时,Sentinel将通知给其它节点,而剩余节点上的Sentinel将重新选举出新的master,而原来的master重新恢复正常后,则一直扮演slave角色;
4)规定整个架构体系中,master提供读写服务,而slave只提供读取服务。

2.2实现过程

2.2.1编辑master(220)的配置文件

vi /etc/redis/redis.conf
# 开启守护模式
daemonize yes
# 指定数据存储目录
dir /home/data/redis
# 打开aof持久化
appendonly yes
# 每秒一次aof写
appendfsync everysec

 2.2.2编辑slave(221和222上)的配置文件

   在2.2.1节的基本上加入如下配置项:

# 指定所属的主机
slaveof 192.168.31.220 6379
# 指定从机"只读"
slave-read-only yes

 2.2.3编辑Sentinel文件

# 将sentinel配置文件拷贝到/etc/redis目录后编辑
cp /usr/local/redis/sentinel.conf /etc/redis/sentinel.conf
vi /etc/redis/sentinel.conf
# sentinel通讯端口
port 26379
# sentinel需要监控的master/slaver信息,格式为sentinel monitor <mastername> <masterIP> <masterPort> <quorum>
# 其中<quorum>应该小于集群中slave的个数,当失效的节点数超过了<quorum>,则认为整个体系结构失效
sentinel monitor redisMaster 192.168.31.220 6379 2
# master被当前sentinel实例认定为失效的间隔时间,格式为sentinel down-after-milliseconds <mastername> <milliseconds>
sentinel down-after-milliseconds redisMaster 10000
# 当新master产生时,同时进行“slaveof”到新master并进行同步复制的slave个数
# 在salve执行salveof同步时,将会终止客户端请求。
# 此值较大,意味着“集群”终止客户端请求的时间总和和较大。
# 此值较小,意味着“集群”在故障转移期间,多个salve向客户端提供服务时仍然使用旧数据。
sentinel parallel-syncs redisMaster 1
# failover过期时间。当failover开始后,在此时间内仍然没有触发任何failover操作,当前sentinel将会认为此次failoer失败。
sentinel failover-timeout redisMaster 60000

    完成后,将此配置文件拷贝到其它节点的相同目录下。

 2.2.4启动所有主从上的sentinel   

    前提是它们各自的server已成功启动

cd /usr/local/redis/src
./redis-sentinel /etc/redis/sentinel.conf

 2.3测试

2.3.1在任意一个节点上查看主从机的复制信息

cd /usr/local/redis/src

1)查看Master节点信息:

./redis-cli -h 192.168.31.220 -p 6379 info Replication


      从上图可看出,此时220的角色为master,有两个slave(221和222)被连接成功。此时打开master的sentinel.conf,在末尾可看到如下自动写入的内容:

2)
查看Slave节点信息:

./redis-cli -h 192.168.31.221 -p 6379 info Replication


       从上图可看出,此时221(或222,将命令行的ip换为222)的角色为slave,它们所属的master为220。此时打开slave的sentinel.conf,在末尾可看到如下自动写入的内容:

3)客户端连接到master后,set一条测试数据

./redis-cli -h 192.168.31.220 -p 6379
set name daniele_220

4)连接到任意一个节点上后,通过get命令可以获取数据

get name
5)在任意一个slave上执行诸如set这样的写入操作时,将得到如下示例的错误信息:
(error) READONLY You can't write against a read only slave.

6)关掉任意一个slave节点,所有节点的sentinel都可以检测到,出现如下示例信息:

       从上图可看出221被
sentinel检测到已处于关闭状态,此时再来查看剩余节点的主从信息,它们的角色不会发生变化,只是master上的connected_slaves变为了1

7)重启被关闭的slave节点,所有节点的sentinel都可以检测到,出现如下示例信息:

      从上图可看出221又被sentinel检测到已处于可用状态,此时再来查看节点的主从信息,它们的角色仍然不会发生变化,master上的connected_slaves又变为了2

8)关掉220master节点,待所有节点的sentinel都检测到后,再来查看两个Slave节点的主从信息,发现其中一个节点的角色通过选举后会成为master:

     从上图的最后一行监控信息可看出,222此时被选举为master,此时打开的222的redis.conf文件,slaveof配置项已被自动删除了。而221和220的
redis.conf文件中slaveof配置项的值被自动修改为192.168.31.222 6379。
   
在这个新master上执行诸如set这样的写入操作将被成功执行

set name daniele_222

9)重启220,待所有节点的sentinel都检测到后,再来查看所有节点的主从信息,此时222的master角色不会被重新抢占,而220角色会从原来的master变为了slave

      此时执行get name得到的值为daniele_222,而不是原来的daniele_220,因为220重启后会自动从新的master中同步数据。此时打开220的redis.conf文件,会在末尾找到如下信息:

 3.总结        

      Redis sentinel模块是在2.4+版本中提供的一套主从自动切换的解决方案,主要为集群提供了master存活检测,集群服务监控, 自动故障转移和角色转换等功能,从一个方面说是提高了redis集群的可用性。

      从2.3节中可看出,自动故障转移和角色转换归根结底就是一个写redis.conf和sentinel.conf的过程,通过在节点的redis.conf中写入/删除slaveof配置来实现角色的转换,通过在节点的sentinel.conf中写入不同的known-slave和known-sentinel等来实现故障转移。而这一系列的过程是有时间消耗的,当master失效时,在sentinel没有选举出新master之前,整个架构体系是没有一个“可写”节点的。因此,在这期间如果客户端程序发起了写入操作将会报错。同理,在sentinel没有选举出新master之前,不要立即重启失效的master,否则也会使整个架构体系没有一个“可写”节点,所有redis的角色都为slave(这应该算是一个BUG吧)。

      另外,在经过了自动故障转移和角色转换这一完整的过程后,使整个架构体系中的master地址发生了变化,作为客户端应用程序来说,同样需要一套监听机制将master的连接换成新的地址,否则在严格的“读写分离”场景下将会出现错误。Jedis是redis官方推荐的JAVA API,其中在2.2.2+版本提供了对Sentinel的支持,应用可通过redis.clients.jedis.JedisSentinelPool.getResource()取得的Jedis实例会及时更新到新的主实例地址。具体可参考http://www.tuicool.com/articles/naeEJbv和http://segmentfault.com/a/1190000002690506

      redis3.x最大的亮点在于提供了另一套集群方案(reids-cluster),它会将数据按照hash slot(哈希槽)的方式存储在不同的节点上,真正实现了分布式集群的目标。

Windows下Redis Sentinel部署(包含Redis Replication) 网上未发现太多windows下部署Redis Replication和Redis Sentinel的技术贴,在学习过程中总结下版权声明:本文为原创文章,转载必须注明出处 1. 准备 知识准备:http://www.redis.cn/  介质:https://github.com/MSOpenTech/redis   (redis官方没有windows版本,微软的某小组搞了个,目前版本3.0x 阅读详情

相关推荐

Redis Sentinel集群规范部署手册

若搭建Redis Cluster,需要额外添加参数cluster-enabled yes、cluster-require-full-coverage no、cluster-config-file nodes-2001.conf等。: net.ipv4.tcp_tw_reuse设置为1表示开启重用,允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭。获取监视同一主服务器的其他所有Sentinel的相关信息。

qq_25241721的博客 311

大数据学习初级入门教程(十三) —— Redis 3.x 伪分布式集群(哨兵模式)的安装、配置、启动和测试

工作过程中发现,很多 Redis 集群都是哨兵模式,这篇文章主要借鉴前面的伪分布式集群,搭建一个伪分布式的哨兵模式集群。由于 Redis 集群哨兵一版配置奇数个节点,比如3、5、...,这里定三个哨兵节点,一个主节点和两个从节点,即 1 + 2 + 3 模式。所以总共需要6个redis节点。

郎图腾 1096

Windows环境下Redis-Sentinel高可用部署完整指南

再强大的高可用架构也无法防范人为误删或磁盘损坏。我们必须坚持“3-2-1”备份原则:- 至少3份副本- 使用2种介质(本地+云存储)1份异地保存自动化备份脚本示例如下:# 清理7天前旧备份每月执行一次恢复演练,验证RTO(恢复时间目标)和RPO(恢复点目标)。记住,没经过验证的备份等于没有备份!回望过去,从最初的慌乱应对到现在从容不迫,最大的转变不是技术本身,而是心态。

weixin_42361478的博客 1099

Redis三个版本(3.x,4.x,6.x)对于多线程的使用比对

redis 3.x不支持多线程,请求数据顺序执行,对于多个客户端并发访问redis-server时的执行状态如下,我们假如每个圆圈的执行时间是一致的代表一个执行单位,那么redis3.x的执行时间就是六个执行单位。对于redis6.x,开启多线程执行后,主线程的顺序执行只在执行阶段,前置的解析阶段,到后面的返回阶段都可以交由子线程去执行。. 对于redis4.x而言,其能支持的多线程的命令比较有限。

m0_37903574的博客 1575

地平线天工开物AI开发平台实战:从量化训练到模型部署的完整指南

本文提供了地平线天工开物(OpenExplorer)AI开发平台的实战指南,详细解析了从量化训练到模型部署的完整流程。文章重点对比了量化感知训练(QAT)与训练后量化(PTQ)两条核心路径的优劣与适用场景,并分享了图像分类模型PTQ部署的实战经验与常见问题调试技巧,旨在帮助开发者高效地将AI模型部署到地平线AI芯片上。

weixin_29046035的博客 456

【深度学习】通俗易懂讲解循环神经网络LSTM

目录 1、循环神经网络(Recurrent Neural Networks) 2、长依赖存在的问题 3、LSTM 网络 4、LSTMs的核心思想 5、一步一步理解LSTM 6、LSTM的变种 7、总结 1、循环神经网络(Recurrent Neural Networks) 人对一个问题的思考不会完全从头开始。比如你在阅读本片文章的时,你会根据之前理解过的信息来理解下面看到的文字。...

Nieson2012的专栏 2729

redis3.x集群

redis3.x集群 客户端分片都不会共享数据,容易造成单点缓存丢失的问题,集群会自动在多个redis节点之间共享数据,不会造成单点问题 搭建redis集群 简历redis集群,至少需要3个master实例,同时,为了使集群高可用,需要为每个master实例至少分配一个salve 下载redis-3.2.6.tar.gz ,下载地址 将下载好的压缩包赋值到指定的服务器上 解压安装 cd /usr/local/src tar -zxvf redis-3.2.6.tar.gz cd redis-3.2.6/

m0_49979570的博客 180

告别单调!3种方法给VS2019换上VSCode同款NightOwl主题(附字体优化技巧)

本文详细介绍了三种将VSCode热门NightOwl主题移植到VS2019的方法,包括扩展市场直装、官方主题库导入与增强以及手动调色实现像素级复刻。同时提供了字体优化与视觉增强技巧,帮助开发者打造更舒适的编码环境。

weixin_28836989的博客 212

Redis3.x 源码安装

redis源码编译安装1、下载源码包  

忆网 6760

SQL Server数据库备份与恢复

在 SQL Server 中,数据库备份与恢复是保障数据安全的核心操作。

zjw541806的博客 1876

YOLO26涨点改进 | 全网独家,注意力创新改进篇 | Arxiv2025 | YOLO26引入MSLA多尺度线性注意力模块,高效提取多尺度特征和建模长程依赖,含多种创新改进,助力有效涨点

本文提出了一种多尺度线性注意力模块(MSLA)来优化YOLO26模型。MSLA通过并行使用不同尺寸的深度可分离卷积(3×3至9×9)提取多尺度特征,并结合线性注意力机制高效建模全局依赖关系。该模块显著提升了模型对多尺度目标的检测能力,同时保持了轻量化特性。实验表明,MSLA能有效增强小目标检测和复杂场景下的分割精度。文章详细介绍了MSLA的网络结构、核心优势及实现代码,并提供了两种集成MSLA的YOLO26改进方案,为实时目标检测任务提供了高效解决方案。

Ai缝合怪、助力小伙伴高效发论文 297

Redis3.0-----Sentinel

简介  Sentinel(哨兵)是Redis的高可用性解决方案:由一个或多个Sentinel实例组成的Sentinel系统可以监视任意多个主服务器,以及这些主服务器属下的所有从服务器,并在被监视的主服务器进入下线状态时,自动将下线主服务器属下的某个从服务器升级为新的主服务器,然后由新的主服务器代替已下线的主服务器继续处理 命令请求。 启动并初始化Sentinel  启动一个Sentinel可以使用...

shiwenbo1994的博客 408

【超详细】计算机组成原理总结及思维导图

计算机组成 第一章 计算机系统概论 冯诺依曼型计算机特点 1.计算机由运算器,控制器,存储器,输入和输出设备5部分组成 2.采用存储程序的方式,程序和数据放在同一个存储器中,并以二进制表示。 3.指令由操作码和地址码组成 4.指令在存储器中按执行顺序存放,由指令计数器(即程序计数器PC)指明要执行的指令所在的储存单元地址,一般按顺序递增,但可按运算结果或外界条件而改变 5.机器以运...

圣三一 10万+

Redis 3.x——哨兵安装和部署

当Sentinel节点集合对主节点故障判定达成一致时,Sentinel领导者节点会做故障转移操作,选出新的主节点,原来的从节点会向新的主节点发起复制操作,parallel-syncs就是用来限制在一次故障转移之后,每次向新的主节点发起复制操作的从节点个数。但实际上Sentinel节点会对所有节点进行监控,但是在Sentinel节点的配置中没有看到有关从节点和其余Sentinel节点的配置,那是因为Sentinel节点会从主节点中获取有关从节点以及其余Sentinel节点的相关信息。

吴声子夜歌的博客 267

Flink实战(101):双流join(三)双流中实现Inner Join、Left Join与Right Join

声明:本系列博客是根据SGG的视频整理而成,非常适合大家入门学习。 《2021年最新版大数据面试题全面开启更新》 简介 之前文章中提到JoinedStream与CoGroupedStream,例如下列代码: dataStream.join(otherStream) .where(0).equalTo(1) .window(TumblingEventTimeWindows.of(Time.seconds(3))) .apply { ... } 由于joinedStream与

微信搜:import_bigdata,大数据领域硬核原创作者 737

SAP OData 开发从入门到提高教程的目录

笔者 18 年的 SAP 技术开发生涯,对 SAP OData 服务的开发,测试,发布,部署,测试,及基于各种不同 SAP 技术实现的 OData 服务的幕后技术实现细节和使用场合,均有着深入的研究。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 7245

CODIS3.x集群 之 存储集群搭建全过程

作者:邹祁峰 邮箱:Qifeng.zou.job@hotmail.com 博客:http://blog.csdn.net/qifengzou 日期:2017.06.07 转载请注明来自”祁峰”的优快云博客 Codis3.x有如下特点: 1.最新 release 版本为 codis-3.2,codis-server 基于 redis-3.2.8 2.支持 slot 同步

做事先做人! 1万+

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Redis Sentinel 三节点高可用部署方案(银河麒麟 V10 SP3 版)

在银河麒麟V10SP3上,部署Redis一主二从三哨兵架构,实现高可用。3个Sentinel保证故障转移的quorum,避免脑裂。需配置主机名、防火墙、SELinux及系统参数,安装Redis6.2/7.x。主从通过replicaof复制,哨兵监控Master,宕机自动选举新主。用systemd管理服务,严格按顺序启动,验证复制与切换。本文提供详细配置、故障测试及运维指南。

m0_75254642的博客 400

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Redis和Sentinel的安装部署和配置

为了提升数据检索的效率,有时候我们会在数据库前加一层缓存,Redis就是常见的一种缓存组件,他的全称是REmote DIctionary Server,是一个由Salvatore Sanf...

bisal的专栏 894

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Redis集群部署方案

这里我们把 redis-master 手动停止,模拟 主从点挂掉的情况,此时 redis-slave1 还是从节点,而主节点变成了redis-slave2。Redis Cluster 是 Redis原生的分布式集群方案,支持数据的自动分片(sharding),从而实现水平扩展,处理大规模的数据和请求。从图里我们,可以看到redis-master的role是master,而redis-slave的role是slave。而我们在redis-master添加的键值对,在redis-slave里可以获得。

... 2176

Redis进阶-5.x 单节点 及Redis Cluster 3主3从集群部署

文章目录Redis 下载地址Redis 编译安装Redis 启停 Redis 下载地址 下载地址: http://redis.io/download 历史版本: http://download.redis.io/releases/ 之前装过4.0.11 ----> Redis-02Redis在linux下的安装及常见问题 Redis 编译安装 第一步 : 安装gcc # 安装gcc...

小工匠 2万+

Redis-Sentinel安装

Redis2.X版本是不支持分布式集群的,只能通过第三方的组件进行实现。上一篇文章介绍了twitter的twemproxy,但twemproxy实现的是将value平均分布到各个服务器上,且只能将失败节点移除,这样就保证不了高可用性了。下面介绍下redis的Sentinel,Sentinel也是redis作者开发的,目前已经集成在redis的安装包里,主要目的就是实现redis的高可用性。  

杀手的博客 1716

Redis Sentinel哨兵模式部署

Redis Sentinel哨兵模式部署主从模式的弊端就是不具备高可用性,当master挂掉以后,Redis将不能再对外提供写入操作,因此sentinel模式应运而生。sentinel中文含义为哨兵,顾名思义,它的作用就是监控redis集群的运行状况,此模式具有如下一些特点:sentinel模式是建立在主从模式的基础上,如果只有一个Redis节点,sentinel就没有任何意义;当master挂了...

小云的博客 838

Redis之Sentinel高可用安装部署

Redis之Sentinel高可用安装部署 背景: 之前通过Redis Sentinel 高可用实现说明和Redis 复制、Sentinel的搭建和原理说明大致已经介绍了sentinel的原理和实现,本文再次做个简单的回顾,具体的信息见前面的两篇文章说明。本文要实现的sentinel是通过2个redis数据节点和3个sentinel节点来达到高可用,目标是希望标准化Sentinel...

hyl999的专栏 401

Helm部署高可用Redis Sentinel

Helm部署高可用Redis Sentinel1. 下载2. 创建StorageClass3. 新建配置文件4. 安装5. 验证6. 客户端连接 1. 下载 [root@master helm]# helm search stable/redis NAME CHART VERSION APP VERSION DESCRIPTION ...

wnfff的博客 1776

redis-3.0.1 sentinel 主从高可用 详细配置

最近项目上线部署,要求redis作高可用,由于redis cluster还不是特别成熟,就选择了redis sentinel做高可用。redis本身有replication,实现主从备份。结合sentinel可以做主、从自动切换。 生产环境中,一般要求有3个redis节点。但本文为了试验方便,只用了两个节点,一主一从。 部署规划 172.16.203.10 主节点 172.16.203.4 从节点 redis版本为3.0.1 主节点 redis采用源码编译的方式安装,非常简单,解压出来,进入解压目

zhouchuandake的博客 2361
上一篇: FastDFS安装配置
下一篇: Redis3.x集群部署
心如止水dy
博客等级 码龄19年 5粉丝 16原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值