海陆 2023-02-21 13:05 采纳率: 66.7%
浏览 99
已结题

redis,三台服务器一主两从集群部署,找不到从节点的哨兵

主节点能找到俩从节点,但是只能找到主节点服务器的哨兵,从节点的找不到,哨兵日志也看不到报错

  • 写回答

6条回答 默认 最新

  • 「已注销」 2023-02-21 13:58
    关注

    参考GPT和自己的思路,如果你的 Redis 主节点可以找到哨兵,但是从节点无法找到哨兵,那么可能是因为从节点的哨兵配置不正确或者哨兵实例没有启动。你可以按照以下步骤来检查和解决问题:

    1 确认哨兵配置
    检查从节点上的哨兵配置文件是否正确配置了主节点的 IP 和端口以及其他配置项,如哨兵 ID、监控的从节点 ID 等。配置文件通常位于 Redis 安装目录下的 sentinel.conf 文件中。确保从节点的哨兵配置与主节点的哨兵配置相同。

    2 检查哨兵是否启动
    使用命令 ps -ef | grep redis-sentinel 来检查哨兵进程是否启动。如果哨兵没有启动,可以使用 redis-sentinel /path/to/sentinel.conf 命令来启动哨兵。如果哨兵已经启动,但是仍然无法被主节点或从节点识别,可能是因为防火墙或其他网络配置问题导致的。

    3 检查防火墙设置
    在 Redis 集群中,哨兵的作用是监控 Redis 实例的状态,并在主节点失效时将从节点升级为新的主节点。哨兵本身也是 Redis 实例,它们会自动选举一个领头哨兵来协调集群状态。

    如果你的 Redis 主节点可以找到哨兵,但是从节点无法找到哨兵,那么可能是因为从节点的哨兵配置不正确或者哨兵实例没有启动。你可以按照以下步骤来检查和解决问题:

    确认哨兵配置
    检查从节点上的哨兵配置文件是否正确配置了主节点的 IP 和端口以及其他配置项,如哨兵 ID、监控的从节点 ID 等。配置文件通常位于 Redis 安装目录下的 sentinel.conf 文件中。确保从节点的哨兵配置与主节点的哨兵配置相同。

    检查哨兵是否启动
    使用命令 ps -ef | grep redis-sentinel 来检查哨兵进程是否启动。如果哨兵没有启动,可以使用 redis-sentinel /path/to/sentinel.conf 命令来启动哨兵。如果哨兵已经启动,但是仍然无法被主节点或从节点识别,可能是因为防火墙或其他网络配置问题导致的。

    检查防火墙设置
    确保主节点和从节点之间的网络流量可以顺畅地通过。在防火墙上开放主节点和从节点所使用的 Redis 端口以及哨兵端口,通常是 26379 端口。如果你使用的是云服务,还需要检查云防火墙和网络安全组的设置是否正确。
    示例:

    假设主节点的 IP 是 192.168.0.1,从节点1 的 IP 是 192.168.0.2,从节点2 的 IP 是 192.168.0.3,那么在从节点1 和从节点2 上的 sentinel.conf 文件中应该配置类似如下的内容:

    sentinel monitor mymaster 192.168.0.1 6379 2
    sentinel down-after-milliseconds mymaster 5000
    sentinel failover-timeout mymaster 60000
    sentinel parallel-syncs mymaster 1
    sentinel auth-pass mymaster mypassword
    

    其中,mymaster 是主节点的名称,192.168.0.1 是主节点的 IP,6379 是 Redis 主节点的端口,2 是需要监控的从节点数目,down-after-milliseconds 和 failover-timeout 分别表示主节点失效的检测时间和故障转移的超时时间,parallel-syncs 表示每次故障转移时最多可以同时同步多少个从节点,auth-pass 是主节点的密码(如果设置了密码的话)。在启动哨兵时,可以使用启动哨兵的命令:

    redis-sentinel /path/to/sentinel.conf
    

    其中,/path/to/sentinel.conf 是哨兵的配置文件路径。启动命令执行后,哨兵会自动根据配置文件中的信息去发现主节点和从节点,并且进行监控和故障转移。

    如果出现了问题,可以检查哨兵的日志文件。默认情况下,哨兵的日志文件位于 /var/log/redis/sentinel.log。如果需要修改日志文件的路径,可以在配置文件中设置 logfile 参数。

    下面是一个示例的哨兵配置文件,可以根据自己的情况进行修改:

    # 哨兵 ID
    sentinel myid f1a6e8d6c963e6b23c9b16f87b8f12aa0b47d22e
    
    # 监控的主节点名称和 IP 地址
    sentinel monitor mymaster 192.168.0.1 6379 2
    
    # 主节点失效的检测时间和故障转移的超时时间
    sentinel down-after-milliseconds mymaster 30000
    sentinel failover-timeout mymaster 180000
    
    # 每次故障转移时最多可以同时同步多少个从节点
    sentinel parallel-syncs mymaster 1
    
    # 主节点的密码
    sentinel auth-pass mymaster mypassword
    
    # 日志文件路径
    logfile "/var/log/redis/sentinel.log"
    
    # 哨兵的运行模式
    daemonize yes
    
    # 哨兵的监听地址和端口
    bind 0.0.0.0
    port 26379
    

    在上面的配置文件中,sentinel myid 行指定了哨兵的唯一 ID。sentinel monitor 行指定了要监控的主节点的名称、IP 地址和端口号。sentinel down-after-milliseconds 行和 sentinel failover-timeout 行分别指定了主节点失效的检测时间和故障转移的超时时间。sentinel parallel-syncs 行指定了每次故障转移时最多可以同时同步多少个从节点。sentinel auth-pass 行指定了主节点的密码(如果设置了密码的话)。logfile 行指定了哨兵的日志文件路径。daemonize 行指定了哨兵的运行模式,yes 表示以守护进程模式运行。bind 行指定了哨兵的监听地址,port 行指定了哨兵的监听端口。

    启动哨兵时,只需要指定哨兵配置文件的路径即可:

    redis-sentinel /path/to/sentinel.conf
    

    如果一切正常,哨兵会自动发现主节点和从节点,并开始监控它们的状态。
    如果对您有帮助,请给与采纳,谢谢。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(5条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 2月21日
  • 已采纳回答 2月21日
  • 创建了问题 2月21日

悬赏问题

  • ¥15 我的代码无法在vc++中运行呀,错误很多
  • ¥50 求一个win系统下运行的可自动抓取arm64架构deb安装包和其依赖包的软件。
  • ¥60 fail to initialize keyboard hotkeys through kernel.0000000000
  • ¥30 ppOCRLabel导出识别结果失败
  • ¥15 Centos7 / PETGEM
  • ¥15 csmar数据进行spss描述性统计分析
  • ¥15 各位请问平行检验趋势图这样要怎么调整?说标准差差异太大了
  • ¥15 delphi webbrowser组件网页下拉菜单自动选择问题
  • ¥15 wpf界面一直接收PLC给过来的信号,导致UI界面操作起来会卡顿
  • ¥15 init i2c:2 freq:100000[MAIXPY]: find ov2640[MAIXPY]: find ov sensor是main文件哪里有问题吗