• 大数据学习初级入门教程(十三) —— Redis 3.x 伪分布式集群(哨兵模式)的安装、配置、启动和测试


    在前三篇文章《大数据学习初级入门教程(二) —— Redis 3.x 单节点的安装、启动和测试》、《大数据学习初级入门教程(六) —— Redis 3.x 伪分布式集群的安装、配置、启动和测试》和《大数据学习初级入门教程(七) —— Redis 3.x 完全分布式集群的安装、配置、启动和测试》中,已经对 Redis3.x 的单节点安装、伪分布式集群安装和完全分布式集群安装过程详细做了安装、配置、启动和测试,但工作过程中发现,很多 Redis 集群都是哨兵模式,这篇文章主要借鉴前面的伪分布式集群,搭建一个伪分布式的哨兵模式集群。

    集群搭建条件:

    由于 Redis 集群哨兵一版配置奇数个节点,比如3、5、...,这里定三个哨兵节点,一个主节点和两个从节点,即 1 + 2 + 3 模式。所以总共需要6个redis节点。正好原先的搭建的 Redis 伪分布式集群有 6 个节点,复制过来直接改改配置。

    第一步,创建存放集群环境的目录文件夹。

    第二步,复制已经安装的 redis。

    把已经安装的伪分布式 redis 集群目录下的 6 个节点所有文件复制到 redis-sentinel 目录下。

    命令:cp -R redis-cluster/redis0* redis-sentinel/

    第三步,删除原 redis0* 节点下的其它文件。

    命令:cd redis-sentinel/

    rm -f redis0*(型号自行替换)/dump.rdb

    rm -f redis0*(型号自行替换)/appendonly.aof

    rm -f redis0*(型号自行替换)/mybatis.log

    rm -f redis0*(型号自行替换)/nodes.conf

    第四步,修改 redis.conf 配置文件。

    为了防止和原集群冲突,最好把主节点(redis01)和从节点(redis02、redis03)的配置改一下。

    命令:vi redis01/redis.conf 

    修改几个地方,首先修改端口号,原来已经修改为 7000,现修改为 8000。

    修改 pid 进程文件名,原来已经修改为 redis_7000.pid,现修改为 redis_8000.pid。

    修改 log 文件名,原来已经修改为 redis_7000.log,现修改为 redis_8000.log,注意如果没有对应的文件夹,需要提前创建。

    修改集群模式为 no。

    同理,从节点相关部分修改为 8001、8002。并修改 slaveof 配置为如下:

    slaveof 192.168.220.100 8000

    第四步,复制 sentinel.conf 配置文件。

    删除哨兵节点中的 redis.conf 配置文件,从安装包目录拷贝 sentinel.conf 到哨兵节点目录。修改配置如下:

    bind 0.0.0.0

    port 28003
    pidfile /var/run/redis_28003.pid
    logfile "/var/log/redis/redis_28003.log"
    daemonize yes

    dir ./

    sentinel monitor mymaster 192.168.220.100 8000 2

    sentinel auth-pass mymaster 123456

    另外两个哨兵模式中,相关端口部分分别修改为 28004 和 28005。

    第五步,启动集群。

    先启动主节点服务,再启动从节点服务,最后启动哨兵节点服务,启动命令如下:

    主从节点:./redis-server redis.conf

    哨兵节点:./redis-sentinel sentinel.conf

    启动后查看进程是否正常:

    打开哨兵节点配置文件,可以看到配置文件被动态修改,文件末尾添加了从节点及其它哨兵节点信息。

    命令: cat redis04/sentinel.conf

    sentinel known-slave mymaster 192.168.220.100 8002
    sentinel known-slave mymaster 192.168.220.100 8001
    sentinel known-sentinel mymaster 192.168.220.100 28005 6fbd835e6e19c45314a28f3fa26d262c15985753
    sentinel known-sentinel mymaster 192.168.220.100 28004 f99299720cf52bc967f37a91cdb7ce465f119c24
    sentinel current-epoch 0

    第六步,测试集群。

    连接主节点客户端,查看信息:

    连接从节点客户端,查看信息:

    连接哨兵节点客户端,查看信息:

    杀掉主节点进程,查看从节点是否变为主节点:

    可以看到从节点 redis02 变为了主节点。

    哨兵节点配置文件也更新为如下信息。

    sentinel known-slave mymaster 192.168.220.100 8002
    sentinel known-slave mymaster 192.168.220.100 8000
    sentinel known-sentinel mymaster 192.168.220.100 28004 f99299720cf52bc967f37a91cdb7ce465f119c24
    sentinel known-sentinel mymaster 192.168.220.100 28005 6fbd835e6e19c45314a28f3fa26d262c15985753
    sentinel current-epoch 1

    当杀掉的原主节点启动后,则变为现在集群中的一个从节点而已。

    ​​​​​​​常见错误解答

    问题一:启动哨兵节点报错,信息如下:

    *** FATAL CONFIG FILE ERROR ***
    Reading the configuration file, at line 93
    >>> 'sentinel auth-pass mymaster 123456'
    No such master with specified name.

    可能原因:需要吧密码配置放到哨兵信息下面,如果放上面,则报上面错误,如:

    sentinel monitor mymaster 192.168.220.100 8001 2

    sentinel auth-pass mymaster 123456

    问题二:主节点杀掉后,从节点不自动变为主节点,及主从无法切换。

    可能原因:哨兵模式中配置的主节点信息有误,或者是配置文件中 bind 0.0.0.0 配置有误导致的。

    到此,搭建、配置、测试 Redis 在哨兵模式下主从节点的切换完成了,Good Luck! 

  • 相关阅读:
    springboot基于Android的校园综合服务App平台的设计毕业设计源码181040
    2023年数维杯国际大学生数学建模挑战赛
    JDK与字节码版本
    usermod
    网络字节序和主机字节序
    【Java难点攻克】「大文件处理系列」让我们一起去挑战一下如何读取一个较大或者超大的数据文件
    17-数据结构-查找-(顺序、折半、分块)
    00-MySQL数据库的使用-下
    15.cuBLAS开发指南中文版--cuBLAS中的Level-1函数rotg()
    Gem5 Debug
  • 原文地址:https://blog.csdn.net/tzhuwb/article/details/126894398