redis哨兵搭建

xiaoxiao2025-04-19  14

redis哨兵模式使用三台机器,一台主机两台从机,分别在三台机器上安装redis并启动redis进程和sentinel进程

一、安装redis(此配置改进redis.txt文件中的配置)

    1、获取安装文件(wget命令下载或自己下载):wget http://download.redis.io/releases/redis-4.0.2.tar.gz

    2、解压文件:redis-4.0.2.tar.gz

    4、编译:make

    5、安装:make install

    6、设置redis配置文件路径:mkdir -p /etc/redis ; cp redis.conf /etc/redis

    7、修改配置文件:vi /etc/redis/redis.conf

            1)注释掉 bind 127.0.0.1 和 protected-mode yes (如果redis.conf中这两句注掉了则在sentinel.conf中要设置protected-mode no ,如果redis.conf中设置了bind和protected-mode yes则在sentinel.conf中也要设置这两句话)

            2)port端口号,默认为6379不用修改(redis监听的端口号)

            3)daemonize改为yes,默认为yes不用修改(使redis以守护进程模式启动就是后台运行redis)

            4)pidfile改为./redis.pid(设置redis的pid文件位置)

            5)logfile改为./redis.log(redis日志文件存放位置)

            6)dir改为 ./ (设置持久化文件存放位置,默认当前目录,也就是/etc/redis)

            7)放开注释masterauth 并设置密码为redis(此处设置连接主机的密码,刚开始第一台机器先启动就是主机,此处配置无用,但是哨兵模式中,主机切换到其他机器上这台机器就是从机,如果此处不设置masterauth将连不上主机)

            8)放开requirepass 设置密码为redis(密码可自定义,但三台机器密码要一致)

            9)把/etc/redis/redis.conf复制到其他两台从机的/etc/redis目录下(目录提前建好)

            10)修改两个从机上的/etc/redis/redis.conf(注意:近从机上需要加slaveof)

                    放开注释slaveof并配置要连接的主机的ip和端口(可以是域名),例如:slaveof world01 6379

    8、分别在三台机器上启动redis实例(最好先启动主机)

        redis-server /etc/redis/redic.conf

        启动完成后可通过redis-cli命令进入命令行认证密码后输入info可查看当前角色和连接的从机

 

二、启动哨兵进程

    1、复制配置文件到/etc/redis目录下:cp /usr/local/redis-4.0.2/sentinel.conf /etc/redis/sentinel.conf

    2、在bind下一行添加 protected-mode no (关闭保护模式,与redis.conf中的配置对应)

    3、port端口默认26379(默认的哨兵端口号)

    4、在port下一行添加 daemonize yes (守护进程模式)

    5、紧接着再下一行添加 logfile "/etc/redis/sentinel.log" (指明日志文件名,或者 ./sentinel.log)

    6、放开注释sentinel monitor 修改为 sentinel monitor mymaster world01 6379 2

            # sentinel monitor <master-name> <ip> <redis-port> <quorum>

            quorum 表示主机down掉时 quorum个sentinel实例提交"master失效"时master才会为ODOWN(客观失效)

    7、认证密码改为redis:sentinel auth-pass mymaster redis

    8、修改主观失效时间为5秒:sentinel down-after-milliseconds mymaster 5000(如果当前sentinel与master直接的通讯中,在指定时间内没有响应或者响应错误代码,那么当前sentinel就认为master失效SDOWN,“主观”失效,默认为30秒)

  9、当新master产生时,同时进行“slaveof”到新master并进行“SYNC”的slave个数:sentinel parallel-syncs def_master 1(默认为1,建议保持默认值)

    10、failover时间间隔改为1分钟:sentinel failover-timeout mymaster 60000 (当failover失败后,每隔1分钟就会进行一次master失败迁移)

  11、启动哨兵服务:redis-sentinel sentinel.conf

          通过/etc/redis目录下的sentinel.log查看日志

          其次在通过redis-cli -p 26379进入命令行输入info查看master状态,slave的数量和sentinel进程数

          在此命令行下可输入sentinel masters 查看所有master,sentinel slaves mymasters查看mymaster下所有从机,sentinel sentinels mymaster查看mymaster下所有哨兵进程(不过貌似当前哨兵进程看不到)

三、测试

    kill掉master上的redis实例或者命令行下shutdown,哨兵就会检测到从而切换master

四、java集成spring

    请见redis示例工程

 

启动哨兵后两个slave没有加入,那就说明配置有问题

 

转载请注明原文地址: https://www.6miu.com/read-5028671.html

最新回复(0)