docker部署redis集群

本文详细介绍如何在三台虚拟机上部署六节点Redis集群,包括集群规划、镜像拉取、目录与配置文件创建、集群初始化等关键步骤。

1.集群规划(使用3台虚拟机)

master1192.168.88.3:7001
master2192.168.88.4:7002
master3192.168.88.5:7003
slave1192.168.88.4:7004
slave2192.168.88.5:7005
slave3192.168.88.3:7006

2.拉取镜像

docker pull redis:5.0

3.在192.168.88.3上创建目录

1)创建redis集群目录

mkdir /home/wangyan/redis-cluster

2)进入目录

cd /home/wangyan/redis-cluster/

3)创建目录 7001 7002 7003 7004 7005 7006

mkdir 7001 && mkdir 7002 && mkdir 7003 && mkdir 7004 && mkdir 7005 && mkdir 7006

4)在每个目录下创建目录config和data

cd 7001;

mkdir conf && mkdir data;

5)进入每个conf目录,创建配置文件redis.conf

7001:

#所有ipv4地址都可以访问
bind 0.0.0.0
#关闭保护模式
protected-mode no
#开启集群
cluster-enabled yes
#集群间访问秘密
masterauth 123456
#redis访问密码
requirepass 123456
#端口
port 7001
#pid文件生成位置
pidfile /var/run/redis_7001.pid
#集群节点信息文件
cluster-config-file nodes_7001.conf
#节点超时
cluster-node-timeout 5000
#AOF持久化
appendonly yes
#刷盘策略 always:每次 everysec:每秒 no:系统决定
appendfsync no
#集群节点ip
cluster-announce-ip 192.168.88.3
#集群节点端口
cluster-announce-port 7001
#集群节点总线端口
cluster-announce-bus-port 17001

7002:

#所有ipv4地址都可以访问
bind 0.0.0.0
#关闭保护模式
protected-mode no
#开启集群
cluster-enabled yes
#集群间访问秘密
masterauth 123456
#redis访问密码
requirepass 123456
#端口
port 7002
#pid文件生成位置
pidfile /var/run/redis_7002.pid
#集群节点信息文件
cluster-config-file nodes_7002.conf
#节点超时
cluster-node-timeout 5000
#AOF持久化
appendonly yes
#刷盘策略 always:每次 everysec:每秒 no:系统决定
appendfsync no
#集群节点ip
cluster-announce-ip 192.168.88.4
#集群节点端口
cluster-announce-port 7002
#集群节点总线端口
cluster-announce-bus-port 17002

7003:

#所有ipv4地址都可以访问
bind 0.0.0.0
#关闭保护模式
protected-mode no
#开启集群
cluster-enabled yes
#集群间访问秘密
masterauth 123456
#redis访问密码
requirepass 123456
#端口
port 7003
#pid文件生成位置
pidfile /var/run/redis_7003.pid
#集群节点信息文件
cluster-config-file nodes_7003.conf
#节点超时
cluster-node-timeout 5000
#AOF持久化
appendonly yes
#刷盘策略 always:每次 everysec:每秒 no:系统决定
appendfsync no
#集群节点ip
cluster-announce-ip 192.168.88.5
#集群节点端口
cluster-announce-port 7003
#集群节点总线端口
cluster-announce-bus-port 17003

7004:

#所有ipv4地址都可以访问
bind 0.0.0.0
#关闭保护模式
protected-mode no
#开启集群
cluster-enabled yes
#集群间访问秘密
masterauth 123456
#redis访问密码
requirepass 123456
#端口
port 7004
#pid文件生成位置
pidfile /var/run/redis_7004.pid
#集群节点信息文件
cluster-config-file nodes_7004.conf
#节点超时
cluster-node-timeout 5000
#AOF持久化
appendonly yes
#刷盘策略 always:每次 everysec:每秒 no:系统决定
appendfsync no
#集群节点ip
cluster-announce-ip 192.168.88.4
#集群节点端口
cluster-announce-port 7004
#集群节点总线端口
cluster-announce-bus-port 17004

7005:

#所有ipv4地址都可以访问
bind 0.0.0.0
#关闭保护模式
protected-mode no
#开启集群
cluster-enabled yes
#集群间访问秘密
masterauth 123456
#redis访问密码
requirepass 123456
#端口
port 7005
#pid文件生成位置
pidfile /var/run/redis_7005.pid
#集群节点信息文件
cluster-config-file nodes_7005.conf
#节点超时
cluster-node-timeout 5000
#AOF持久化
appendonly yes
#刷盘策略 always:每次 everysec:每秒 no:系统决定
appendfsync no
#集群节点ip
cluster-announce-ip 192.168.88.5
#集群节点端口
cluster-announce-port 7005
#集群节点总线端口
cluster-announce-bus-port 17005

7006:

#所有ipv4地址都可以访问
bind 0.0.0.0
#关闭保护模式
protected-mode no
#开启集群
cluster-enabled yes
#集群间访问秘密
masterauth 123456
#redis访问密码
requirepass 123456
#端口
port 7006
#pid文件生成位置
pidfile /var/run/redis_7006.pid
#集群节点信息文件
cluster-config-file nodes_7006.conf
#节点超时
cluster-node-timeout 5000
#AOF持久化
appendonly yes
#刷盘策略 always:每次 everysec:每秒 no:系统决定
appendfsync no
#集群节点ip
cluster-announce-ip 192.168.88.3
#集群节点端口
cluster-announce-port 7006
#集群节点总线端口
cluster-announce-bus-port 17006

4.复制192.168.88.3上的目录到其他两台虚拟机

scp -r /home/wangyan/redis-cluster root@192.168.88.4:/home/wangyan/redis-cluster;

scp -r /home/wangyan/redis-cluster root@192.168.88.5:/home/wangyan/redis-cluster;

5.docker运行redis

192.168.88.3上运行:

docker run -itd --net=host -v /home/wangyan/redis-cluster/7001/conf/redis.conf:/etc/redis/redis.conf -v /home/wangyan/redis-cluster/7001/data:/data --restart=always --name=redis-7001 redis:5.0 redis-server /etc/redis/redis.conf
docker run -itd --net=host -v /home/wangyan/redis-cluster/7006/conf/redis.conf:/etc/redis/redis.conf -v /home/wangyan/redis-cluster/7006/data:/data --restart=always --name=redis-7006 redis:5.0 redis-server /etc/redis/redis.conf

 

192.168.88.4上运行:

docker run -itd --net=host -v /home/wangyan/redis-cluster/7002/conf/redis.conf:/etc/redis/redis.conf -v /home/wangyan/redis-cluster/7002/data:/data --restart=always --name=redis-7002 redis:5.0 redis-server /etc/redis/redis.conf
docker run -itd --net=host -v /home/wangyan/redis-cluster/7004/conf/redis.conf:/etc/redis/redis.conf -v /home/wangyan/redis-cluster/7004/data:/data --restart=always --name=redis-7004 redis:5.0 redis-server /etc/redis/redis.conf

 

192.168.88.5上运行:

docker run -itd --net=host -v /home/wangyan/redis-cluster/7003/conf/redis.conf:/etc/redis/redis.conf -v /home/wangyan/redis-cluster/7003/data:/data --restart=always --name=redis-7003 redis:5.0 redis-server /etc/redis/redis.conf
docker run -itd --net=host -v /home/wangyan/redis-cluster/7005/conf/redis.conf:/etc/redis/redis.conf -v /home/wangyan/redis-cluster/7005/data:/data --restart=always --name=redis-7005 redis:5.0 redis-server /etc/redis/redis.conf

6.初始化redis集群

进入任意一个容器

docker exec -it redis-7001 /bin/bash

执行创建集群命令

redis-cli -a 123456 --cluster create 192.168.88.3:7001 192.168.88.4:7002 192.168.88.5:7003 192.168.88.4:7004 192.168.88.5:7005 192.168.88.3:7006 --cluster-replicas 1

 

至此,redis集群搭建完成!

使用 Docker 部署 Redis 集群,可按以下详细步骤操作: ### 1. 配置 Redis 容器和网络 - **创建自定义网络**:使用 `docker network create` 命令创建一个自定义的网络,用于 Redis 集群节点之间的通信。示例命令如下: ```bash docker network create redis-net ``` - **生成配置信息**:在当前目录下生成 `conf` 和 `data` 目录,并为每个节点生成配置文件。以下是一个示例脚本,创建 7001 - 7003 端口的节点配置: ```bash for port in `seq 7001 7003`; do mkdir -p ./${port}/conf \ && PORT=${port} envsubst < ./redis-cluster.tmpl > ./${port}/conf/redis.conf \ && mkdir -p ./${port}/data; done ``` 若不想设置密码,可把 `masterauth` 和 `requirepass` 注释掉 [^4]。 ### 2. 启动 Redis 容器 - **使用 Dockerfile 构建并启动(可选)**:在 `redis` 目录下创建 `Dockerfile` 进行编辑,示例如下: ```dockerfile # 第一阶段:构建阶段 FROM ubuntu:22.04 AS buildstage # 更新包列表并安装必要的构建工具和依赖 RUN apt-get update && apt-get install -y \ build-essential \ wget \ gcc \ g++ \ make \ && rm -rf /var/lib/apt/lists/* # 下载 Redis 源码和配置文件 ADD redis-7.0.15.tar.gz / ADD redis.conf /redis/ # 切换到 Redis 源码目录并编译 WORKDIR /redis-7.0.15 RUN make # 将 Redis 可执行文件移动到指定目录 RUN mv /redis-7.0.15/src/redis-server /redis/ && mv /redis-7.0.15/src/redis-cli /redis/ ENTRYPOINT ["/redis/redis-server", "/redis/redis.conf"] # 第二阶段:运行阶段 FROM ubuntu:22.04 RUN mkdir -p /data/redis && mkdir -p /redis COPY --from=buildstage /redis /redis EXPOSE 6379 ENTRYPOINT ["/redis/redis-server", "/redis/redis.conf"] ``` 构建并启动容器。 - **直接使用 Docker 命令启动**:使用 `docker run` 命令启动 Redis 容器,挂载配置文件和数据卷。示例命令如下: ```bash for port in `seq 7001 7003`; do docker run -d -ti -p ${port}:${port} -p 1${port}:1${port} \ -v /opt/redis/${port}/conf/redis.conf:/usr/local/etc/redis/redis.conf \ -v /opt/redis/${port}/data:/data \ --restart always --name redis-${port} --net redis-net \ --sysctl net.core.somaxconn=1024 redis:6.0.5-alpine redis-server /usr/local/etc/redis/redis.conf; done ``` 此命令会创建 3 个 Redis 容器,分别监听 7001 - 7003 端口 [^2][^4]。 ### 3. 设置 Redis 集群 - **创建集群**:使用 `redis-cli` 工具创建 Redis 集群。在创建过程中可能会遇到异常,需要进行相应处理。 - **集群创建异常处理**:若创建过程中出现问题,需根据具体错误信息进行排查和修复,如检查网络连接、配置文件是否正确等 [^1]。 ### 4. 验证和测试 - **数据测试**:通过 `redis-cli` 连接到集群中的一个节点,进行数据的读写操作,验证集群是否正常工作。 - **集群上下线测试**:模拟节点的上线和下线操作,检查集群的容错能力和数据迁移情况 [^1]。 ### 5. 部署总结 完成上述步骤后,对整个部署过程进行总结,检查是否达到预期效果,如有需要可进行调整和优化 [^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值