Redis主从、哨兵
之前安装了redis,但是单节点redis不可靠,现在搭建redis主从,提高可用性。
一、搭建一主二从
redis主从其实是读写分离,主节点写数据,从节点读数据。
1、准备三台redis机器。redis的密码需要一致,否则主从切换时会有问题。
2、选择两台,作为从机,编辑redis核心配置文件。
vim /usr/local/redis/redis.config
3、修改配置(从机)
#主节点ip和端口
replicaof <master-ip> <master-port>
#主节点redis密码
masterauth <master-password>
replica-read-only yes
4、删除工作空间之前的rdb和aof文件,工作空间位置在安装redis时是自己定义的,我的是/usr/local/redis/working
5、重启redis
/etc/init.d/redis_init_script stop
/etc/init.d/redis_init_script start
6、进入/usr/local/redis/working,发现rdb和aof又出现了,这个是同步的主节点的。
7、启动redis客户端,查看从节点状态,如图第一张从节点,第二张主节点
redis-cli -a <password>
info replication
8、测试读写数据有没有问题
9、至此,一主二从搭建完成,但是还有一个问题,主节点挂掉之后从节点不会自动选举出新的主节点,下边我们加入哨兵,解决这个问题
二、哨兵(三台redis都要做如下配置)
1、进入/usr/local/redis,创建并且配置sentinel.conf
port 26379
pidfile "/usr/local/redis/sentinel/redis-sentinel.pid"
dir "/usr/local/redis/sentinel"
daemonize yes
protected-mode no
logfile "/usr/local/redis/sentinel/redis-sentinel.log"
# 配置哨兵
sentinel monitor mymaster 127.0.0.1 6379 2
# 密码
sentinel auth-pass <master-name> <password>
# master被sentinel认定为失效的间隔时间
sentinel down-after-milliseconds mymaster 30000
# 剩余的slaves重新和新的master做同步的并行个数
sentinel parallel-syncs mymaster 1
# 主备切换的超时时间,哨兵要去做故障转移,这个时候哨兵也是一个进程,如果他没有去执行,超过这个时间后,会由其他的哨兵来处理
sentinel failover-timeout mymaster 180000
2、启动3台哨兵
redis-sentinel sentinel.conf
3、测试
- master挂了,看slave是否成为master
- master恢复,观察slave状态
4、结论
master挂了以后,由于哨兵监控,剩余slave会进行选举,选举后其中一个成为master,当原来的master恢复后,他会成为slave。
5、补充:
当主节点挂掉,变为从节点后,查看这台redis的信息(info replication),发现master_link_status:down。表示同步有问题。这是因为之前主节点没有配置
masterauth <master-password>属性,他作为主节点时用不到这个,所以当时没问题,当作为从节点,因为没有主节点的密码,所以就同步不了数据了。
整理自慕课网《java架构师体系课》
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
· DeepSeek 解答了困扰我五年的技术问题
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 推荐几款开源且免费的 .NET MAUI 组件库
· 实操Deepseek接入个人知识库
· 易语言 —— 开山篇
· 【全网最全教程】使用最强DeepSeekR1+联网的火山引擎,没有生成长度限制,DeepSeek本体