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

相关推荐
岁月变迁呀1 小时前
Redis梳理
数据库·redis·缓存
Code apprenticeship3 小时前
怎么利用Redis实现延时队列?
数据库·redis·缓存
百度智能云技术站3 小时前
广告投放系统成本降低 70%+,基于 Redis 容量型数据库 PegaDB 的方案设计和业务实践
数据库·redis·oracle
装不满的克莱因瓶3 小时前
【Redis经典面试题六】Redis的持久化机制是怎样的?
java·数据库·redis·持久化·aof·rdb
黄名富7 小时前
Redis 附加功能(二)— 自动过期、流水线与事务及Lua脚本
java·数据库·redis·lua
G_whang7 小时前
centos7下docker 容器实现redis主从同步
redis·docker·容器
.生产的驴8 小时前
SpringBoot 对接第三方登录 手机号登录 手机号验证 微信小程序登录 结合Redis SaToken
java·spring boot·redis·后端·缓存·微信小程序·maven
我叫啥都行11 小时前
计算机基础复习12.22
java·jvm·redis·后端·mysql
阿乾之铭12 小时前
Redis四种模式在Spring Boot框架下的配置
redis
on the way 12314 小时前
Redisson锁简单使用
redis