redis基础之redis-sentinel(哨兵集群)(六)

redis简单的主从复制在生产的环境下可能是不行的,因为从服务器只能读不能写,如果主服务器挂掉,那么整个缓存系统不能写入了。redis自带了sentinel(哨兵)机制可以实现高可用。

redis-sentinel集群

哨兵机制的主要功能

  • 不断监控主服务器和从服务器的是否正常运行;
  • 出现问题是可以自动报告;
  • 当一个节点出现问题可以进行故障转移,主服务器故障可以通过投票机制选出新的主服务器;
  • 自动发现主服务器和从服务器;

redis-sentinel基本介绍

  • redis-sentinel是一个单独的进程,可以通过配置文件sentinel.conf单独启动,也可以在启动redis-server是指定--sentinel启动;

配置redis-sentinel

  • redis的源码中有一份sentinel.conf文件可以用来配置redis-sentinel。
  • 使用哨兵机制集群redis实例如果需要配置密码,那么主从服务器的密码需要保持一致,否则故障切换可能出错。
# redis.conf

masterauth ‘123‘ # 主服务器密码

requirepass ‘123‘ # 本身的密码
# sentinel.conf

port 26379  # 端口

# 格式为  sentinel <选项的名字> <服务器的名字> <选项的值>
# 配置sentinel去监听名为mymaster的服务器,ip加端口,判断失效需要2个sentinel才能进行故障迁移;
sentinel monitor mymaster 127.0.0.1 6379 2
# 如果3000ms没有反应就认为mymaster挂掉
sentinel down-after-milliseconds mymaster 3000
# 设置故障转移时,同时有多少个从服务器对新主服务进行同步,越少需要的时间越长,但越多,同步时从服务器不能工作;
sentinel parallel-syncs mymaster 1
# failover超时时间,即触发failover切换操作后,如果10000ms还没有任何的failover故障切换即认为失败
sentinel failover-timeout mymaster 10000
# 设置前后台运行yes表示后台运行
daemonize yes
#指定工作目录
dir "/home/redis/sentinel-work"
# 默认情况下sentinel只能访问本地主机,设置为no后禁用保护模式
protected-mode no
# 指定日志文件
logfile "/home/redis/sentinellog/sentinel.log"
#redis主节点密码
sentinel auth-pass mymaster 123456
  • 注意
  • 没有的文件目录需要主动创建,否则启动失败;
  • 可以在不同的服务器上启动多个sentinel,它们的配置相同,都去监视主服务器的redis。

启动redis-sentinel

redis-server /path/sentinel.conf --sentinel

# 可以使用supervisor对redis-sentinel进行管理,将sentinel设置为前台运行

使用redis-cli查看redis-sentinel的状态

# 登录
redis-cli -h 192.168.1.20 -p 26379 

# 命令参考:http://www.redis.cn/topics/sentinel.html

python连接redis集群

  • redis使用sentinel模式后,原来的python连接redis方案由于主从服务器可能发生切换变得不可用了。
import redis
r2 = redis.StrictRedis() # 如果该实例死机将变得不可用
  • 使用Sentinel对象
import redis
from redis.sentinel import Sentinel
# 创建一个连接对象,连接所有的哨兵,其会自动发现redis实例
sentinel = Sentinel([(‘192.168.1.20‘, 26379)], socket_timeout=0.5)

# 获取主服务器进行写入
master = sentinel.master_for(‘mymaster‘, socket_timeout=0.5, db=1)
w_ret = master.set(‘foo‘, ‘bar‘)

# 获取从服务器进行读取
slave = sentinel.slave_for(‘mymaster‘, socket_timeout=0.5, db=1)
r_ret = slave.get(‘foo‘)

# master和slave的用法和前面的redis对象一样了,不过slave只能读不能写

原文地址:https://www.cnblogs.com/cwp-bg/p/9264169.html

时间: 2024-10-10 12:48:16

redis基础之redis-sentinel(哨兵集群)(六)的相关文章

深入浅出Redis-redis哨兵集群

1.Sentinel 哨兵 Sentinel(哨兵)是Redis 的高可用性解决方案:由一个或多个Sentinel 实例 组成的Sentinel 系统可以监视任意多个主服务器,以及这些主服务器属下的所有从服务器,并在被监视的主服务器进入下线状态时,自动将下线主服务器属下的某个从服务器升级为新的主服务器. 例如: 在Server1 掉线后: 升级Server2 为新的主服务器: 2.Redis 主从分离 在讲解Sentinel 哨兵集群之前,我们先来搭建一个简单的主从分离(读写分离). 首先,我们

Redis主从以及哨兵集群搭建(二)

Redis主从以及哨兵集群搭建 一.前言 Redis主从同步原理同MySQL的主从原理十分相似,而解决Redis单点故障的哨兵机制(sentinel)又同解决MySQL单点故障的MHA十分相似.因此我们在学习Redis时,可以将学习MySQL的知识迁移,这样一来,有利于我们快速掌握Redis主从机制,Redis哨兵集群的搭建.Redis的Sentinel机制大概是这样的.sentinel即哨兵,作用即放哨.开个玩笑,其实哨兵有三个作用:监控.通知和自动故障转移.哨兵是用来监控Redis的mast

【Redis哨兵集群】

目录 开始配置主从复制 开始配置Redis Sentinel @ *** 在开始之前,我们先来看看Redis的主从复制 主从复制原理: 从服务器向主服务器发送SYNC命令. 主服务器接到SYNC命令后,会调用BGSAVE命令,创建一个RDB文件,并使用缓冲区记录接下来执行的所有写命令. 当主服务器执行完BGSAVE命令后,会向从服务器发送RDB文件,而从服务器则会接收并执行这个文件. 主服务器将缓冲区存储的所有写命令发送给从服务器执行. --------- Redis主从复制使用的是RDB备份方

Redis 哨兵集群实现高可用

哨兵的介绍 sentinel,中文名是哨兵.哨兵是 redis 集群机构中非常重要的一个组件,主要有以下功能: 集群监控:负责监控 redis master 和 slave 进程是否正常工作. 消息通知:如果某个 redis 实例有故障,那么哨兵负责发送消息作为报警通知给管理员. 故障转移:如果 master node 挂掉了,会自动转移到 slave node 上. 配置中心:如果故障转移发生了,通知 client 客户端新的 master 地址. 哨兵用于实现 redis 集群的高可用,本身

redis 哨兵集群原理及部署

复制粘贴自: https://www.cnblogs.com/kevingrace/p/9004460.html 请点击此链接查看原文. 仅供本人学习参考, 如有侵权, 请联系删除, 多谢! Redis的集群方案大致有三种:1)redis cluster集群方案:2)master/slave主从方案:3)哨兵模式来进行主从替换以及故障恢复. 一.sentinel哨兵模式介绍Sentinel(哨兵)是用于监控redis集群中Master状态的工具,是Redis 的高可用性解决方案,sentinel

redis cluster单机伪分布式搭建--- 3主3从3哨兵集群

redis cluster单机伪分布式搭建--- 3主3从3哨兵集群 最近公司引进微服务框架,之前的一台redis的预存60G已经无法满足现在的260G业务需要,经过一番考虑搭建了这套集群 . 为了方便我就用一台服务器演示,生产环境中不建议这么做(没啥用),只为记录一下过程,至于精细化的配置需要在生产中自行研究 演示环境 [[email protected] ~]# cat /etc/redhat-release CentOS Linux release 7.4.1708 (Core) redi

11.Redis 哨兵集群实现高可用

作者:中华石杉 Redis 哨兵集群实现高可用 哨兵的介绍 sentinel,中文名是哨兵.哨兵是 redis 集群机构中非常重要的一个组件,主要有以下功能: 集群监控:负责监控 redis master 和 slave 进程是否正常工作. 消息通知:如果某个 redis 实例有故障,那么哨兵负责发送消息作为报警通知给管理员. 故障转移:如果 master node 挂掉了,会自动转移到 slave node 上. 配置中心:如果故障转移发生了,通知 client 客户端新的 master 地址

阿里云ECS部署Redis主备哨兵集群遇到的问题

一.部署 详细部署步骤:https://blog.csdn.net/lihongtai/article/details/82826809 Redis5.0版本需要注意的参数配置:https://www.cnblogs.com/ibethfy/p/9965902.html 二.遇到的问题 1.bind公网IP地址时,会出现异常:[Cannot assign requested address] 首先理解bind的含义:https://blog.csdn.net/cw_hello1/article/

三台服务器上离线安装redis哨兵集群,一主二从三哨兵

三台服务器上离线安装redis哨兵集群,一主二从三哨兵 系统安装好gcc环境,(不然编译redis会报错).依旧不知道怎么离线安装gcc环境的可查看CentOS下离线安装gcc环境,图文详细 下载 点击官网地址下载Linux版的redis http://download.redis.io/releases/redis-5.0.4.tar.gz 上传 put D:\AppStore\redis\redis-5.0.4.tar.gz /root 安装 tar xzf redis-5.0.4.tar.