iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >Redis主从以及哨兵集群搭建(二)
  • 789
分享到

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

2024-04-02 19:04:59 789人浏览 八月长安
摘要

Redis主从以及哨兵集群搭建一、前言  Redis主从同步原理同Mysql的主从原理十分相似,而解决Redis单点故障的哨兵机制(sentinel)又同解决mysql单点故障的MHA十分相似。因

Redis主从以及哨兵集群搭建

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

一、前言

  Redis主从同步原理同Mysql的主从原理十分相似,而解决Redis单点故障的哨兵机制(sentinel)又同解决mysql单点故障的MHA十分相似。因此我们在学习Redis时,可以将学习Mysql的知识迁移,这样一来,有利于我们快速掌握Redis主从机制,Redis哨兵集群的搭建。Redis的Sentinel机制大概是这样的。sentinel即哨兵,作用即放哨。开个玩笑,其实哨兵有三个作用:监控、通知和自动故障转移。哨兵是用来监控Redis的master(主服务器)的,一旦master宕机了,便立刻通知其他slave(从服务器)做好成为master的准备。一旦在自设定的时间内确定master是真的宕机了,就会随机切换一个slave成为master。但是这里会出现一个问题,哨兵(sentinel)的权利是不是太大了?而且万一在监控的时间内出问题的是哨兵自己而不是master,那就会出现误报。因此,我们需要有一个机制限制哨兵的权利。这个机制就是quorum(法定投票机制)机制。我们可以通过投票的方式来决定哨兵的消息是否真实可靠而不是哨兵自己本身宕机了?那既然需要投票,一个哨兵肯定不行,那两个呢?那肯定也不行!假设一台哨兵宕机了,而master是没有宕机的。那这台哨兵会报告master宕机的消息,而另外一台哨兵服务器则不会报告master宕机的消息。那这种情况就很尴尬了,左右为难了。因此我们既然要投票而且必须要有一个正确的可靠消息,那需要的哨兵数必然要大于2个了,因此一般推荐哨兵个数三个以上。

二、实验环境

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

    说明:系统为Centos7.3。由于是在虚拟机上实验的,这里为了节省资源将三个从节点也配置了Sentinel的功能,当然你也可以将Sentinel独立出来为一个集群。

三、实验配置

  1 初始化配置

    #node1 /etc/hosts文件修改(其他节点也做类似的修改,保证本机能够基于主机名通信) 

      127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4 node1
    ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6 node1
    192.168.0.51 node1
    192.168.0.52 node2
    192.168.0.53 node3
    192.168.0.54 node4

    #修改hostname(可立即生效)  

      hostnamectl set-hostname node1
    hostnamectl set-hostname node2
    hostnamectl set-hostname node3
    hostnamectl set-hostname node4

    #查看hostname

    [root@localhost ~]# hostnamectl 

   Static hostname: node1
   Icon name: computer-vm
   Chassis: vm
   Machine ID: 3D8bf6a9bfb24fae9bedcb9cfc6c5960
   Boot ID: 75905236f9eb4d91ade64f99a690d329
   Virtualization: vmware
   Operating System: CentOS linux 7 (Core)
   CPE OS Name: cpe:/o:centos:centos:7
   Kernel: Linux 3.10.0-514.el7.x86_64
   Architecture: x86-64
   #注:重新登陆终端,命令提示符就会更改成你修改的hostname

    #时间同步(四个节点都要同步)

    [root@node1 ~]# ntpdate 172.16.0.1
    18 Jul 22:45:00 ntpdate[10418]: step time server 172.16.0.1 offset 0.708020 sec

    #另外防火墙规则请自行设置好,selinux确保关闭

  2 安装redis,redis主从配置

    #下载好redis rpm包

    redis-3.2.3-1.el7.x86_64.rpm

    #安装redis(4个节点都要执行)

    yum install -y redis-3.2.3-1.el7.x86_64.rpm

    #将配置文件备份(4个节点都要执行)

    cp /etc/redis.conf{,.bak}

    #修改配置文件(4个节点都要执行)

  vim redis.conf
    bind 192.168.0.51  #改为各个节点的IP

    #在从节点(node2、node3、node4)开启slave功能

  vim /etc/redis.conf
    ################################# REPLICATION #################################
    # slaveof <masterip> <masterport>
    slaveof 192.168.0.51 6379

    #启动redis-server(4个节点都启动)

  redis-server /etc/redis.conf

    #查看服务是否启动(演示node2,其他自行测试

    [root@node2 ~]# ss -tln
    State      Recv-Q Send-Q Local Address:Port                Peer Address:Port              
    LISTEN     0      128     192.168.0.52:6379                           *:*                  
    LISTEN     0      128                *:22                             *:*                  
    LISTEN     0      100        127.0.0.1:25                             *:*                  
    LISTEN     0      128               :::22                            :::*                  
    LISTEN     0      100              ::1:25                            :::*

    #在主机上登陆redis

  [root@node1 ~]# redis-cli -h 192.168.0.51 
    192.168.0.51:6379> KEYS * 
    (empty list or set)

    #设置一对键值,用于同步测试  

192.168.0.51:6379> SET test 'amazing'
    OK
    192.168.0.51:6379> get test
    "amazing"

    #登陆其他三台从服务器

    redis-cli -h 192.168.0.52
    redis-cli -h 192.168.0.53
    redis-cli -h 192.168.0.54

    #三个节点上测试

    #node2查看键值对,已经同步了
    192.168.0.52:6379> keys * 
    1) "test"
    192.168.0.52:6379> get test
    "amazing"
    
    #node3查看键值对,已经同步了
    192.168.0.53:6379> keys * 
    1) "test"
    
    node4查看键值对,已经同步了
    192.168.0.54:6379> keys * 
    1) "test"

    由此证明redis主从配置基本实现

    #node1上查看主从信息,也可看到主从配置已经实现

    192.168.0.51:6379> INFO replication
    # Replication
    role:master
    connected_slaves:3
    slave0:ip=192.168.0.52,port=6379,state=online,offset=732,lag=0
    slave1:ip=192.168.0.53,port=6379,state=online,offset=732,lag=0
    slave2:ip=192.168.0.54,port=6379,state=online,offset=732,lag=0
    master_repl_offset:732
    repl_backlog_active:1
    repl_backlog_size:1048576
    repl_backlog_first_byte_offset:2
    repl_backlog_histlen:731

  3 sentinel集群实现(哨兵)    

    接下来在三个从节点上配置sentinel,实现故障转移。

    #三个从节点都需要做如下配置 

     cp /etc/redis-sentinel.conf{,.bak}
    vi /etc/redis-sentinel.conf
    sentinel monitor mymaster 192.168.0.51 6379 2
    sentinel down-after-milliseconds mymaster 5000
    sentinel failover-timeout mymaster 18000

    #启动服务

     redis-sentinel /etc/redis-sentinel.conf

    #查看服务是否正常启动

  [root@node ~]# ss -tln
    State      Recv-Q Send-Q Local Address:Port               Peer Address:Port              
    LISTEN     0      128             *:26379                       *:*                  
    LISTEN     0      128    192.168.0.55:6379                        *:*                  
    LISTEN     0      128             *:22                          *:*                  
    LISTEN     0      100     127.0.0.1:25                          *:*                  
    LISTEN     0      128            :::26379                      :::*                  
    LISTEN     0      128            :::22                         :::*                  
    LISTEN     0      100           ::1:25                         :::*

    #模拟故障

    #杀掉node1 redis进程
    [root@node1 ~]# pkill redis
    [root@node1 ~]# ss -tln
    State      Recv-Q Send-Q Local Address:Port               Peer Address:Port              
    LISTEN     0      128               *:111                           *:*                  
    LISTEN     0      128               *:22                            *:*                  
    LISTEN     0      100       127.0.0.1:25                            *:*                  
    LISTEN     0      128              :::111                          :::*                  
    LISTEN     0      128              :::22                           :::*                  
    LISTEN     0      100             ::1:25                           :::*

    #登陆node3,查看信息,发现node3变成master,实现故障转移

    [root@node3 ~]# redis-cli -h 192.168.0.53
    192.168.0.53:6379> INFO Replication
    # Replication
    role:master
    connected_slaves:2
    slave0:ip=192.168.0.54,port=6379,state=online,offset=23900,lag=0
    slave1:ip=192.168.0.52,port=6379,state=online,offset=23900,lag=0
    master_repl_offset:24177
    repl_backlog_active:1
    repl_backlog_size:1048576
    repl_backlog_first_byte_offset:2
    repl_backlog_histlen:24176

    #再次模拟故障

    #杀掉node3 redis
    [root@node3 ~]# pkill redis
    [root@node3 ~]# ss -tln
    State      Recv-Q Send-Q Local Address:Port               Peer Address:Port              
    LISTEN     0      128               *:22                            *:*                  
    LISTEN     0      100       127.0.0.1:25                            *:*                  
    LISTEN     0      128              :::22                           :::*                  
    LISTEN     0      100             ::1:25                           :::*

    #登陆node4 查看信息,发现node4为master,node2为从,此时为一主一次

  [root@node4 ~]# redis-cli -h 192.168.0.54
    192.168.0.54:6379> INFO Replication
    # Replication
    role:master
    connected_slaves:1
    slave0:ip=192.168.0.52,port=6379,state=online,offset=10508,lag=0
    master_repl_offset:10508
    repl_backlog_active:1
    repl_backlog_size:1048576
    repl_backlog_first_byte_offset:2
    repl_backlog_histlen:10507

    #启动node1和node3的redis服务,恢复到正常状态

     [root@node1 ~]# redis-server /etc/redis.conf
    [root@node3 ~]# redis-server /etc/redis.conf

    #node3变为主节点,现在为一主三从

    [root@node3 ~]# redis-cli -h 192.168.0.53
    192.168.0.53:6379> INFO Replication
    # Replication
    role:master
    connected_slaves:3
    slave0:ip=192.168.0.51,port=6379,state=online,offset=8008,lag=0
    slave1:ip=192.168.0.52,port=6379,state=online,offset=8146,lag=0
    slave2:ip=192.168.0.54,port=6379,state=online,offset=7869,lag=1
    master_repl_offset:8146
    repl_backlog_active:1
    repl_backlog_size:1048576
    repl_backlog_first_byte_offset:2
    repl_backlog_histlen:8145

    (PS:Redis系列第三篇将会介绍Redis的性能优化)

您可能感兴趣的文档:

--结束END--

本文标题: Redis主从以及哨兵集群搭建(二)

本文链接: https://www.lsjlt.com/news/42476.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Redis主从以及哨兵集群搭建(二)
    Redis主从以及哨兵集群搭建一、前言  Redis主从同步原理同MySQL的主从原理十分相似,而解决Redis单点故障的哨兵机制(sentinel)又同解决MySQL单点故障的MHA十分相似。因...
    99+
    2022-10-18
  • docker如何搭建redis主从哨兵集群
    这篇文章主要讲解了“docker如何搭建redis主从哨兵集群”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“docker如何搭建redis主从哨兵集群”吧!1:获取redis镜像docker...
    99+
    2023-07-02
  • docker搭建redis主从哨兵集群的实现步骤
    目录1:获取Redis镜像2:创建redis主从+哨兵docker-compose文件3:redis配置和哨兵配置说明4:启动docker-compose5:查看启动情况6:进入主节点查看集群情况本文以docker-co...
    99+
    2022-07-10
    dockerredis主从哨兵集群 redis主从哨兵集群
  • Redis高可用-主从,哨兵,集群
    主从复制 Master-Slave主从概念 同时运行多个redis服务端,其中一个作为主(master),其他的一个或多个作为从(slave),主从之间通过网络进行通讯,slave通过复制master的数据来保持与master的数...
    99+
    2016-05-27
    Redis高可用-主从 哨兵 集群
  • redis怎么搭建哨兵集群
    本篇内容主要讲解“redis怎么搭建哨兵集群”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“redis怎么搭建哨兵集群”吧!redis安装部署环境说明:redis使用的是6.2.6版本主机IP系统...
    99+
    2023-06-30
  • redis 哨兵集群搭建的实现
    目录前言为什么需要哨兵集群搭建前准备搭建步骤集群测试前言 在上一篇,我们了解了Redis 复制集群的完整的搭建流程,本篇来分享一下如何搭建 redis 哨兵集群。 为什么需要哨兵集群 redis哨兵集群要解决的问题是什么...
    99+
    2022-08-10
    redis 哨兵集群搭建 redis 哨兵集群
  • redis 哨兵集群搭建的实现
    目录前言为什么需要哨兵集群搭建前准备搭建步骤集群测试前言 在上一篇,我们了解了redis 复制集群的完整的搭建流程,本篇来分享一下如何搭建 redis 哨兵集群。 为什么需要哨兵集群...
    99+
    2022-11-13
    redis 哨兵集群搭建 redis 哨兵集群
  • redis搭建哨兵集群的实现步骤
    目录redis安装部署redis集群架构配置redis主从测试主从搭建redis哨兵集群哨兵集群详解:哨兵集群原理哨兵集群redis安装部署 环境说明: redis使用的是6.2.6...
    99+
    2022-11-13
  • 部署redis主从集群并开启哨兵模式
    一、部署环境系统:centos7通过在Linux系统上启动两个不同的redis实例来完成主从集群的部署yum源已部署 二、redis的下载与安装1、下载:官网下载2、安装创建/app/目录,redis安装在...
    99+
    2022-10-18
  • Redis中主从复制、哨兵、集群的示例分析
    这篇文章将为大家详细讲解有关Redis中主从复制、哨兵、集群的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、Redis 主从复制1. 主从复制的概述主从复制,...
    99+
    2022-10-19
  • redis主从复制、哨兵和集群的示例分析
    这篇文章主要介绍了redis主从复制、哨兵和集群的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、主从复制1. 主从同步的用处  ...
    99+
    2022-10-19
  • 如何进行Redis 6.X Sentinel哨兵集群搭建
    如何进行Redis 6.X Sentinel哨兵集群搭建,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。码哥带大家完成在 CentOS 7 中安装 Redis 6...
    99+
    2023-06-15
  • redis学习5---单节点、主从、哨兵和集群比较
    单个节点模式:不具备自动容错和恢复功能。服务器意外宕机,redis无法提供服务。服务器磁盘损坏,数据丢失。用于可穿透业务场景,如后端有DB存储,脱机影响不大的应用。主从模式:不具备自动容错和自动恢复功能,需...
    99+
    2022-10-18
  • redis中主从复制、哨兵、集群的原理是什么
    这篇文章主要介绍了redis中主从复制、哨兵、集群的原理是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇redis中主从复制、哨兵、集群的原理是什么文章都会有所收获,下面我...
    99+
    2022-10-19
  • docker搭建redis哨兵集群并且整合springboot的实现
    目录1、创建两个文件夹Redis和sentinel文件夹用于存放docker-compose.yml文件2、redis下的docker-compose.yml3、sentinel下的docker-compose.yml文...
    99+
    2022-07-11
    docker搭建redis哨兵集群 springbootredis哨兵
  • Docker下Redis集群(主从+哨兵)安装配置的实现步骤
    目录一、所有机器拉去镜像二、主从集群搭建2.1、redis.cong 文件2.2、创建本地映射文件夹,并将 Redis.conf 放到 /usr/local/redis/conf 文件夹内2.3、启动redis2.4、校...
    99+
    2022-07-11
    Docker Redis集群配置 Docker Redis 主从 哨兵
  • redis 集群搭建以及redisli
    实现3主3从的集群 虚拟机单机ip:192.168.40.128 集群基本搭建 简单下载 通过 wget http://download.redis.io/releases/redis-4.0.10.tar.gz 解压缩 tar z...
    99+
    2023-01-31
    集群 redis redisli
  • 基于Docker实现Redis主从+哨兵搭建的示例实践
    目录1.拉取镜像2. 编写主 从配置文件2.1 创建/home/redis/redis_conf目录:2.2 编写主配置文件2.3 编写从配置文件2.4  编写从配置文件3...
    99+
    2022-11-13
  • Redis-3.2主从复制与集群搭建
    一、Redis 主从搭建1.下载并解压yum install -y gcc gcc-c++ pcre zlib pcre-devel&n...
    99+
    2022-10-18
  • Redis从单点到集群部署模式(单机模式 主从模式 哨兵模式)
    目录导读单机模式优势劣势主从模式优势劣势哨兵模式优势劣势集群模式优势劣势全量复制部分复制导读 Redis 从单点 -> 集群总共有三个部署模式:单机模式,主从模式,哨兵模式,集群模式 单机模式 新手入门模式。单机模...
    99+
    2023-11-08
    Redis单点集群部署模式 Redis 单机主从哨兵模式
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作