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主从模式部署

相关推荐
陌上丨4 小时前
Redis的Key和Value的设计原则有哪些?
数据库·redis·缓存
曾经的三心草7 小时前
redis-9-哨兵
数据库·redis·bootstrap
张小凡vip8 小时前
Kubernetes--k8s中部署redis数据库服务
redis·kubernetes
惊讶的猫9 小时前
Redis持久化介绍
数据库·redis·缓存
啦啦啦_999910 小时前
Redis-5-doFormatAsync()方法
数据库·redis·c#
生产队队长10 小时前
Redis:Windows环境安装Redis,并将 Redis 进程注册为服务
数据库·redis·缓存
xu_yule11 小时前
Redis存储(15)Redis的应用_分布式锁_Lua脚本/Redlock算法
数据库·redis·分布式
清风拂山岗 明月照大江14 小时前
Redis笔记汇总
java·redis·缓存
消失的旧时光-194315 小时前
第十四课:Redis 在后端到底扮演什么角色?——缓存模型全景图
java·redis·缓存
消失的旧时光-194316 小时前
第十四课 · 实战篇:Redis 缓存系统落地指南(Spring Boot 从 0 到可用)
spring boot·redis·缓存