redis主从复制
Redis主从复制(Redis replication)是Redis提供的一种数据备份和故障转移机制。通过主从复制,可以将一个Redis服务器(主节点)的数据复制到一个或多个Redis服务器(从节点)。这样做的好处包括:
- 数据冗余:从节点作为主节点的数据副本,提供了数据冗余,可以在主节点发生故障时快速恢复数据。
- 负载均衡:可以将读操作分散到多个从节点上,减轻主节点的压力,提高整体性能。
- 故障转移:在主节点不可用时,可以自动或手动将从节点升级为新的主节点,继续提供服务。
主从复制的配置
Master节点:192.168.20.10
Slave1节点:192.168.20.20
Slave2节点:192.168.20.30
安装Redis
systemctl stop firewalld.service
setenforce 0
mkdir /usr/local/redis/{conf,log,data}
cd /opt
yum install -y gcc gcc-c++ make
wget /opt http://download.redis.io/releases/redis-5.0.7.tar.gz
tar xfv redis-5.0.7.tar.gz
cd /opt/redis-5.0.7/
make
make install
cd utils/
./install_server.sh
安装完成
配置主服务器
修改主服务器文件
/etc/redis/6379.conf
bind 0.0.0.0 #70行,修改监听地址为0.0.0.0
daemonize yes #137行,开启守护进程
logfile /var/log/redis_6379.log #172行,指定日志文件目录
dir /var/lib/redis/6379 #264行,指定工作目录
appendonly yes #700行,开启AOF持久化功能
一般只用修改bind 0.0.0.0和appendonly yes ,其他保持默认
/etc/init.d/redis_6379 restart
重启服务
配置从服务器
修改从服务器配置文件
/etc/redis/6379.conf
bind 0.0.0.0 #70行,修改监听地址为0.0.0.0
daemonize yes #137行,开启守护进程
logfile /var/log/redis_6379.log #172行,指定日志文件目录
dir /var/lib/redis/6379 #264行,指定工作目录
replicaof 192.168.20.10 6379 #288行,指定要同步的Master节点IP和端口
appendonly yes #700行,开启AOF持久化功能
验证主从效果
从服务器重启服务
/etc/init.d/redis_6379
主服务器
tail -f /var/log/redis_6379.log
或者所有服务器使用
redis-cli info replication
可以看到主从复制成功
哨兵模式
Redis哨兵(Redis Sentinel)是一种高可用解决方案,用于监控Redis主服务器和从服务器,并在主服务器不可用时自动将其中一个从服务器提升为新的主服务器。哨兵系统由一组哨兵进程组成,它们相互通信以保持一致性,并监视主服务器和从服务器的状态。
- 监控主从状态:哨兵进程定期与主服务器和从服务器通信,以确认它们是否正常运行。
- 自动故障转移:如果主服务器不可用,哨兵会自动将一个从服务器提升为新的主服务器,并通知其他从服务器连接到新的主服务器。
- 配置提供者:哨兵进程还提供配置信息,例如主服务器地址、从服务器地址等,以便客户端可以连接到新的主服务器。
- 手动故障转移:哨兵允许管理员手动指定一个从服务器作为新的主服务器。
- 消息通知:哨兵可以配置为在发生故障时通过各种方式(如发送邮件、短信等)通知管理员。
- 数据持久化:哨兵可以与Redis的持久化功能一起使用,以实现数据的高可用性和持久性。
为了实现哨兵模式,需要启动至少三个哨兵进程,并确保它们能够相互通信。
哨兵的工作机制
在Redis哨兵模式中,故障转移(Failover)是指当主服务器不可用时,哨兵进程能够自动将一个从服务器提升为新的主服务器,以保持Redis集群的可用性。以下是Redis哨兵模式中故障转移的步骤:
- 监控:哨兵进程不断地监控主服务器和从服务器的运行状态,确保它们都处于正常工作状态。
- 心跳检测:哨兵之间以及哨兵与Redis服务器之间通过心跳检测来确认对方的存活状态。
- 发现故障:如果主服务器没有在指定的时间内响应心跳,或者主服务器在指定时间内没有与从服务器同步数据,哨兵会认为主服务器发生了故障。
- 投票选举:哨兵之间通过通信,对故障的主服务器进行投票,确定哪个从服务器将被提升为新的主服务器。
- 故障转移:一旦从服务器被选定,哨兵会向其他从服务器发送命令,将它们指向新的主服务器。
- 配置更新:客户端和其他哨兵会更新它们的配置,以指向新的主服务器。
- 同步数据:新的主服务器开始与从服务器同步数据,确保它们之间的数据一致性。
- 完成故障转移:当新的主服务器与所有从服务器都同步完成后,故障转移完成,Redis集群恢复正常工作。
在整个故障转移过程中,Redis哨兵会确保数据的一致性和集群的可用性。故障转移通常是自动完成的,但在某些情况下,管理员也可以手动干预,例如在主服务器发生故障时手动选择一个从服务器作为新的主服务器。
Redis哨兵的故障转移机制是一个高度可靠和自动化的过程,它确保了Redis集群即使在主服务器发生故障的情况下也能继续提供服务,从而保证了系统的稳定性和高可用性。
哨兵模式的搭建
搭建哨兵模式必须先搭建主从模式
1关闭Redis
/etc/init.d/redis_6379
2 修改哨兵模式配置文件
vim /opt/redis-5.0.7/sentinel.conf
protected-mode no #17行,关闭保护模式
port 26379 #21行,Redis哨兵默认的监听端口
daemonize yes #26行,指定sentinel为后台启动
logfile "/var/log/sentinel.log" #36行,指定日志存放路径
dir "/var/lib/redis/6379" #65行,指定数据库存放路径
sentinel monitor mymaster 192.168.20.10 6379 2 #84行,修改
设置完成
启动哨兵
cd /opt/redis-5.0.7/
redis-sentinel sentinel.conf &
查看哨兵信息
redis-cli -p 26379 info Sentinel
故障模拟
ps -ef | grep redis
关闭主服务器的redis服务
/etc/init.d/redis_6379 stop
成功