avatar

十六小站

欢迎来到我的个人主页! 期待与您分享我的经验与故事,一起探索技术的无穷可能!

  • 首页
  • NAS专题
  • 关于
Home Docker搭建Redis集群
文章

Docker搭建Redis集群

Posted 2024-07-3 Updated 2024-10- 19
By 十六
11~14 min read

准备服务器

内网IP:10.0.12.14 开放端口:7001-7006, 17001-17006

准备配置文件

编写模板文件

# 端口号
port ${PORT}
# 绑定ip
bind 0.0.0.0
# redis-cli访问密码
requirepass 123456
# 访问主节点密码
masterauth 123456
# 保护模式,默认是yes,开启保护模式
protected-mode no
# 是否守护模式,docker方式不需要
daemonize no
# 是否开启AOF持久化模式
appendonly yes
# 是否开启集群模式
cluster-enabled yes
# 集群节点信息文件
# cluster-config-file nodes.conf
# 集群节点连接超时时间
cluster-node-timeout 15000
# 集群节点宿主机IP
cluster-announce-ip 10.0.12.14
# 集群节点映射端口
cluster-announce-port ${PORT}
# 集群节点总线端口
cluster-announce-bus-port 1${PORT}

生成配置文件

创建并执行下面shell脚本会自动生成配置文件。

for port in `seq 7001 7006`
do
  mkdir -p ${port}/{conf,data} \
  && PORT=${port} envsubst < redis-cluster.tmpl > ${port}/conf/redis.conf
done

执行成功后会在目录下生成7001-7006的文件夹 file 每个文件夹中的内容如下(data目录下暂时未空): file

编写docker-compose.yml

执行命令:vim docker-compose.yml copy下面内容:

version: "3.3"

# 定义服务
services:
  redis-7001: # 服务名称
    image: redis # 容器镜像
    container_name: redis-7001 # 容器名称
    restart: always # 容器总是重启
    ports: # 映射端口
      - 7001:7001
      - 17001:17001
    volumes: # 目录挂载
      - /app/redis-cluster/7001/conf/redis.conf:/usr/local/redis/redis.conf
      - /app/redis-cluster/7001/data:/data
    command: redis-server /usr/local/redis/redis.conf # 服务启动命令
    networks:  # 指定使用网络插件名称
      - redis-net

  redis-7002:
    image: redis
    container_name: redis-7002
    ports:
      - 7002:7002
      - 17002:17002
    volumes:
      - /app/redis-cluster/7002/conf/redis.conf:/usr/local/redis/redis.conf
      - /app/redis-cluster/7002/data:/data
    command: redis-server /usr/local/redis/redis.conf
    networks:  # 指定使用网络插件名称
      - redis-net

  redis-7003:
    image: redis
    container_name: redis-7003
    ports:
      - 7003:7003
      - 17003:17003
    volumes:
      - /app/redis-cluster/7003/conf/redis.conf:/usr/local/redis/redis.conf
      - /app/redis-cluster/7003/data:/data
    command: redis-server /usr/local/redis/redis.conf
    networks:  # 指定使用网络插件名称
      - redis-net

  redis-7004:
    image: redis
    container_name: redis-7004
    ports:
      - 7004:7004
      - 17004:17004
    volumes:
      - /app/redis-cluster/7004/conf/redis.conf:/usr/local/redis/redis.conf
      - /app/redis-cluster/7004/data:/data
    command: redis-server /usr/local/redis/redis.conf
    networks:  # 指定使用网络插件名称
      - redis-net

  redis-7005:
    image: redis
    container_name: redis-7005
    ports:
      - 7005:7005
      - 17005:17005
    volumes:
      - /app/redis-cluster/7005/conf/redis.conf:/usr/local/redis/redis.conf
      - /app/redis-cluster/7005/data:/data
    command: redis-server /usr/local/redis/redis.conf
    networks:  # 指定使用网络插件名称
      - redis-net

  redis-7006:
    image: redis
    container_name: redis-7006
    ports:
      - 7006:7006
      - 17006:17006
    volumes:
      - /app/redis-cluster/7006/conf/redis.conf:/usr/local/redis/redis.conf
      - /app/redis-cluster/7006/data:/data
    command: redis-server /usr/local/redis/redis.conf
    networks:  # 指定使用网络插件名称
      - redis-net
networks:
  redis-net:

指定打包

docker-compose up -d

进入容器

# 进入其中一个redis容器内
docker exec -it redis-7001 bash

# 用redis-cli创建整个redis集群
# -a 表示连接的密码
# --cluster create 表示需要集群的redis主机和端口
# --cluster-replicas 1 其中的1表示一主一从
redis-cli -a 123456 --cluster create 10.0.12.14:7001 10.0.12.14:7002 10.0.12.14:7003 10.0.12.14:7004 10.0.12.14:7005 10.0.12.14:7006 --cluster-replicas 1

验证

连接redis

redis-cli -p 7001 -a 123456 -c

输入命令

cluster info

出现cluster_state:ok表示集群创建成功。 file

运维部署
License:  CC BY 4.0
Share

Further Reading

Jul 3, 2024

Docker搭建Redis集群

准备服务器 内网IP:10.0.12.14 开放端口:7001-7006, 17001-17006 准备配置文件 编写模板文件 # 端口号 port ${PORT} # 绑定ip bind 0.0.0.0 # redis-cli访问密码 requirepass 123456 # 访问主节点密码 ma

OLDER

ACME证书自动续期

NEWER

SpEL应用

Recently Updated

  • Onlyoffice编译
  • K6+Playwright实现并发测试
  • 简单规则引擎
  • 在WEB中子线程可以访问Request上下文
  • onlyoffice配置

Trending Tags

Java Docker 前端 中间件 数据库 群晖 unraid

Contents

©2025 十六小站. 陕ICP备2023009742号-2