redis主从复制架构安装与部署
redis主从复制架构安装与部署
- 1、Redis 一主两从架构的优势
- 2、环境准备
- 3、下载redis
- 4、解压缩文件
- 5、编辑配置文件
- 6、创建数据目录并启动Redis
- 7、检查主从状态
- 8、 Redis Sentinel 模式
1、Redis 一主两从架构的优势
Redis 采用一主两从(1个主节点 + 2个从节点)的复制架构具有以下显著优势:
-
高可用性保障
故障自动切换:当主节点故障时,哨兵(Sentinel)可以从两个从节点中选举出新的主节点
双重备份:两个从节点同时复制主节点数据,即使一个从节点故障,仍有另一个从节点可用
减少单点故障:相比一主一从,多一个从节点大幅降低了数据丢失风险 -
读写分离提升性能
读操作负载均衡:可以将读请求分散到两个从节点,减轻主节点压力
查询吞吐量翻倍:相比单一从节点,能处理更多的只读请求
适合读多写少场景:如电商商品展示、新闻网站等读密集型应用 -
数据安全强化
双重数据备份:两个独立的从节点提供冗余,数据安全性更高
灾难恢复能力:即使一个从节点完全损坏,仍有另一个完整数据副本
防止脑裂问题:在哨兵模式下,两个从节点可以提供更可靠的故障判定 -
运维灵活性
无缝维护升级:可以轮流重启从节点进行维护,不影响服务
数据迁移方便:可以从任一从节点创建新的副本或进行数据备份
测试验证环境:一个从节点可用于生产服务,另一个可用于数据分析或测试 -
适度的资源消耗
比三主三从更节省资源:在保证一定可用性的前提下,比Redis Cluster的6节点方案节省资源
成本效益平衡:比一主一从更可靠,比三主三从更经济
2、环境准备
3台Linux服务器(假设IP分别为10.1.9.1、10.1.9.2、10.1.9.3)
确保服务器之间网络互通
每台服务器已安装gcc等编译工具
#安装依赖
对于CentOS/RHEL:
yum install -y gcc make tcl
3、下载redis
下载地址:http://download.redis.io/releases/redis-7.2.4.tar.gz
文件下载到目录 /usr/local
4、解压缩文件
执行命令
cd /usr/local
tar -xzf redis-7.2.4.tar.gz
cd redis-7.2.4
make
make install
5、编辑配置文件
在主节点(10.1.9.1)上创建配置文件:
mkdir -p /etc/redis
vi /etc/redis/redis-master.conf
配置文件内容
bind 0.0.0.0
port 6379
daemonize yes
pidfile /var/run/redis_6379.pid
logfile "/var/log/redis_6379.log"
dir /var/lib/redis/6379
appendonly yes
masterauth '5AhgxT5B%V7MEq11'
requirepass '5AhgxT5B%V7MEq11'
在两个从节点(10.1.9.2和10.1.9.3)上创建配置文件:
mkdir -p /etc/redis
vi /etc/redis/redis-slave.conf
配置文件内容
bind 0.0.0.0
port 6379
replicaof 10.1.9.1 6379
daemonize yes
pidfile /var/run/redis_6379.pid
logfile "/var/log/redis_6379.log"
dir /var/lib/redis/6379
appendonly yes
masterauth '5AhgxT5B%V7MEq11'
requirepass '5AhgxT5B%V7MEq11'
6、创建数据目录并启动Redis
在所有节点上执行:
mkdir -p /var/lib/redis/6379
在主节点上执行:
/usr/local/bin/redis-server /etc/redis/redis-master.conf
在从节点上执行:
/usr/local/bin/redis-server /etc/redis/redis-slave.conf
7、检查主从状态
/usr/local/bin/redis-cli -h 10.1.9.1 -a 5AhgxT5B%V7MEq11 info replication
显示正常
role:master
connected_slaves:2
slave0:ip=10.1.9.3,port=6379,state=online,offset=56,lag=0
slave1:ip=10.1.9.2,port=6379,state=online,offset=56,lag=0
master_failover_state:no-failover
master_replid:0eb872e2745f73d08cb52c06e6732121289f21ed
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:56
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:56
8、 Redis Sentinel 模式
如果部署了 Redis Sentinel 来管理主从复制,主节点挂掉后会自动进行故障转移:
Sentinel 的行为:
Sentinel 是一个独立的进程,用于监控 Redis 节点状态。
当主节点挂掉,Sentinel 会:
检测主节点不可用(通过心跳检测)。
从从节点中选举一个新的主节点(基于优先级、复制偏移量等)。
将其他从节点配置为新主节点的从节点。
通知客户端主节点变更(通过 Sentinel 的客户端 SDK 或配置)。
故障转移通常在几秒到几十秒内完成。