redis replication以及redis sentinel配置

2024-08-22 14:58

本文主要是介绍redis replication以及redis sentinel配置,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

redis replication以及redis sentinel配置

redis replication(复制)功能是为了实现高吞吐量的redis集群,做读写分离架构,以及支持横向扩容的特性。同时,为了保障redis集群的高可用性,redis在2.4版本引入了sentinel功能,主要功能是保障在master节点宕机的时候可以通过选举算法选出一个slave节点将其转为master,保障业务的正常运行。本篇文章主要内容为介绍redis application以及redis sentinel的相关配置,以及一些注意事项。

配置redis集群

服务器信息
  • 系统:CentOs 6.5
  • redis集群,采用3台服务器,实现一个master节点,两个slave节点,其中服务器的信息如下
    • master节点: 192.168.1.103 6739
    • slave节点1:192.168.1.104 6739
    • slave节点2:192.168.1.105 6739
主从服务器配置:
# master 节点
# 6739.conf文件 # 关闭RDB持久化,只需要在一个slave节点开启RDB就可以了
# save 900 1
# save 300 10
# save 60 10000 # 开启AOF,保障master的数据是最新最全的
appendonly yes
appendfsync everysec
no-appendfsync-on-rewrite yes
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb# 绑定本机ip
bind 192.168.1.103# 是否开启安全认证(可选)
# requirepass 123456=======================分割线===========================# salve节点
# 6739.conf文件# 配置master的ip和端口
slaveof 192.168.1.103 6739
# 配置master密码# 打开RDB,只需在一台slave节点打开
save 900 1
save 300 10
save 60 10000# 如果master开启了安全认证,则需要配置口令
# masterauth 123456# 配置slave节点只读
slave-read-only yes

配置完毕后启动3台服务器的redis,启动顺序为先启动master节点在启动slave节点,启动完毕后,可以通过登录redis-cli输入info replication命令查看主从集群信息。

# master节点
# Replication
role:master
connected_slaves:2
slave0:ip=192.168.1.104,port=6379,state=online,offset=2802,lag=0
slave1:ip=192.168.1.105,port=6379,state=online,offset=2802,lag=1
master_repl_offset:2802
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:2
repl_backlog_histlen:2801=====================分割线=====================# slave节点
# Replication
role:slave
master_host:192.168.1.103
master_port:6379
master_link_status:up
master_last_io_seconds_ago:10
master_sync_in_progress:0
slave_repl_offset:2480
slave_priority:100
slave_read_only:1
connected_slaves:0
master_repl_offset:0
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0

sentinel的介绍

sentinel的中文名为哨兵,哨兵是redis集群架构中非常重要的一个组件,其主要功能如下:

  • 集群监控,负责监控redis master和slave进程是否正常工作。
  • 消息通知,如果某个reids实例发生了故障,可以通知管理员
  • 故障转移,如果master node挂掉了,会自动转移到slave node上
  • 配置中心,如果故障转移发生了,则通知client新的master地址。

哨兵加redis主从的部署架构,是不会保证数据零丢失的,只能保证redis集群的高可用性,哨兵的配置也是通过分布式集群部署。

数据丢失情况

sentinel是Redis集群的管理工具。在一般的分布式中心节点数据库中,sentinel的作用是中心节点的工作,监控各个其他节点的工作情况并且进行故障恢复,来提高集群的高可用性,在master节点发生故障的时候,可以通过选举某个slave节点进行故障转移,这个过程称之为主备切换。在主备切换的过程中,可能存在以下两种数据丢失的情况。

  • 异步复制导致数据丢失的情况

    在replication过程中master节点复制数据的过程是异步的,可能存在某部分数据还未复制到slave节点,master节点就宕机了,此时部分数据就丢失了。

  • 脑裂导致数据丢失

    如果由于某些原因导致master所在的机器脱离的正常的网络,导致master节点不可达,但是实际上master还在运行,此时哨兵会认为master宕机了,从而将一个slave节点切换成了master,此时就有两个master节点,即所谓的脑裂问题。此时client连接的是旧的那个master,写入这个master的数据就丢失了,因为旧的master恢复的时候会被作为一个slave节点挂载,从而从新的master节点复制数据。

对于这两种数据丢失的问题,可以通过配置一下内容来减少数据的丢失:

min-slaves-to-write 1
min-slaves-max=lag 10

以上两个配置指的是,至少有一个slave复制数据的同步的延迟不能超过10秒,一旦所有的slave都超过了10秒,则住master拒接请求。

sdown和odown状态

sdown是主观宕机,即一个哨兵认为某个master宕机了。那么就是sdown。odown是客观宕机,如果quorum数量的哨兵都觉得一个master宕机了,那么就是odown。

sentinel 配置

sentinel的配置在redis目录下面的sentinel.conf文件中。

注意:如果master和sentinal是部署在同一台机器上的情况下,则最少需要配置2个以上的sentinel节点才可以正常工作。因为假如一台机器宕机了,则运行在那台机器上的sentinel实例也就没有了,这个时候,另一个哨兵检测到master宕机了,要进行主备切换,但是此时仅仅有一个哨兵在工作,是没有majority数量的哨兵来允许执行故障转移。

# 监听的端口
port 16379
# 主服务器名称,IP地址,端口号和多少个哨兵认为master挂了,则进行主备切换
sentinel monitor mymsater 192.168.1.103 6739 2
# sentinel在多少毫秒内连接不到master则认为master断开
sentinel down-after-milliseconds mymaster 30000
# 表示一次可以同时允许多少个slave指向新的master节点,默认为1,如果设置过大会导致新的master IO过大,
sentinel parallel-syncs mymaster 1
# 在重新配置new master,new slave过程,可以触发的脚本,可发邮件或者修改项目中的redis指向等
sentinel client-reconfig-script mymaster /var/redis/reconfig.sh 
# 执行故障转移的timeout超时时长
sentinel failover-timeout mymaster 180000
启动sentinel

可以通过执行以下命令来启动哨兵:

redis-sentinel /xxx/sentinel.confredis-server /xxx/sentinel.conf --sentinel

上述两个命令都可以启动sentinel,但是推荐使用第一个命令,因为这个运行的sentinel不会和redis实例绑定。

总结

本篇文章记录了redis的主从配置,哨兵相关知识,以及哨兵集群的配置。

这篇关于redis replication以及redis sentinel配置的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1096594

相关文章

Redis出现中文乱码的问题及解决

《Redis出现中文乱码的问题及解决》:本文主要介绍Redis出现中文乱码的问题及解决,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1. 问题的产生2China编程. 问题的解决redihttp://www.chinasem.cns数据进制问题的解决中文乱码问题解决总结

Linux中SSH服务配置的全面指南

《Linux中SSH服务配置的全面指南》作为网络安全工程师,SSH(SecureShell)服务的安全配置是我们日常工作中不可忽视的重要环节,本文将从基础配置到高级安全加固,全面解析SSH服务的各项参... 目录概述基础配置详解端口与监听设置主机密钥配置认证机制强化禁用密码认证禁止root直接登录实现双因素

嵌入式数据库SQLite 3配置使用讲解

《嵌入式数据库SQLite3配置使用讲解》本文强调嵌入式项目中SQLite3数据库的重要性,因其零配置、轻量级、跨平台及事务处理特性,可保障数据溯源与责任明确,详细讲解安装配置、基础语法及SQLit... 目录0、惨痛教训1、SQLite3环境配置(1)、下载安装SQLite库(2)、解压下载的文件(3)、

Linux如何快速检查服务器的硬件配置和性能指标

《Linux如何快速检查服务器的硬件配置和性能指标》在运维和开发工作中,我们经常需要快速检查Linux服务器的硬件配置和性能指标,本文将以CentOS为例,介绍如何通过命令行快速获取这些关键信息,... 目录引言一、查询CPU核心数编程(几C?)1. 使用 nproc(最简单)2. 使用 lscpu(详细信

Redis的持久化之RDB和AOF机制详解

《Redis的持久化之RDB和AOF机制详解》:本文主要介绍Redis的持久化之RDB和AOF机制,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录概述RDB(Redis Database)核心原理触发方式手动触发自动触发AOF(Append-Only File)核

Redis分片集群、数据读写规则问题小结

《Redis分片集群、数据读写规则问题小结》本文介绍了Redis分片集群的原理,通过数据分片和哈希槽机制解决单机内存限制与写瓶颈问题,实现分布式存储和高并发处理,但存在通信开销大、维护复杂及对事务支持... 目录一、分片集群解android决的问题二、分片集群图解 分片集群特征如何解决的上述问题?(与哨兵模

SpringBoot连接Redis集群教程

《SpringBoot连接Redis集群教程》:本文主要介绍SpringBoot连接Redis集群教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1. 依赖2. 修改配置文件3. 创建RedisClusterConfig4. 测试总结1. 依赖 <de

SpringBoot+Redis防止接口重复提交问题

《SpringBoot+Redis防止接口重复提交问题》:本文主要介绍SpringBoot+Redis防止接口重复提交问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不... 目录前言实现思路代码示例测试总结前言在项目的使用使用过程中,经常会出现某些操作在短时间内频繁提交。例

Redis 配置文件使用建议redis.conf 从入门到实战

《Redis配置文件使用建议redis.conf从入门到实战》Redis配置方式包括配置文件、命令行参数、运行时CONFIG命令,支持动态修改参数及持久化,常用项涉及端口、绑定、内存策略等,版本8... 目录一、Redis.conf 是什么?二、命令行方式传参(适用于测试)三、运行时动态修改配置(不重启服务

浅析如何保证MySQL与Redis数据一致性

《浅析如何保证MySQL与Redis数据一致性》在互联网应用中,MySQL作为持久化存储引擎,Redis作为高性能缓存层,两者的组合能有效提升系统性能,下面我们来看看如何保证两者的数据一致性吧... 目录一、数据不一致性的根源1.1 典型不一致场景1.2 关键矛盾点二、一致性保障策略2.1 基础策略:更新数