redis cluster中info replication主节点没有获取到从节点信息

本文介绍了在3主3从的Redis集群中遇到的主从同步问题,包括从节点无法正常复制主节点数据的情况。通过调整配置文件解决了该问题,并分享了解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

搭建了6个redis服务实例,是3master+3slave的架构。
执行检查时,主从是对应好的。
在这里插入图片描述
但是进入一个主节点,但是info replication查询信息,connected_slaves却为0,如下:
在这里插入图片描述
而且,192.168.2.118 7004是192.168.2.107 7001的从节点,但是主节点写的数据,从节点竟然读不了,如下:
在这里插入图片描述
显然,主从关系还是没对应好。
再查看一对主从节点,master不可以查看到slave,而slave可以查看到master,如下:
在这里插入图片描述
解决办法:
给这6个服务实例的配置文件,加上如下两个参数,即可解决这个问题

master上启用安全认证,requirepass
slave连接口令,masterauth

总结:
1、6个服务实例的验证口令尽量配置成一样的
2、之前一主多从时,只是master上启用安全认证requirepass;在slave上配置连接口令masterauth。为什么这里每个实例的配置文件都要配置这两个参数呢,因为在创建集群时,主从是随机分配的。

### Redis Sentinel 配置从节点同步并连接主节点 #### 1. 主节点配置 在 Redis主节点上,需要确保其 `redis.conf` 文件已经正确配置。以下是关键参数: - **bind**: 绑定 IP 地址,默认绑定的是本地地址 (127.0.0.1),如果是分布式环境,建议修改为实际的服务器 IP 地址。 - **port**: 设置监听端口,默认是 6379。 - **requirepass**: 如果启用了密码验证,设置访问密码。 ```bash # redis.conf bind 192.168.32.131 port 6379 protected-mode no daemonize yes logfile "/var/log/redis_6379.log" dir /data appendonly yes ``` 完成以上配置后,启动 Redis 主节点服务[^4]。 --- #### 2. 从节点配置 从节点也需要有自己的 `redis.conf` 文件,并指定主节点信息以便进行数据同步。以下是关键步骤: - 修改 `slaveof` 参数,指向主节点的 IP 和端口号。 - 启动从节点的服务。 ```bash # redis.conf slaveof 192.168.32.131 6379 masterauth your_password_if_set_in_master ``` 完成后,启动从节点服务: ```bash redis-server /path/to/redis.conf ``` 此时,从节点会自动尝试与主节点建立连接,并开始同步数据。 --- #### 3. Sentinel 节点配置 Sentinel 是用于监控 Redis 数据节点健康状态以及实现高可用性的组件。为了使 Sentinel 正确管理主从关系,需在其配置文件中定义以下内容: - 指定要监控的主节点名称及其初始信息。 - 设置 quorum 数量(即多少个 Sentinel 认为主节点不可用时才触发故障转移)。 - 下线时间阈值 (`down-after-milliseconds`)。 示例配置如下: ```ini # sentinel.conf sentinel monitor mymaster 192.168.32.131 6379 2 sentinel down-after-milliseconds mymaster 5000 sentinel failover-timeout mymaster 60000 sentinel parallel-syncs mymaster 1 ``` 启动 Sentinel 实例: ```bash redis-sentinel /path/to/sentinel.conf ``` 重复此过程,在其他机器上也部署多个 Sentinel 节点以增强可靠性[^2]。 --- #### 4. 故障切换机制概述 当某个 Sentinel 发现主节点无法响应超过设定的时间(`down-after-milliseconds`),它会将其标记为“主观下线”。如果有足够的 Sentinel 达成一致意见,则进入“客观下线”阶段。随后,这些 Sentinels 将协商选出一个新的主节点,通常是当前性能最佳的一个从节点[^3]。 --- #### 5. 测试连通性和功能 可以通过执行以下命令测试主从复制和 Sentinel 功能是否正常工作: - 连接到任意一个 Redis 或 Sentinel 节点,运行 `INFO replication` 查看主从状态。 - 使用 `SENTINEL get-master-addr-by-name mymaster` 查询当前主节点的位置。 --- ### 示例代码:Spring Boot 配置 Redis Cluster 如果计划通过 Spring Boot 应用程序操作这个集群,可以参考以下配置方式: ```yaml spring: redis: host: 192.168.32.131 # 可替换为 Sentinel 提供的实际主节点地址 port: 6379 password: your_redis_password lettuce: cluster: refresh: adaptive: true period: PT5S ``` 或者直接利用 Jedis/Spring Data Redis API 编写逻辑处理动态获取 Master 地址的功能。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值