一、Redis Sentinel 介绍
    1、Sentinel
     数据库环境搭建,从单机版到主备、再到多数据库集群,我们需要一个高可用的监控;比如Mysql中,我们可能会采用MHA来搭建我们的高可用数据库服务;

目前很多项目都用到了redis,比如我们采用1+2的模式,也就是一主两从;我们设置Redis主从复制,将主节点数据同步给从节点,从而达到:

1、主机异常宕机,从节点作为主节点顶上来,让服务正常运行,给运维留足时间;

2、采用读写分离,分担主节点的读压力;

那么Redis 怎么解决主节点宕机,从节点晋升成主节点,同时需要修改应用方的主节点地址,并且让所有从节点去复制新的主节点,整个过程不需要人工干预的问题?

Redis官方给出了解决方案,就是使用Sentinel来动态监控redis节点,并组建高可用方案。

2、Redis Sentinel的高可用

Redis Sentinel是一个分布式架构,包含若干个Sentinel节点和Redis数据节点,每个Sentinel节点会对数据节点和其余Sentinel节点进行监控,当发现节点不可达时,会对节点做下线标识。

如果被标识的是主节点,他还会选择和其他Sentinel节点进行选举,当大多数的Sentinel节点都认为主节点不可达时,他们会重新选举出一个Sentinel节点来完成自动故障转移工作,同时将这个变化通知给Redis应用方。

整个过程完全自动,不需要人工介入,所以可以很好解决Redis的高可用问题。

3、Redis Sentinel 架构结构图

我们整体部署的拓扑结构如图所示:

1、现部署

分别有3个Sentinel节点,1个主节点,2个从节点组成一个Redis Sentinel集群。

Alias IP port
master 10.192.33.227 37701
slave1 10.192.33.228 37702
slave2 10.192.33.229 37702
Sentinel1 10.192.33.227 37801
Sentinel2 10.192.33.228 37801
Sentinel3 10.192.33.229 37801
二、使用Docker容器部署
    1、使用docker部署redis,master和slaver,由于我是在内网部署,所以采用的是离线部署;docker部署再次不多说,如果不懂,可先自行了解,并安装;

2、在redis-01-master中,创建docker-redis-master.sh文件,脚本如下:

docker run -d --network host --name redis-01-master \
-v /data/docker/redis/redis-01-master/data:/data \
redis:3.2.6-alpine --appendonly yes --port 37701
    3、在另外两台机器redis-02-slave下创建docker-redis-master.sh文件,脚本如下:

docker run -d --network host --name redis-02-slave \
-v /data/docker/redis/redis-02-slave/data:/data \
redis:3.2.6-alpine --appendonly yes \
--port 37702 --slave-read-only yes \
--slaveof 10.192.33.227 37701
    4、分别执行docker-redis-master.sh,之后使用sudo docker ps来查看镜像是否运行

5、搭建sentinel环境,在三台机器上分别建好目录

6、在每个目录中创建这里目录和文件

7、在conf中创建sentinel.conf文件,注意可写入权限

port 37801
dir "/var/redis/data"
logfile "/var/redis/data/logs/sentinel-01.log"

sentinel monitor master003 10.192.33.227 37901 2
sentinel down-after-milliseconds master003 30000
sentinel parallel-syncs master003 1
sentinel failover-timeout master003 180000
        port 是sentinel节点的端口
        dir是监控日志
        sentinel monitor是指当前监控主节点
        2代表判断主节点失败至少需要2个Sentinel节点节点同意
        master003 是主节点的别名
        如果超过30000毫秒且没有回复,则判定不可达

故障转移超时时间为180000毫秒

8、创建  docker-sentinel.sh执行文件,脚本如下:

docker run -d --network host --name redis-sentinel-01 \
-v /data/docker/redis/sentinel-01/data:/var/redis/data \
-v /data/docker/redis/sentinel-01/conf:/conf \
redis:3.2.6-alpine \
/conf/sentinel-01.conf --sentinel
    9、依次启动,启动完后,sentinel.conf会自动写入发现的从节点和sentinel的follow节点信息

例如:

port 37801
dir "/var/redis/data"
logfile "/var/redis/data/logs/sentinel-02.log"

sentinel myid 1a26337bb909bba4c9692db916e551b61764dd8c
sentinel monitor master003 10.199.33.229 37701 2
# Generated by CONFIG REWRITE
sentinel config-epoch master003 0
sentinel leader-epoch master003 0
//发现的两个从节点
sentinel known-slave master003 10.199.33.227 37702
sentinel known-slave master003 10.199.33.228 37702
//发现的两个Sentinel节点
sentinel known-sentinel master003 10.199.33.227 37801 7eab541796e47ca8eea9fb4fc646250debc4082a
sentinel known-sentinel master003 10.199.33.229 37801 81f4bac8d2c1f8bdda9caadca05ac1d7adfb89ca
sentinel current-epoch 0
    10、检测环境

进入sentinel容器,连接redis
redis-cli -p 37801
127.0.0.1:37801> sentinel masters
1) 1) "name"
2) "master003"
3) "ip"
4) "10.192.33.229"
5) "port"
6) "37701"
7) "runid"
8) "3a03b4ec2c90633edc013f8f2df088bfbc17151e"
9) "flags"
10) "master"
11) "link-pending-commands"
12) "0"
13) "link-refcount"
14) "1"
15) "last-ping-sent"
16) "0"
17) "last-ok-ping-reply"
18) "315"
19) "last-ping-reply"
20) "315"
21) "down-after-milliseconds"
22) "30000"
23) "info-refresh"
24) "9456"
25) "role-reported"
26) "master"
27) "role-reported-time"
28) "85544506"
29) "config-epoch"
30) "0"
31) "num-slaves"
32) "2"
33) "num-other-sentinels"
34) "2"
35) "quorum"
36) "2"
37) "failover-timeout"
38) "180000"
39) "parallel-syncs"
40) "1"
环境基本搭建完成,由于时间关系,暂时只写到这里。后面在详细介绍redis cluster搭建和redis中间件大家redis统一管理;

————————————————
版权声明:本文为CSDN博主「周创」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/OneZhous/article/details/80679352

Redis Sentinel 高可用部署实践集群的更多相关文章

  1. 1.还不会部署高可用的kubernetes集群?看我手把手教你使用二进制部署v1.23.6的K8S集群实践(上)

    公众号关注「WeiyiGeek」 设为「特别关注」,每天带你玩转网络安全运维.应用开发.物联网IOT学习! 本章目录: 0x00 前言简述 0x01 环境准备 主机规划 软件版本 网络规划 0x02 ...

  2. 企业运维实践-还不会部署高可用的kubernetes集群?使用kubeadm方式安装高可用k8s集群v1.23.7

    关注「WeiyiGeek」公众号 设为「特别关注」每天带你玩转网络安全运维.应用开发.物联网IOT学习! 希望各位看友[关注.点赞.评论.收藏.投币],助力每一个梦想. 文章目录: 0x00 前言简述 ...

  3. [ Openstack ] Openstack-Mitaka 高可用之 Rabbitmq-server 集群部署

    目录 Openstack-Mitaka 高可用之 概述    Openstack-Mitaka 高可用之 环境初始化    Openstack-Mitaka 高可用之 Mariadb-Galera集群 ...

  4. [ Openstack ] Openstack-Mitaka 高可用之 Mariadb-Galera集群部署

    目录 Openstack-Mitaka 高可用之 概述    Openstack-Mitaka 高可用之 环境初始化    Openstack-Mitaka 高可用之 Mariadb-Galera集群 ...

  5. Dubbo入门到精通学习笔记(二十):MyCat在MySQL主从复制的基础上实现读写分离、MyCat 集群部署(HAProxy + MyCat)、MyCat 高可用负载均衡集群Keepalived

    文章目录 MyCat在MySQL主从复制的基础上实现读写分离 一.环境 二.依赖课程 三.MyCat 介绍 ( MyCat 官网:http://mycat.org.cn/ ) 四.MyCat 的安装 ...

  6. Redis|Sentinel 高可用架构

    一 前言 Redis-Sentinel是Redis官方推荐的高可用性(HA)解决方案,当用Redis做Master-slave的高可用方案时,假如master宕机了,Redis本身(包括它的很多客户端 ...

  7. Redis Sentinel 高可用服务搭建

    阅读目录: 关于 Redis 的概念 关于 Redis Sentinel 的概念 搭建 Redis Server(master) 搭建 Redis Server(slave) 搭建 Redis Sen ...

  8. 【转载】Redis Sentinel 高可用服务架构搭建

    作者:田园里的蟋蟀 出处:http://www.cnblogs.com/xishuai/ 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接. 阅读 ...

  9. Redis Sentinel 高可用实现说明

    背景:      前面介绍了Redis 复制.Sentinel的搭建和原理说明,通过这篇文章大致能了解Sentinel的原理和实现方法以及相关的搭建.这篇文章就针对Redis Sentinel的搭建做 ...

随机推荐

  1. 安装Matlab出现弹出DVD1插入DVD2的提示怎么办?

    此使,找到DVD1光驱,右键弹出,然后回到dvd2.iso文件右键装载,回到matlab安装页面,对提示框“弹出DVD1插入DVD2”点击确定,安装即可继续进行.

  2. How would you differentiate JDK, JRE, JVM, and JIT?

    Q5. How would you differentiate JDK, JRE, JVM, and JIT?A5. There is no better way to get the big pic ...

  3. afnetwork moya 都符合通信协议七层模型

    都是在会话层作出优化:安全.存储.会话控制: 在表示层作出数据处理: 在应用层提供请求响应的便捷接口.

  4. Event 事件(最简单实用)

    public partial class Form1 : Form { /// <summary> /// 定义事件 /// </summary> public event E ...

  5. 文本编辑器vim——三种模式、显示行号、插入命令、行快速定位、行内定位

    1.vim的三种工作模式: (1)利用vim命令新建文件: 点击entre键执行命令后,开始向文本中输入想要写入的内容: (2)命令行模式(ESC): 不管用户处于何种模式,只要单击Esc键,即可进入 ...

  6. 第03组 Beta冲刺(3/4)

    队名:不等式方程组 组长博客 作业博客 团队项目进度 组员一:张逸杰(组长) 过去两天完成的任务: 文字/口头描述: 制定了初步的项目计划,并开始学习一些推荐.搜索类算法 GitHub签入纪录: 暂无 ...

  7. JDBC-select练习&jdbc工具类&数据库登录案例

    一.select练习 1.说明 练习: * 定义一个方法,查询emp表的数据将其封装为对象,然后装载集合,返回. 1. 定义Emp类 2. 定义方法 public List<Emp> fi ...

  8. 发现Xilinx Virtex 5 FPGA中单个DSP乘法器只支持17位无符号乘法

    发现Xilinx Virtex 5 FPGA中,单个DSP乘法器只支持17位无符号乘法.如果令18位乘数相乘,结果会与正确的乘积不同.

  9. LCA的多种求法(超详细!!!)

    倍增求LCA (1)树上倍增法 预处理 设f[x,k]表示x的2^k辈祖先,即从x向根节点走2^k步到达的节点.特别地,若该节点不存在,则令f[x,k]=0.f[x,0]就是x的父节点.可以得出f[x ...

  10. Java实现一个简单的事件监听器

    关于事件监听我们需要知道的一些基础知识. a)事件三要素(who when what): source -- 事件源 when -- 事件发生时间 message -- 事件主题消息,即希望通过事件传 ...