找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

565

积分

0

好友

67

主题
发表于 4 天前 | 查看: 12| 回复: 0

数据库是应用系统的核心资产之一,其稳定性和可靠性至关重要。在诸多数据库与中间件中,Redis 凭借其高性能的内存读写能力被广泛使用。为了提升数据的可用性和读性能,搭建主从复制集群是一种常见的解决方案。本文将详细介绍如何基于两台服务器,从临时测试到永久配置,一步步搭建并验证一个 Redis 主从集群。

Linux运维技术栈学习路径思维导图

临时测试搭建

首先,我们准备两台已独立运行 Redis 服务的服务器。搭建的第一步是确保网络连通性,修改 Redis 配置文件,使其监听正确的接口。

  1. 分别修改两台服务器上的 Redis 配置文件:
    vi /etc/redis.conf

    找到 bind 配置项,将其修改为 0.0.0.0 或本机的具体 IP 地址,以确保可以接受来自其他服务器的连接。

    bind 0.0.0.0
  2. 修改配置后,重启两台服务器的 Redis 服务使配置生效。

此时,两台 Redis 实例均处于独立运行状态。我们可以通过 redis-cli 连接后执行 info replication 命令查看复制状态,初始状态下,所有节点默认都是 master 角色,即可读可写。

# Replication
role:master
connected_slaves:0
master_repl_offset:0
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0

接下来,选定其中一台作为从节点(Slave)。在其 redis-cli 命令行中,执行 SLAVEOF 命令,指定主节点(Master)的 IP 地址和端口。

SLAVEOF <master-ip> <master-port>

命令执行成功后,再次在从节点查询复制状态,可以发现其角色已从 master 转变为 slave,并且显示了主节点的连接信息。

# Replication
role:slave
master_host:192.168.31.195
master_port:6379
master_link_status:up
master_last_io_seconds_ago:1
master_sync_in_progress:0
slave_repl_offset:99
slave_priority:100
slave_read_only:1
connected_slaves:0
master_repl_offset:0
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0

同时,在主节点查询状态,可以看到已成功连接一个从节点。

# Replication
role:master
connected_slaves:1
slave0:ip=192.168.31.196,port=6379,state=online,offset=141,lag=0
master_repl_offset:141
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:2
repl_backlog_histlen:140

至此,一个临时的主从关系已经建立。但这种方式在服务重启后会失效,适用于快速测试场景。

永久性配置搭建

为了实现稳定的主从架构,我们需要通过修改配置文件的方式,使主从关系在服务重启后依然保持。

主节点 (Master) 配置

在主服务器的 redis.conf 配置文件中,确保以下核心配置项正确设置。以下是一个参考配置片段:

# 网络绑定 - 允许所有IP或指定IP
bind 0.0.0.0

# 端口
port 6379

# 关闭保护模式(允许外部连接)
protected-mode no

# 启用守护进程
daemonize yes

# 密码设置(可选但建议)
requirepass RedisMaster@2024

# 持久化设置
save 900 1
save 300 10
save 60 10000

# 日志文件
logfile "/var/log/redis/redis-server.log"

# 数据目录
dir /var/lib/redis

# 最大内存
maxmemory 1gb
maxmemory-policy allkeys-lru

# 主从相关优化
repl-backlog-size 256mb
repl-timeout 60
min-slaves-to-write 1

从节点 (Slave) 配置

在从服务器的 redis.conf 配置文件中,除了常规配置,关键是指定主节点的信息。注意不同 Redis 版本的命令差异:

# 网络绑定
bind 0.0.0.0

# 端口(可以相同或不同)
port 6379

# 关闭保护模式
protected-mode no

# 守护进程
daemonize yes

# ========== 主从配置核心部分 ==========
# Redis 5.0+ 使用 replicaof
#replicaof 192.168.31.195 6379

# Redis 4.0及以下使用 slaveof
slaveof 192.168.31.195 6379
# 如果主节点设置了密码,此处需配置
masterauth RedisMaster@2024

# 从节点只读
slave-read-only yes

# 从节点数据目录
dir /var/lib/redis

# 日志
logfile "/var/log/redis/redis-server.log"

# 复制相关优化
repl-diskless-sync no
repl-backlog-size 256mb
repl-timeout 60

配置完成后,分别重启主从节点的 Redis 服务。服务启动后,主从集群即永久生效,除非手动修改配置变更主从关系。

功能验证

配置永久生效后,可以验证主从读写分离的特性。在从节点尝试执行写操作,将会收到错误提示,这说明从节点已成功设置为只读模式。

[root@localhost ~]# redis-cli
127.0.0.1:6379> set a 1
(error) READONLY You can't write against a read only slave.
127.0.0.1:6379>

通过以上步骤,我们完成了一个基于两台服务器的 Redis 主从集群搭建。这种架构不仅实现了数据的冗余备份,还通过读写分离提升了系统的整体读吞吐量,是构建高可用服务的基础。在实际生产环境中,还可以在此基础上进一步配置哨兵(Sentinel)来实现自动故障转移。如果你想深入探讨更多关于分布式系统与高可用架构的话题,欢迎在 云栈社区 交流分享。




上一篇:详解金融分布式事务架构设计:核心模式与选型指南
下一篇:MySQL LIKE模糊查询优化全攻略:面试高频难题的实战解析
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-1-24 01:42 , Processed in 1.488761 second(s), 41 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表