配置redis 哨兵模式

哨兵模式概述

    当我们的主服务器宕机后,要手动的去切换主从模式,这样的人工干预,费事费力,还会造成一段时间我们的服务不能使用。所有我们要使用哨兵模式来解决这一问题。

手动设置主从:

    当主服务器down 掉后 服务器不在提供写功能,需要手动将从服务器设置为主

    在从服务器上使用命令:

      slaveof on one   //从服务器关闭复制功能转为主服务器 原同步所得数据不丢失

    在其他从服务器上执行命令

      slaveof  host  port     //host 指定转为主的从服务器地址  port 指定端口号

      

哨兵是对Redis的系统的运行情况的监控,它是一个独立进程。

哨兵模式作用

监控主机Redis和从机Redis是否运行正常;

主机Redis出现故障后自动将从机转化为主机;

哨兵功能

    集群监控:负责监控主从集群中的Master和Slave进程是否正常工作。

    故障转移(failover):如果Master宕机,会自动从Slave中选举出新的Master,进行主从自动切换。

    配置中心:如果发生了故障转移,Sentinel负责通知客户端新的Master的地址。

    消息通知:如果某个redis节点有故障,那么Sentsinel会发送报警消息给系统管理员

哨兵工作原理

单个哨兵的工作原理:

哨兵模式配置 (一主两从 三哨兵)

 环境:

      主redis   主机名 redis.m    网卡 vm1    地址  192.168.100.10

      从redis   主机名 redis.s1    网卡 vm1    地址  192.168.100.20

      从redis   主机名 redis.s2    网卡 vm1    地址  192.168.100.30

      哨兵sentinel   主机名 redis.sen    网卡 vm1  地址  192.168.100.40  (一台主机三哨兵)

 四台主机相同配置部分:

    禁用 selinux   关闭防火墙  yum 安装redis 环境    源码安装 redis

    redis 安装路径 统一  /usr/local/redis

一,配置一主两从

    主 redis 配置文件修改部分

     

#bind 127.0.0.1          #将bind注释掉 或 bind 0.0.0.0    75

protected-mode  no        #允许远程主机访问    94

daemonize yes         #修改服务为后台运行                      259

logfile "/usr/local/redis/log/redis.log"  #指定log日志路径        304

dir ./data/redis    #这个指定rdb文件和aof文件的路径配置,要求改成不同。  456

masterauth 123    #从服务到主服务的认证密码。        486

requirepass 123    #三份文件都配置,客户端访问需要密码验证。   903

   从 s1,  s2 配置文件修改

#bind 127.0.0.1         

protected-mode  no        #允许远程主机访问    94 

daemonize yes   

logfile "/usr/local/redis/log/redis.log"  

dir ./data/redis  

replicaof  192.168.100.10  6379    #从服务配置需要开启。配置主服务的ip的port。   479

masterauth 123  

requirepass 123

二,在 主redis 和 两台从服务器上创建日志文件夹和数据文件夹

      cd  /usr/local/redis

      mkdir  log

      mkdir  -p  data/redis

三, 分别开启三台redis 的服务

      cd  /usr/local/redis

      ./src/redis-server  redis.conf

      查看服务是否开启

      netstat  -anpt | grep  redis       //如果没有命令用yum 安装

四,配置 哨兵主机

    三哨兵需要一台主机启用三个哨兵模式 需要三个哨兵配置文件

    cd  /usr/local/redis

    mv  sentinel.conf   sentinel1.conf

    cp  sentinel1.conf   sentinel2.conf

    cp  sentinel1.conf   sentinel3.conf

    修改配置三个配置文件如下

    sentinel1.conf

bind 0.0.0.0                     #服务监听地址,用于客户端连接,默认本机地址

daemonize yes      26

protected-mode no        #安全保护模式

port 26379                #哨兵端口

logfile "/usr/local/redis/log/sentinel1.log""        #日志文件路径   36

pidfile /var/run/redis-sentinel1.pid      #pid文件路径

dir /tmp                            #工作目录

sentinel monitor mymaster 192.168.100.10 6379 2      #设置要监控的master服务器,quorum表示最少有几个哨兵认可客观下线,同意故障迁移的法定票数

sentinel auth-pass mymaster 123456     #master设置了密码,连接master服务的密码   86行

       

    sentinel2.conf

bind 0.0.0.0                   

daemonize yes

protected-mode no        

port 26380               

logfile "/usr/local/redis/log/sentinel2.log""        

pidfile /var/run/redis-sentinel2.pid     

dir /tmp                           

sentinel monitor mymaster 192.168.100.10 6379 2     

sentinel auth-pass mymaster 123456     

    

   sentinel3.conf

bind 0.0.0.0                   

daemonize yes

protected-mode no        

port 26381               

logfile "/usr/local/redis/log/sentinel3.log""        

pidfile /var/run/redis-sentinel3.pid     

dir /tmp                           

sentinel monitor mymaster 192.168.100.10 6379 2     

sentinel auth-pass mymaster 123456     

五, 创建存放日志的文件夹并启动三个哨兵服务

     cd  /usr/local/redis

     mkdir log

     ./src/redis-sentinel  sentinel1.conf --sentinel

     ./src/redis-sentinel  sentinel2.conf --sentinel

     ./src/redis-sentinel  sentinel3.conf --sentinel

    

     查看端口号

六,查看 几个哨兵的日志文件

     cat  log/sentinel.log

七,down 掉 主redis 服务器  验证哨兵作用

     在 主 redis 服务器上关闭redis 服务 或者杀死 redis 进程

     关闭服务

   杀死进程

      cd /var/run/

      ls                    //查看redis 进程文件

      cat redis_6379.pid       //通过进程文件查看进程号

      kill -9 20504            //杀死进程

      rm  -rf redis_6379.pid     //删除进程文件

八,查看哨兵日志哪台从服务器可以写入数据 变成了主redis

    cat   log/sentinel1.log

    

     

    进入新的 主服务器 测试写入数据

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐