做网站的计划,android开发培训,购物咨询主题WordPress,网站数据库有什么用使用两台云服务器#xff0c;在 Docker 下部署。
Redis版本为#xff1a;7.2.4
下载并配置redis 配置文件
下载 wget -c http://download.redis.io/redis-stable/redis.conf配置
master节点配置
bind 0.0.0.0 # 使得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主从模式部署