当前位置: 首页 > java >正文

Redis集群搭建(哨兵模式+一主两从)

背景:甲方服务器的漏洞扫描提示redis6.2.6集群版本存在很多漏洞,需要升级版本;先后升级到了7.0.15,7.2.6本以为搞定的时候,甲方临时发布通知:强制要求更新到7.4.3;辛辛苦苦的又要重来!!!!

架构图:
 

1、下载需要的reids版本,以7.0.15为例,7.4.3版本同样安装方式:
 

https://download.redis.io/releases/

2、找到3台服务器

redis:

192.168.1.166:6380 master

192.168.1.201:6380 slaver

192.168.1.201:6381 slaver

sentinel:

192.168.1.166:26379 master

192.168.1.201:26379 slaver

192.168.1.201:26380 slaver

3、分别上传redis安装包到指定文件下,并解压:

tar -zxvf redis-7.0.15.tar.gz

4、进入解压的文件,执行安装:

make && make install

如果出现:/bin/sh: cc: command not found错误,是因为没有安装 gcc 环境,使用命令yum install gcc安装 gcc 环境即可;

检查gcc是否安装:gcc --version

gcc离线安装:下载离线安装包,然后执行(自行下载文件)

rpm -ivh *.rpm --nodeps --force

安装完之后,删除之前解压出来的reids文件夹,重新解压执行make && make install

5、进入redis文件夹,备份配置文件:

cp redis.cof redis_back.conf
cp sentinel.conf sentinel_back.conf

6、修改主节点redis.conf:

1)//让Redis绑定在 0.0.0.0 这个 IP 地址上,表示可以接收任何 IP 地址的连接。将bind 127.0.0.1 -::1 替换为 bind 0.0.0.0
2)//这个表示支持后台启动										
将 daemonize on 替换成 daemonize yes 
3)//protected-mode  保护模式,一定要关闭
将protected-mode 改为no
4)//Redis运行日志						
日志logfile   “./redis.log”
5)//登录密码 建议设置为相同密码维护成本低,不同也可以
masterauth 123456
requirepass 123456

从节点增加配置:

replicaof 192.168.1.166 6380

7、启动redis,先主后从:

redis-server redis.conf

查看进程:ps -ef|grep redis

常用命令:

#进入redis
1)redis-cli -p 6379
或者:redis-cli -p 6380 -a 123456
#验证密码
2)auth 123456
#常用命令
3)命令
keys *
get key
set key value
ttl key
select 0

查看redis集群信息:
info replication

8、修改sentinel.conf:

# vim sentinel.conf
#端口默认为26379。
port 26379
#关闭保护模式,可以外部访问。
protected-mode no
#设置为后台启动。
daemonize yes
#日志文件。
logfile /root/redis-7.2.4/log/sentinel.log
#指定主机IP地址和端口,并且指定当有2台哨兵认为主机挂了,则对主机进行容灾切换。(两个或以上哨兵认为主服务器不可⽤时,才会进⾏failover操作。)
sentinel monitor mymaster 192.168.1.166 6380 2
#当在Redis实例中开启了requirepass,这里就需要提供密码。
sentinel auth-pass mymaster 123456
#这里设置了主机多少秒无响应,则认为挂了。这里设置为30秒
sentinel down-after-milliseconds mymaster 30000
#主备切换时,最多有多少个slave同时对新的master进行同步,这里设置为默认的1。
sentinel parallel-syncs mymaster 1
#故障转移的超时时间,这里设置为一分钟。
sentinel failover-timeout mymaster 60000

9、启动哨兵:redis-server sentinel.conf  --sentinel

10、三个哨兵都启动后,可使用如下命令查看哨兵信息

redis-cli -p 26379

info sentinel

如果一直是两个sentinel,排查一下sentinel.conf中的myid是否相同他是哨兵的唯一标识;(直接删除重新启动会重新生成

还有需要判断服务器的网络是否通ping

11、redis数据迁移,因为系统的key比较少,我目前是使用了两种方式

1)在线迁移:

进入到目的地的redis,然后执行命令:迁移数据源的redis(192.168.1.201 6380迁移zhangsan的值)

 migrate 192.168.1.201 6380 zhangsan 0 5000 copy auth 123456

2)物理迁移:

redis迁移:(7.4.3不太好用上边的migrate ,不知道为什么一直显示nokey,于是换了这种方法)
所谓的物理迁移,指的是在redis开启了持久化存储过后,我们可以通过复制dump.rdb文件的方式都redis进行数据迁移。具体实施方法如下:

● 在redis源端,找到正确的数据持久化存储文件dump.rdb

● 将dump.rdb复制到目标端的redis指定的持久化存储所在的路径

● 启动redis

如果redis是一主二从的,则先关闭从redis,然后关闭主redis,再把rdb文件传过去,然后重启主redis,最后重启从redis使数据同步。

3)当然还有别的方法,我没用过,所以不做研究;


12、验证reids集群+哨兵模式生效
1)ps -ef|grep redis

2)kill -9 pid其中一个redis

3)发现master节点自动切换到了别的节点,进入redis执行info replication查看节点详情;

http://www.xdnf.cn/news/3261.html

相关文章:

  • 蓝桥杯Python(B)省赛回忆
  • HTTP 503(Service Unavailable)
  • 在线服务器网站具体是指什么?
  • 10.idea中创建springboot项目_jdk17
  • 疾风气象大模型:实现太阳辐照度数据全球可视化的创新方案
  • WebSocket与Socket、TCP、HTTP的关系及区别
  • 文章记单词 | 第52篇(六级)
  • OpenCL 能取代 CUDA 吗?
  • 综合练习二
  • PCB设计实战技巧宝典:从库管理到布线优化的全流程解析
  • 「Mac畅玩AIGC与多模态09」开发篇05 - 使用自定义天气查询插件开发智能体应用
  • 数据库设计理论:从需求分析到实现的全流程解析
  • BT138-ASEMI无人机专用功率器件BT138
  • [原创](现代Delphi 12指南):[macOS 64bit App开发]: [1]如何使用原生NSAlert消息框 (runModal模式)
  • 从Oculus到Meta:Facebook实现元宇宙的硬件策略
  • 第十六届蓝桥杯 2025 C/C++组 数列差分
  • 氢混合气配气系统在传感器检测中的重要应用
  • 海外社交软件开发实战:从架构设计到合规落地的技术解析
  • 健达智能 盘古信息IMS项目启动:携手开启数字化转型新篇章
  • DC-DC常见应用问题解疑
  • 爬虫逆向思维
  • 深入理解 C++11 delete 关键字:禁用函数的艺术
  • CMU-15445(2)——PROJECT#0-C++PRIMER
  • [Java入门]抽象类和接口
  • Vue3源码学习3-结合vitetest来实现mini-vue
  • Spring Boot 实现多种来源的 Zip 多层目录打包下载(本地文件HTTP混合)
  • windows 使用websocket++ (C++环境)
  • 高效管理远程服务器Termius for Mac 保姆级教程
  • 第三部分:走向共产主义 第二章:科技发展(续)
  • 使用Dagster定义数据资产:从入门到实践