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

Redis部署之主从

使用两台云服务器,在 Docker 下部署。

Redis版本为:7.2.4

下载并配置redis 配置文件

下载

 wget -c http://download.redis.io/redis-stable/redis.conf

配置

master节点配置

bind  0.0.0.0										# 使得Redis服务器可以跨网络访问,生产环境请考虑安全性
requirepass 123456              # 设置master连接密码,slave可省略
appendonly yes									# 是否开启 AOF 持久化

这里需要开启AOF,保证写命令及时同步到从节点。

slave节点配置

bind  0.0.0.0										# 使得Redis服务器可以跨网络访问,生产环境请考虑安全性
replicaof 192.168.12.30 6379		# 主节点ip 端口
masterauth 123456               # slave连接master密码,master可省略

在 Redis 5.0 及之后的版本中,建议使用 replicaof 命令来设置主从复制关系,slaveof 命令已经被标记为废弃,但仍然可以使用。

slaveof 命令在 Redis 6.0 及之后的版本中将被完全删除。

启动

启动前创建目录进行文件挂载

# 配置文件存放目录,将redis.conf文件移动到该目录
mkdir -p /root/docker-data/redis/config
# 数据存放目录
mkdir -p /root/docker-data/redis/data

在两台服务器分别执行以下命令,启动 docker 容器。

docker run -d -p 6379:6379 -v /root/docker-data/redis/config/:/usr/local/etc/redis/ -v /root/docker-data/redis/data:/data -v /etc/localtime:/etc/localtime:ro redis redis-server /usr/local/etc/redis/redis.conf

-v /etc/localtime:/etc/localtime:ro作用是将宿主机的 /etc/localtime 文件挂载到容器内的 /etc/localtime 文件,保证宿主机和容器时间一致。

验证

使用docker logs -f <container-id>查看容器日志,若主从节点打印以下信息则表示部署成功。

主节点

从节点

踩坑记录

部署完成后发现通过客户端可以访问主节点,但无法访问从节点,折腾半天发现原来是从节点未修改redis.conf中的bind配置,默认只能接受来自其运行的同一主机的客户端连接,注释该配置或配置为bind 0.0.0.0即可。

关于bind配置参数说明如下(for ChatGPT):

在Redis的配置文件(redis.conf)中,bind指令用于指定Redis服务器绑定的网络接口地址或主机名。它控制Redis服务器监听来自哪个网络接口的连接请求。

默认情况下,bind指令是注释掉的,这意味着Redis服务器会监听所有可用的网络接口,包括本地环回接口(127.0.0.1)和所有网络接口(0.0.0.0),以允许来自任何地址的连接请求(这里存在差异,最新版本默认开启)。

如果您取消注释并设置了bind指令,Redis服务器将仅绑定到指定的网络接口地址或主机名上。这对于限制Redis服务器监听的网络接口是有用的,可以增加安全性并确保只有特定网络接口上的连接请求被接受。

例如,如果您希望Redis仅监听本地环回接口(127.0.0.1),则可以将bind指令设置为:

bashCopy code
bind 127.0.0.1

这将使Redis服务器仅接受来自本地环回接口的连接请求。如果要允许来自特定网络接口的连接请求,请将bind指令设置为该网络接口的IP地址或主机名。

需要注意的是,如果Redis服务器绑定到特定的网络接口,而不是监听所有可用的网络接口,可能会导致外部客户端无法连接到Redis服务器。因此,在设置bind指令时,请确保您了解并考虑了相关的网络配置和安全性需求。

注意:

  • 在生产环境中,建议设置 bind 配置项,以限制 Redis 服务器的访问权限,提高安全性。

参考资料

Redis 主从复制原理及搭建部署

Redis主从模式部署

http://www.lryc.cn/news/340814.html

相关文章:

  • 【模拟】Leetcode 数青蛙
  • Scala 02——Scala OOP
  • FFmpeg: 自实现ijkplayer播放器--04消息队列设计
  • Redis中的集群(四)
  • JookDB下载安装使用
  • 百度OCR身份证识别C++离线SDKV3.0 C#对接
  • Web前端 Javascript笔记1
  • Git回滚版本并push到远端master
  • MAC: 自己制作https的ssl证书(自己签发免费ssl证书)(OPENSSL生成SSL自签证书)
  • mac配置Jmeter环境
  • Linux虚拟化————KVM
  • 【b站李同学的Lee】Part 2 模块化开发 NodeJS+Gulp基础入门+实战
  • AI大模型日报#0415:贾佳亚团队新作王炸、马斯克首款多模态大模型、ChatGPT to B
  • 基于GRU实现评论文本情感分析
  • 【C 数据结构】线性表
  • C++初级----list(STL)
  • web安全学习笔记(9)
  • 【Python-基础】字符串合集
  • Scala之List
  • Springboot+Vue项目-基于Java+MySQL的在线视频教育平台系统(附源码+演示视频+LW)
  • Java IO流-字节流
  • 第十五届蓝桥杯复盘python大学A组——试题B 召唤数学精灵
  • 网络通信——常见结构及强联网游戏和弱联网游戏区别
  • 如何安装PyFluent
  • Qt 2 QMapQHashQVector类实例
  • 使用Git将文件夹上传到Github以及使用Git LFS上传大文件
  • 1.SCI各模块
  • 记录shell编程中$1,$@等符号的含义
  • 单链表的应用
  • 手机副业赚钱秘籍:让你的手机变成赚钱利器