启用中文域名大网站,重庆五洲妇儿医院,游戏编程怎么学,网站后台管理系统制作教程目录 镜像仓库介绍
持久化你的数据库
连接到其他容器
创建自定义网络
部署主节点
部署从节点
验证部署
总结 在现代应用架构中#xff0c;Redis作为一个高性能的内存数据库#xff0c;被广泛应用于缓存、会话存储、实时分析等多个领域。为了提高Redis的可用性和数据的…目录 镜像仓库介绍
持久化你的数据库
连接到其他容器
创建自定义网络
部署主节点
部署从节点
验证部署
总结 在现代应用架构中Redis作为一个高性能的内存数据库被广泛应用于缓存、会话存储、实时分析等多个领域。为了提高Redis的可用性和数据的可靠性通常会采用主从复制的方式构建Redis集群。下面将介绍如何使用Bitnami提供的Docker镜像快速部署一个Redis主从同步集群并实现读写分离。 镜像仓库介绍
Bitnami提供的Redis Docker镜像预配置了多种环境变量使得部署和配置变得非常简单。此外该镜像还包含了必要的安全补丁和性能优化适合生产环境使用。 Bitnami Redis镜像的Docker Hub地址为 https://hub.docker.com/r/bitnami/redis 你可以直接从这个地址拉取镜像或者在Docker命令中指定该地址来部署Redis实例。 持久化你的数据库
如果删除容器所有数据都将丢失下次运行镜像时数据库将重新初始化。为了避免数据丢失您应该安装一个在删除容器后仍能保留的卷。
为了持久化您应该在路径上挂载一个目录/bitnami。如果挂载的目录为空它将在第一次运行时被初始化。 docker run \-e ALLOW_EMPTY_PASSWORDyes \-v /path/to/redis-persistence:/bitnami/redis/data \bitnami/redis:latest 环境变量 ALLOW_EMPTY_PASSWORD允许无密码访问
REDIS_REPLICATION_MODERedis 复制模式值master、slavenil
REDIS_PASSWORDRedis 的密码nil
REDIS_MASTER_HOSTRedis 主主机由从属服务器使用
REDIS_MASTER_PORT_NUMBERRedis 主服务器主机端口由从服务器使用6379
REDIS_MASTER_PASSWORDRedis 主节点密码nil
REDIS_DEFAULT_PORT_NUMBER6379Redis 端口号构建时6379
连接到其他容器
使用Docker 容器网络您的应用程序容器可以轻松访问在容器内运行的 Redis(R) 服务器。
连接到同一网络的容器可以使用容器名称作为主机名相互通信。
在这个例子中我们将创建一个 Redis(R) 客户端实例它将连接到与客户端在同一个 docker 网络上运行的服务器实例。
步骤 1创建网络 docker network create app-tier --driver bridge 第 2 步启动 Redis(R) 服务器实例
使用命令--network app-tier的参数docker run将 Redis(R) 容器附加到app-tier网络。 docker run -d --name redis-server \-e ALLOW_EMPTY_PASSWORDyes \--network app-tier \bitnami/redis:latest 步骤 3启动您的 Redis(R) 客户端实例
最后我们创建一个新的容器实例来启动Redis(R)客户端并连接到上一步创建的服务器 创建一个临时的 Redis 客户端容器。 将容器连接到名为 app-tier 的 Docker 网络。 在容器启动后运行 redis-cli 并连接到网络中名为 redis-server 的 Redis 服务器。 容器运行结束后自动清理容器实例。 docker run -it --rm \--network app-tier \bitnami/redis:latest redis-cli -h redis-server 创建自定义网络
为了模拟生产环境我们首先创建一个自定义的Docker网络
docker network create mynet
部署主节点
接下来我们部署Redis的主节点。这里我们使用了Bitnami提供的Redis镜像它预设了很多环境变量使得配置变得相对简单。
docker run -d -p 6379:6379 \-v /opt/redis/redis01:/bitnami/redis/data \-e REDIS_REPLICATION_MODEmaster \-e REDIS_PASSWORD123456\--network mynet --name redis01 \bitnami/redis
由于映射的文件可能没有操作权限我们需要给目录授予权限 Cant open or create append-only dir appendonlydir: Permission denied # 查看日志docker logs 21d23a19897c
# 进入目录
cd /opt/redis/
# 列出当前目录的文件和目录的详细信息
ll
# drwxr-xr-x 2 root root 4096 Jan 21 21:59 redis01 drwxr-xr-x d表示这是一个目录Directory。 rwx表示所有者Owner的权限可以读r、写w和执行x。 r-x表示所属用户组Group的权限可以读r和执行x但不能写w。 r-x表示其他用户Others的权限同样可以读r和执行x但不能写w 2 root root 2 表示该目录的链接数这里不重要。 第一个root表示目录的所有者是root用户。 第二个root表示目录所属的用户组是root组。 4096 表示该目录的大小单位是字节。 Jan 21 21:59 表示目录的最后修改时间这里是1月21日21点59分。 redis01 这是目录的名字叫redis01。 总结这是一个名为redis01的目录属于root用户和root组权限设置为所有者可以读写执行其他用户只能读和执行。 chmod -R 777 /opt/redis修改后所有人可读可写可执行 drwxrwxrwx 2 root root 4096 Jan 21 21:59 redis01 然后重启实例
docker restart redis01
部署从节点 同样我们需要给从节点映射的目录赋予操作权限
# 创建文件
mkdir -p /opt/redis/redis02
# 写入权限 所有人 可读 可写 可执行
chmod -R 777 /opt/redis在主节点运行之后我们可以部署从节点。从节点会同步主节点的数据并提供读操作。
docker run -d -p 6380:6379 \-v /opt/redis/redis02:/bitnami/redis/data \-e REDIS_REPLICATION_MODEslave \-e REDIS_MASTER_HOSTredis01 \-e REDIS_MASTER_PORT_NUMBER6379 \-e REDIS_MASTER_PASSWORD123456\-e REDIS_PASSWORD123456\--network mynet --name redis02 \bitnami/redis 验证部署
连接成功后我们可以往主节点添加一个key然后刷新从节点检查是否已自动同步主节点的数据。
连接两个Redis服务 往主节点添加一个key SET runoobkey redis 刷新从节点已自动同步主节点数据 总结
通过以上步骤我们成功使用Docker部署了一个Redis主从同步集群并实现了读写分离。这种部署方式不仅简化了配置过程还提高了数据的可靠性和系统的可用性。在未来的生产环境中我们可以根据需要添加更多的从节点以进一步提高系统的扩展性和稳定性。