Redis部署之主从

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

Redis版本为:7.2.4

下载并配置redis 配置文件

下载

arduino 复制代码
 wget -c http://download.redis.io/redis-stable/redis.conf

配置

master节点配置

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

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

slave节点配置

bash 复制代码
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 及之后的版本中将被完全删除。

启动

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

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

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

ruby 复制代码
docker run -d -p 6379:6379 -v /root/docker-data/redis/config/:/usr/local/etc/redis/ -v /root/docker-data/redis/data:/data redis redis-server /usr/local/etc/redis/redis.conf

验证

使用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指令设置为:

bash 复制代码
bashCopy code
bind 127.0.0.1

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

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

注意:

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

参考资料

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

Redis主从模式部署

相关推荐
熊文豪11 小时前
openEuler 云原生实战:部署高性能 Redis 集群与压测分析
数据库·redis·云原生·openeuler
xrkhy15 小时前
canal1.1.8+mysql8.0+jdk17+redis的使用
android·redis·adb
MuYiLuck21 小时前
redis持久化与集群
java·数据库·redis
埃泽漫笔21 小时前
Redis性能优化避坑指南
redis
升鲜宝供应链及收银系统源代码服务21 小时前
升鲜宝生鲜配送供应链管理系统--- 《多语言商品查询优化方案(Redis + 翻译表 + 模糊匹配)》
java·数据库·redis·bootstrap·供应链系统·生鲜配送·生鲜配送源代码
JH307321 小时前
Redis 中被忽视的“键过期策略”与内存回收机制
数据库·redis·缓存
Microsoft Word21 小时前
Redis常见面试题
数据库·redis·缓存
bing.shao1 天前
mongodb与redis在聊天场景中的选择
数据库·redis·mongodb
dudke1 天前
c#实现redis的调用与基础类
数据库·redis·缓存
苦学编程的谢1 天前
Redis_7_hash
数据库·redis·哈希算法