redis 搭建哨兵模式 一主两从三哨兵

这篇具有很好参考价值的文章主要介绍了redis 搭建哨兵模式 一主两从三哨兵。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

 

部署redis哨兵模式

  • [Redis之主从,哨兵,集群的搭建部署]

    一、Redis 哨兵模式:

    哨兵的核心功能:在主从复制的基础上,哨兵引入了主节点的自动故障转移

    1、哨兵模式原理:

    哨兵:是一个分布式系统,用于对主从结构中的每台服务器进行监控,当出现故障时通过投票机制选择新的Master 并将所有Slave 连接到新的 Master。所以整个运行哨兵的集群的数量不得少于3个节点。

    2、哨兵模式的作用:

    • 监控:哨兵会不断地检查主节点和从节点是否运作正常。

    • 自动故障转移:当主节点不能正常工作时,哨兵会开始自动故障转移操作,它会将失效主节点的其中一个从节点升级为新的主节点,并让其他从节点改为复制新的主节点。

    • 通知提醒:哨兵可以将故障转移的结果发送给客户端

    3、哨兵的结构:

    • 哨兵节点:哨兵系统由一个或多个哨兵节点组成,哨兵节点就是特殊的redis节点,不存储数据

    • 数据节点:主节点和从节点都是数据节点

    注意:

    哨兵的启动依赖于主从模式,所以须把主从模式安装好的情况下再去做哨兵模式,所有节点上都需要部署哨兵模式,哨兵模式会监控所有的Redis工作节点是否正常

    4、故障转移机制:

    由哨兵节点定期监控主节点是否出现了故障,每个哨兵节点每隔1秒会向主节点、从节点及其它哨兵节点发送一次ping命令做一次心跳检测。 如果主节点在一定时间范围内不回复或者是回复一个错误消息,那么这个哨兵就会认为这个主节点主观下线了(单方面的),当超过半数哨兵节点认为该主节点下线了,这样就客观下线了。 此时哨兵节点会通过Raft算法〈选举算法)实现选举机制共同选举出一个哨兵节点为leader,来负责处理主节点的故障转移和通知。

    故障转移过程如下:

    ● 将某一个从节点升级为新的主节点,让其它从节点指向新的主节点;

    ● 若原主节点恢复也变成从节点,并指向新的主节点;

    ● 通知客户端主节点已经更换。

    主节点的选举条件:

    1. 过滤掉不健康的(已下线的),没有回复哨兵ping响应的从节点

    2. 选择配置文件中从节点优先级最高的(replication-priority,默认值为100)

    3. 选择复制偏移量最大的,也就是复制最完整的从节点。

    二、案例环境

    服务器
    master Centos7.9 192.168.10.128 redis-5.0.9.tar.gz
    slave1 Centos7.9 192.168.10.129 redis-5.0.9.tar.gz
    salve2 Centos7.9 192.168.10.130 redis-5.0.9.tar.gz

    1.关闭防火墙安全内核机制,所有节点全部执行

    [root@localhost ~]# systemctl stop firewalld
    [root@localhost ~]# setenforce 0

    2.所有节点分别搭建网络yum源 ,需要联网

    [root@localhost ~]# yum clean all && yum makecache

    3.分别修改主机名

    [root@localhost ~]hostnamectl set-hostname master  #192.168.10.128
    [root@localhost ~]hostnamectl set-hostname slave1  #192.168.10.129
    [root@localhost ~]hostnamectl set-hostname slave2  #192.168.10.130

    4.所有节点修改hosts文件

    [root@localhost ~]# cat >>/etc/hosts<< EOF
    192.168.10.128 matser:7
    192.168.10.129 slave1
    192.168.10.130 slave2
    EOF

    三、实验部署

    主从部署

    1.所有节点安装redis

    #安装编译工具
    yum -y install gcc gcc-c++ make
    cd  /usr/src
    wget -P /usr/src http://download.redis.io/releases/redis-5.0.9.tar.gz
    tar -zxvf redis-5.0.9.tar.gz
    cd redis-5.0.9/
    make &&  make PREFIX=/usr/local/redis install
    ln -s /usr/local/redis/bin/* /usr/local/bin/
    cd /usr/src/redis-5.0.9/utils/
    ./install_server.sh
    #出现Please select the redis port for this instance: [6379]一直回车直达出现Please select the redis executable path [] 手动输入/usr/local/redis/bin/redis-server
    netstat -lnupt | grep redis
    cd /usr/lib/systemd/system/
    cat >>redis.service<< EOF
    [Unit]
    Description=redis-server
    After=network.target
    ​
    [Service]
    Type=forking
    # ExecStart需要按照实际情况修改成自己的地址
    ExecStart=/usr/local/bin/redis-server /etc/redis/6379.conf
    PrivateTmp=true
    ​
    [Install]
    WantedBy=multi-user.target
    EOF
    systemctl daemon-reload
    /etc/init.d/redis_6379 stop
    ps -ef|grep redis
    systemctl start redis
    systemctl status redis

    2.修改Master节点的配置文件

    [root@master ~]# cp /etc/redis/6379.conf{,.bak}
    [root@master ~]# vim /etc/redis/6379.conf
    ​
    bind 0.0.0.0                       #70行,注释掉bind项,或修改为0.0.0.0,默认监听所有网卡
    daemonize yes                      #137行,开启守护进程
    logfile /var/log/redis_6379.log    #172行,指定日志文件目录
    dir /var/lib/redis/6379            #264行,指定工作目录
    requirepass 123456                 #7508行,指定redis登录密码,可不设置
    appendonly yes                     #700行,开启AOF持久化功能
    ​
    #重启redis
    [root@master ~]#systemctl start redis

    3.修改slave1和slave2两个从节点

    [root@slave1 ~]# cp /etc/redis/6379.conf{,.bak}
    [root@slave1 ~]# vim /etc/redis/6379.conf
    ​
    70 bind 0.0.0.0
    #将监听端口改为任意端口
    137 daemonize yes
    #开启守护进程
    172 logfile /var/log/redis_6379.log
    #指定日志文件目录
    264 dir /var/lib/redis/6379
    #指定工作目录
    287 replicaof 192.168.111.10 6379
    #指定主节点的ip 和端口
    700 appendonly yes
    #开启 AOF持久化
    ​
    #重启slave1节点和slave2节点redis服务
    [root@slave1 ~]# systemctl restart reids
    [root@slave2 ~]# systemctl restart reids

    4.验证主从效果

    在Master节点上看日志

    [root@master ~]#tail -f /var/log/redis_6379.log
    [root@master ~]#redis-cli         #登录redis
    127.0.0.1:6379> info replication   #查看
    127.0.0.1:6379> set k1 1         #在主库创建文件在从库查看
    OK
    127.0.0.1:6379> get k1        存在
    "1"
    127.0.0.1:6379> 
    

    在master上动态查看日志:

    redis哨兵模式需要几个节点,云计算,redis在master上验证从节点

     

    四、哨兵部署

     

    [root@master ~]# cd /usr/src/redis-5.0.9/

    redis哨兵模式需要几个节点,云计算,redis1.修改哨兵模式的配置文件(所有节点操作)

     

    [root@master redis-5.0.9]# cp sentinel.conf{,.bak}
    [root@master redis-5.0.9]# vim sentinel.conf
    #修改配置文件
    17  protected-mode no
    #关闭保护模式
    21 port 26379
    #哨兵默认端口号 26379
    26 daemonize yes
    #开启后台运行
    36 logfile "/var/log/sentinel.log
    #指定日志目录
    65 dir "/var/lib/redis/6379"
    #数据文件
    84 sentinel monitor mymaster 192.168.10.128 6379 2
    #改变master节点地址,指定该哨兵节点监控192.168.10。128:6379这个主节点,该主节点的名称是mymaster,最后的2的含义与主节点的故障判定有关:至少需要2个哨兵节点同意,才能判定主节点故障并进行故障转移
    113 sentinel down-after-milliseconds mymaster 30000
    #可以修改时间,判定服务器down掉的时间周期,默认30000毫秒(30秒)
    146 sentinel failover-timeout mymaster 180000
    #故障切换时间,故障节点的最大超时时间为180000 (180秒 )
    [root@master redis-5.0.9]# scp sentinel.conf root@192.168.10.129:`pwd`
    [root@master redis-5.0.9]# scp sentinel.conf root@192.168.10.130:`pwd`

    2.启动哨兵模式所有节点都要启动

    #注意:先启主节点master,再启从节点slave

    cd /usr/src/redis-5.0.9/
    [root@master redis-5.0.9]# redis-sentinel sentinel.conf &
    [1] 15986
    [root@slave1 redis-5.0.9]# redis-sentinel sentinel.conf &
    [1] 61088
    [root@slave2 redis-5.0.9]# redis-sentinel sentinel.conf &
    [1] 66369

    3.在master查看哨兵信息

    所有节点都可以查看哨兵info sentinel

    [root@master redis-5.0.9]# redis-cli -p 26379 info Sentinel

    五、验证哨兵,模拟故障

     

    [root@master redis-5.0.9]# ps -ef | grep redis
    [root@master redis-5.0.9]# systemctl stop reids      #也可以杀死 Master 节点上redis-server的进程号
    [root@master ~]# tail -f /var/log/sentinel.log  #验证master是转换至从服务器</span>

    redis哨兵模式需要几个节点,云计算,redis在Slave1上查看是否转换成功

     

    [root@slave1 redis-5.0.9]# redis-cli -p 26379 INFO Sentinel

    redis哨兵模式需要几个节点,云计算,redis在Slave2上查看是否转换成功

     

    [root@slave2 redis-5.0.9]# redis-cli -p 26379 INFO Sentinel

    redis哨兵模式需要几个节点,云计算,redis当原来的master修复后会做为slave从新加入

     

    [root@master redis-5.0.9]# redis-cli -p 26379
    127.0.0.1:26379> info

    redis哨兵模式需要几个节点,云计算,redis将权重值调成默认方便下次选举

     

    [root@slave1 redis-5.0.9]# redis-cli -h 192.168.10.128 -p 6379 config set slave-priority 100
    [root@slave1 redis-5.0.9]# redis-cli -h 192.168.10.129 -p 6379 config set slave-priority 100
    [root@slave1 redis-5.0.9]# redis-cli -h 192.168.10.130 -p 6379 config set slave-priority 100
    

    总结 哨兵系统的搭建过程,有几点需要注意:

    哨兵系统中的主从节点,与普通的主从节点并没有什么区别,故障发现和转移是由哨兵来控制和完成的。

    哨兵节点本质上是Redis节点.

    每个哨兵节点,只需要配置监控主节点,便可以自动发现其他的哨兵节点和从节点.

    在哨兵节点启动和故障转移阶段,各个节点的配置文件会被重写(Config Rewrite)。

    故障转移分三步

    1.从下线的主服务的所有从服务里面挑选一个从服务, 将其转成主服务

    2.已下线主服务的所有从服务改为复制新的主服务 挑选出新的主服务之后,领头sentinel 向原主服务的从服务发送 slaveof 新主服务 的命令,复制新master。

    3.将已下线的主服务设置成新的主服务的从服务, 当其回复正常时,复制新的主服务,变成新的主服务的从服务 当已下线的服务重新上线时,sentinel会向其发送slaveof命令, 让其成为新主的从。

    查看[root@master redis-5.0.9]下的master节点信息

    sentinel master imooc-master

    查看[root@master redis-5.0.9]下的slaves节点信息

    sentinel slaves imooc-master

    查看[root@master redis-5.0.9]下的哨兵节点信息

    sentinel sentinels imooc-master文章来源地址https://www.toymoban.com/news/detail-789016.html

到了这里,关于redis 搭建哨兵模式 一主两从三哨兵的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • CentOS 7.9 环境下搭建k8s集群(一主两从)

    目录 一、硬件准备(虚拟主机) 二、环境准备 1、所有机器关闭防火墙 2、所有机器关闭selinux 3、所有机器关闭swap 4、所有机器上添加主机名与ip的对应关系 5、在所有主机上将桥接的ipv4流量传递到iptables的链 三、为所有节点安装docker 四、集群部署 1、为所有节点修改仓库,

    2024年03月14日
    浏览(40)
  • 【云原生-K8s-1】kubeadm搭建k8s集群(一主两从)完整教程及kubernetes简介

    🍁 博主简介   🏅云计算领域优质创作者   🏅华为云开发者社区专家博主   🏅阿里云开发者社区专家博主 💊 交流社区: 运维交流社区 欢迎大家的加入!   Kubernetes(简称:k8s) 是Google在2014年6月开源的一个容器集群管理系统,使用Go语言开发,用于管理云平台中多

    2024年02月07日
    浏览(46)
  • MySQL:一主两从架构(读写分离)

    slave会从master读取binlog来进行数据同步 (1): master将数据改变记录到二进制日志binlog中; (2): slave上执行 start slave 命令后,slave会创建一个IO线程,用来连接master,请求master中的binlog; (3): 当slave连接master时,master会创建一个log dump线程,用于发送binlog内容。在读取binlog的内容的操

    2023年04月09日
    浏览(33)
  • 使用docker进行MYSQL主从复制(一主两从)

    目录 概述主从介绍 主从作用 主从作用有: 主从形式有:  配置步骤 主要配置 1创建三个进程 2修改配置文件 3主机配置 4从机配置 5将文件修改后,复制到容器里面 6进入主机进行配置 6.1创建用户 6.2给用户授权 6.3刷新权限 7进入从机进行配置 对M1S1 对M2S2  8最后开启主从 9测

    2024年02月16日
    浏览(32)
  • MySQL8.xx一主两从复制安装与配置

    docker实战(一):centos7 yum安装docker docker实战(二):基础命令篇 docker实战(三):docker网络模式(超详细) docker实战(四):docker架构原理 docker实战(五):docker镜像及仓库配置 docker实战(六):docker 网络及数据卷设置 docker实战(七):docker 性质及版本选择 认知升维: 道、法、术、器、势 多台服务器间

    2024年02月13日
    浏览(33)
  • Redis哨兵集群搭建及RedisTemplate的哨兵模式配置详解

    本文详细介绍了Redis哨兵集群的原理、架构和工作流程,包括哨兵的功能作用、故障恢复机制、选举新的master等内容。同时,提供了哨兵集群架构示意图和实例准备、配置、启动、测试的步骤。此外,还介绍了如何在Spring的RedisTemplate中配置哨兵模式,实现Redis主从集群的自动切换和节点感知。

    2024年02月14日
    浏览(35)
  • Redis 哨兵模式的原理及其搭建

    Redis提供了哨兵(Sentinel)机制来实现主从集群的自动故障恢复。 1.1.1.集群结构和作用 哨兵的结构如图: 哨兵的 作用 如下: 监控 :Sentinel 会不断检查您的master和slave是否按预期工作。 自动故障恢复 :如果master故障,Sentinel会将一个slave提升为master。当故障实例恢复后也以新

    2024年02月05日
    浏览(36)
  • 【NOSQL】redis哨兵模式、集群搭建

    主从复制:主从复制是高可用Redis的基础,哨兵和集群都是在主从复制基础上实现高可用的。主从复制主要实现了数据的多机备份,以及对于读操作的负载均衡和简单的故障恢复。缺陷:故障恢复无法自动化;写操作无法负载均衡;存储能力受到单机的限制。 哨兵:在主从复

    2024年02月12日
    浏览(46)
  • 利用docker搭建redis哨兵模式

    一主二从三哨兵,如果Master 节点断开了,这个时候就会从从机中随机选择一个服务器! (这里面有一个投票算法!)如果主机此时回来了,只能归并到新的主机下,当做从机,这就是哨兵模式的规则! 主机:设置key 从机:读取key,有数据代表主从实现成功 注意:不同版本的

    2024年02月06日
    浏览(33)
  • 使用docker快速搭建redis哨兵模式

    本文主要参考: https://www.cnblogs.com/coderaniu/p/15352323.html https://developer.aliyun.com/article/892805 但是这两篇博客均缺失部分关键性细节,所以重新撰文。读者可以结合本文和上述文章一起阅读。 此处略 创建 docker-compose.yml 文件,内容如下: 执行命令 docker-compose up -d 创建三个redis容器

    2024年02月09日
    浏览(28)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包