- 实验目的
1)了解什么是redis集群;
- 实验内容
1)搭建Redis集群,包含2个部分:1.Redis的主从复制集群,2.Redis哨兵集群
- 程序设计思想(流程图,或算法思想或设计方案等)
Redis主从复制集群和哨兵集群都是Redis高可用性方案中的重要组成部分。主从复制集群利用Redis的异步复制机制,通过将一个Redis实例(主节点)的数据复制到另一个Redis实例(从节点)上,实现数据备份和容灾。当主节点出现故障时,可以通过提升从节点为主节点,继续提供服务,从而实现高可用性。哨兵集群则是基于主从复制集群的基础上,通过引入哨兵节点(Sentinel),实现主节点故障检测和自动故障切换。当主节点出现故障时,哨兵节点会自动选举一个从节点为新的主节点,从而实现无人工干预的故障转移。
四、源代码(主要源代码)
无
- 测试与运行
redis集群主从复制:
在主Redis节点上的redis.conf文件中添加以下配置:
# 开启主节点
daemonize yes
# 设置密码
requirepass yourpassword
# 开启AOF持久化
appendonly yes
# 设置AOF持久化文件名
appendfilename "appendonly.aof"
# 设置AOF持久化文件保存目录
dir/var/lib/redis
接着复制并修改从节点的conf中的port为6380,6381
cp ./redis.conf ./redis-slave1.conf
cp ./redis.conf ./redis-slave2.conf
再分别启动3个redis
redis-server ./redis.conf
redis-server ./redis-slave1.conf
redis-server ./redis-slave2.conf
用ps -ef|grep redis查询启动是否成功
进入2个从节点并让他们认主节点:
redis-cli -h 192.168.214.130 -p 6380
SLAVEOF 192.168.214.130 6379
redis-cli -h 192.168.214.130 -p 6381
SLAVEOF 192.168.214.130 6379
redis-cli -h 192.168.214.130 -p 6379
info replication
主节点中查看状态,可以看到有俩从节点
然后主节点set值并用从节点get,发现成功
set key1 vaue1
redis-cli -h 192.168.214.130 -p 6380
192.168.214.130:6380> get key1
接着shutdonw主节点,再用从节点get,发现依然成功
从节点无法set
从节点shutdown后再启动就会脱离主节点
redis集群哨兵模式:
设置后台运行
daemonize yes
复制sentinel.conf并修改端口号
cp ./sentinel.conf ./sentinel-1.conf
cp ./sentinel.conf ./sentinel-2.conf
启动3个哨兵
查看是否启动
ps -ef|grep redis
redis-server中6379为主节点,6381和6380为从节点
进入一个哨兵控制台
redis-cli -p 26379
查看哨兵监控的主节点信息,发现监控了一个1个master和4个slaves(理论上是俩个slaves端口号分别为6380和6381,但是每个端口却有俩个ip,我也不知道怎么搞出来的)
我们通过kill – 9 5144 强制关闭主节点再启动(51144是主节点ID) ,再查看端口为6379的哨兵的info replication,发现主节点端口号6379变成6380了,这就说明主节点被关闭后哨兵投票选择了6380做主节点
如果有俩个哨兵被意外关闭了,剩下的一个哨兵依然能对redis-server监控
- 总结
Redis主从复制集群和哨兵集群都是Redis高可用性方案的重要组成部分,可以通过异步复制和自动故障切换实现高可用性。
Redis主从复制集群可以通过设置slaveof选项实现从节点数据复制,主节点故障时可以手动将从节点提升为主节点,需要手动干预。
Redis哨兵集群则引入哨兵节点,实现主节点故障检测和自动故障切换,具备自动化故障转移的能力。
Redis主从复制集群和哨兵集群的搭建需要对Redis配置文件进行修改,其中涉及到的一些重要配置项包括:bind、port、daemonize、pidfile、logfile、dir、slaveof、sentinel monitor、sentinel auth-pass等。
在实验过程中,需要注意一些常见问题,如配置文件修改错误、端口占用、防火墙限制等。可以通过查看日志、调整配置文件、检查端口占用情况、关闭防火墙等方式解决。
实验过程中还可以通过Redis命令行工具redis-cli进行操作,例如查看节点信息、检查复制状态、进行手动故障转移等。
通过这个实验,我们了解到Redis主从复制集群和哨兵集群的基本原理和搭建方法,并学习了一些常见问题的解决方法。这对于我们在实际工作中构建高可用性的Redis集群,具有一定的参考意义。