一:哨兵主要作用

监控:监控redis主库及从库运行状态;

通知:如果redis发生故障转移,可以通过邮件通知管理员;

自动故障转移:一旦发现主库宕机,则在从库中通过选举新的master进行故障转移。

二:工作原理

哨兵(sentinel) 是一个分布式系统,你可以在一个架构中运行多个哨兵(sentinel) 进程,这些进程使用流言协议(gossipprotocols)来接收关于Master是否下线的信息,并使用投票协议(agreement protocols)来决定是否执行自动故障迁移,以及选择哪个Slave作为新的Master。

每个哨兵(sentinel) 会向其它哨兵(sentinel)、master、slave定时发送消息,以确认对方是否”活”着,如果发现对方在指定时间(可配置)内未回应,则暂时认为对方宕机了,这种宕机称为”主观认为宕机” Subjective Down,简称sdown)。

若“哨兵群”中的多数sentinel,都报告某一master没响应,系统才认为该master真正宕机,即客观上认为宕机,Objective Down,简称odown),通过一定的vote算法,从剩下的slave节点中,选一台提升为master,然后自动修改相关配置。

三:部署

master: 192.168.1.247

slave1: 192.168.1.110

slave2: 192.168.1.211

1. Redis服务安装

这里Redis版本为5.0.5。

Redis的安装步骤为:下载、解压、编译、配置、启动。

以下以247服务器安装为例,其他类似。

1.1 安装所需环境和工具

centos
yum -y install wget vim tcl gcc make ubuntu
apt-get install wget vim tcl gcc make

1.2 下载Redis

cd /home/
wget http://download.redis.io/releases/redis-5.0.5.tar.gz

1.3 解压

tar -zxvf redis-5.0.5.tar.gz

1.4 编译

cd redis-5.0.5/
make install PREFIX=/home/redis/

1.5 拷贝配置文件到Redis程序目录

cp redis.conf /home/redis/bin
cp sentinel.conf /home/redis/bin

redis.conf是Redis服务的配置文件;sentinel.conf是哨兵服务的配置文件。

1.6 修改配置文件

mkdir -p /home/redis/run
mkdir -p /home/redis/log
mkdir -p /home/redis/working
vim /home/redis/bin/redis.conf

通用配置

 # 需要不同服务器的节点连通,就不能设置为 127.0.0.1
bind 0.0.0.0
# 需要不同服务器的节点连通,这个就要设置为 no
protected-mode no
port 6379
# 密码
requirepass "ABC!!123"
# 主节点认证,主从节点均需要配置
masterauth "ABC!!123"
tcp-backlog 511
timeout 0
tcp-keepalive 300
# 设置后台运行redis
daemonize yes
supervised no
dir "/home/redis/working"
pidfile "/home/redis/run/redis_6379.pid"
logfile "/home/redis/log/redis.log"
loglevel notice
databases 16
always-show-logo yes
save 900 1
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename "dump.rdb"
replica-serve-stale-data yes
replica-read-only yes
repl-diskless-sync no
repl-diskless-sync-delay 5
repl-disable-tcp-nodelay no
replica-priority 100
lazyfree-lazy-eviction no
lazyfree-lazy-expire no
lazyfree-lazy-server-del no
replica-lazy-flush no
appendonly yes
appendfilename "appendonly.aof"
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
aof-load-truncated yes
aof-use-rdb-preamble yes
lua-time-limit 5000
latency-monitor-threshold 0
notify-keyspace-events ""
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
list-max-ziplist-size -2
list-compress-depth 0
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
hll-sparse-max-bytes 3000
stream-node-max-bytes 4096
stream-node-max-entries 100
activerehashing yes
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit replica 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
hz 10
dynamic-hz yes
aof-rewrite-incremental-fsync yes
rdb-save-incremental-fsync yes

从节点配置

replicaof 192.168.1.211 6379

1.7 启动服务

cd /home/redis/bin
./redis-server redis.conf

1.8 使用 ps -ef|grep redis 查看是否都启动成功,IP和端口号都正确

使用info Replication查看主从复制状态

cd /home/redis/bin
./redis-cli -p 6379
auth ABC!!123
info Replication

主节点

从节点(这里从节点端口用的6377)

2.哨兵配置

哨兵模式采用一主二从三哨兵模式。

2.1 修改配置

cd /home/redis/bin
vim sentine.conf
# 保护模式默认关闭
protected-mode no
# 绑定监听IP
bind 0.0.0.0
# 哨兵端口
port 26379
# 后台运行
daemonize yes
# pid
pidfile "/home/redis/run/redis-sentinel.pid"
# log
logfile "/home/redis/log/redis-sentinel.log"
# 工作目录
dir "/home/redis/working"
# 设置初始master以及法定认为下线人数:
sentinel monitor redis-master 192.168.1.211 6379 2
# 配置认证密码
sentinel auth-pass redis-master ABC!!123
# 设置初始master以及法定认为下线人数:
sentinel down-after-milliseconds redis-master 30000
# 指定在故障转移期间,多少个slave向新的master同步得数量,如果slave是提供查询服务,则应该设置小一点更好
sentinel parallel-syncs redis-master 1
# 指定故障转移超时时间,默认为3分钟
sentinel failover-timeout redis-master 180000
# 禁止修改脚本,避免脚本重置
sentinel deny-scripts-reconfig yes

2.2 启动

./redis-sentinel sentinel.conf

3.验证

3.1查看哨兵信息

随意登录一台主机执行 info Sentinel命令,下面以连接211机器为例。

cd /home/redis/bin
./redis-cli -p 26379 info Sentinel

输出信息如下:

SpringBoot配置Redis哨兵模式

application.yml 添加Redis配置

spring:
redis:
database: 1
password: ABC!!123
# 哨兵模式
sentinel:
master: redis-master
nodes: 192.168.1.211:26379,192.168.1.247:26379,192.168.1.110:26379

Redis哨兵模式搭建的更多相关文章

  1. 【运维技术】redis(一主两从三哨兵模式搭建)记录

    redis(一主两从三哨兵模式搭建)记录 目的: 让看看这篇文章的的人能够知道:软件架构.软件的安装.配置.基本运维的操作.高可用测试.也包含我自己,能够节省对应的时间. 软件架构: 生产环境使用三台 ...

  2. 【Redis】Redis Sentinel 哨兵模式搭建

    Redis Sentinel介绍 Redis Sentinel是Redis的官方高可用性解决方案 Redis Sentinel为Redis提供高可用性.实际上,这意味着使用Sentinel可以创建一个 ...

  3. Redis进阶:Redis的哨兵模式搭建

    Redis进阶:Redis的哨兵模式搭建 哨兵机制介绍 单机版的Redis存在性能瓶颈,Redis通过提高主从复制实现读写分离,提高了了Redis的可用性,另一方便也能实现数据在多个Redis直接的备 ...

  4. 搭建redis哨兵模式

    搭建redis哨兵模式,一主两从三哨兵   1.从官网下载redis安装包:此处是redis-5.0.7.tar.gz 2.上传到目录 /utxt/soft 3.解压 4.cd /utxt/soft/ ...

  5. Linux基于Docker的Redis主从复制、哨兵模式搭建

    本教程基于CentOS7,开始本教程前,请确保您的Linux系统已安装Docker. 1.使用docker下载redis镜像 docker pull redis 安装完成后,使用docker imag ...

  6. spring整合redis(哨兵模式)

    首先服务器搭建哨兵模式(我这里使用的是Windows8系统),感谢两位博主,少走不少弯路,在此给出链接:服务器哨兵模式搭建和整合哨兵模式 什么一些介绍就不介绍了,可以看一下连接,比较详细,初次接触,当 ...

  7. Redis哨兵模式高可用解决方案

    一.序言 Redis高可用有两种模式:哨兵模式和集群模式,本文基于哨兵模式搭建一主两从三哨兵Redis高可用服务. 1.目标与收获 一主两从三哨兵Redis服务,基本能够满足中小型项目的高可用要求,使 ...

  8. Redis哨兵模式主从同步不可以绑定127.0.0.1或者0.0.0.0,不然无法进行主从同步

    Redis哨兵模式主从同步不可以绑定127.0.0.1或者0.0.0.0,不然无法进行主从同步,一定要绑定内网IP,而对于跨机房的问题,可以使用iptables进行nat转发来解决.

  9. Redis哨兵模式大key优化

    目前,Redis哨兵模式,内存资源有限,有很多key大于500M,性能待优化.需要迁移至Redis-cluster集群中.        涉及到的key如下: 0,hash,duser_record, ...

  10. Springboot2.x集成Redis哨兵模式

    Springboot2.x集成Redis哨兵模式 说明 Redis哨兵模式是Redis高可用方案的一种实现方式,通过哨兵来自动实现故障转移,从而保证高可用. 准备条件 pom.xml中引入相关jar ...

随机推荐

  1. protojson简介

    google.golang.org/protobuf/encoding/protojson 是 Go 语言中的一个库,用于处理 Protocol Buffers(protobuf)和 JSON 之间的 ...

  2. pandas读取txt---按行输入按行输出

    1.pandas读取txt---按行输入按行输出 import pandas as pd # 我们的需求是 取出所有的姓名 # test1的内容 ''' id name score 1 张三 100 ...

  3. 探索C语言中的Shellcode从提取到执行

    ShellCode是一种独立于应用程序的机器代码,通常用于实现特定任务,如执行远程命令.注入恶意软件或利用系统漏洞.在网络安全领域,研究Shellcode是理解恶意软件和提高系统安全性的关键一环.本文 ...

  4. CE修改器入门:运用代码注入

    从本关开始,各位会初步接触到CE的反汇编功能,这也是CE最强大的功能之一.在第6关的时候我们说到指针的找法,用基址定位动态地址.但这一关不用指针也可以进行修改,即使对方是动态地址,且功能更加强大. 代 ...

  5. P7167 [eJOI2020 Day1] Fountain 题解

    题目链接:Fountain 很不错的基础算法组合题:单调栈+倍增 首先考虑到一个事实,就是下面第一个比当前半径大的位置会成为移动的第一次落脚点,抽象下就是下面出现的第一次比自身大的半径,这个问题显然可 ...

  6. Linux 中通过虚拟地址获取物理地址并锁定

    在 Linux 开发过程中,申请内存后,某些时候需要用物理地址传给其他外设进行写入或者读取操作,同时考虑到防止被操作系统 sawp,导致实际的物理地址发生变化,从而在操作对应的虚拟地址时无法正常运行等 ...

  7. delphi 官方例子 simples 路径

    公用 文件件 可能是隐藏的 若是的话 则显示 隐藏

  8. ListView改变行高的技巧

    改变 ListView 的行高 (Line Height) (cjc,2009.6.2) 改变 ListView 的行高 (Line Height) (cjc,2009.6.2) ListView在R ...

  9. Ubuntu安装typecho博客

    Ubuntu安装typecho博客 简介 名称的来历 Typecho 是由 type 和 echo 两个词合成的,来自于开发团队的头脑风暴. Type,有打字的意思,博客这个东西,正是一个让我们通过打 ...

  10. Java核心技术卷1:基础知识(原书第10版)

    本书为专业程序员解决实际问题而写,Java基础知识面覆盖很完整,可以帮助你深入了解Java语言和库.在卷I中,Horstmann主要强调基本语言概念和现代用户界面编程基础,深入介绍了从Java面向对象 ...