docker下创建redis集群方案

首先要解决的问题是redis镜像的问题,如果因网络问题无法docker pull,就配置国内加速

创建文件

bash 复制代码
touch /etc/docker/daemon.json

写入内容

bash 复制代码
{
    "registry-mirrors": [
        "https://docker.1panel.live",
        "https://docker-0.unsee.tech",
        "https://docker.1panel.live",
        "https://registry.dockermirror.com",
        "https://docker.imgdb.de",
        "https://docker.m.daocloud.io",
        "https://hub.firefly.store",
        "https://hub.littlediary.cn",
        "https://hub.rat.dev",
        "https://dhub.kubesre.xyz",
        "https://cjie.eu.org",
        "https://docker.kejilion.pro",
        "https://docker.1panelproxy.com",
        "https://docker.hlmirror.com",
        "https://hub.fast360.xyz",
        "https://ghcr.io"
    ]
}

其次就开始准备着手部署redis集群

1、创建redis.conf,每个节点一个文件【redis1.conf,redis2.conf,redis3.conf,redis4.conf,redis5.conf,】,端口不能相同,conf文件内容如下,下方的注释要移除,不要在文件中体现,会报错

bash 复制代码
port 6379 
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes
appendfsync everysec
requirepass 123456 #redis密码
masterauth 123456 #redis集群节点认证密码
maxmemory 1gb
maxmemory-policy allkeys-lru

2、创建好配置文件后,创建docker-compose.yml,内容如下,有需要调整的自行调整即可

bash 复制代码
version: "3.8"
services:
  redis-master1:
    image: redis:6-alpine
    container_name: redis-master1
    environment:
      - "TZ=Asia/Shanghai"
    ports:
      - "6379:6379"
      - "16379:16379"
    volumes:
      - ./redis.conf:/usr/local/etc/redis/redis.conf
      - ./redis-master1/data:/data
    command:
      - "redis-server"
      - "/usr/local/etc/redis/redis.conf"

  redis-master2:
    image: redis:6-alpine
    container_name: redis-master2
    environment:
      - "TZ=Asia/Shanghai"
    ports:
      - "6380:6380"
      - "16380:16380"
    volumes:
      - ./redis1.conf:/usr/local/etc/redis/redis.conf
      - ./redis-master2/data:/data
    command:
      - "redis-server"
      - "/usr/local/etc/redis/redis.conf"

  redis-master3:
    image: redis:6-alpine
    container_name: redis-master3
    environment:
      - "TZ=Asia/Shanghai"
    ports:
      - "6381:6381"
      - "16381:16381"
    volumes:
      - ./redis2.conf:/usr/local/etc/redis/redis.conf
      - ./redis-master3/data:/data
    command:
      - "redis-server"
      - "/usr/local/etc/redis/redis.conf"

  redis-slave1:
    image: redis:6-alpine
    container_name: redis-slave1
    environment:
      - "TZ=Asia/Shanghai"
    ports:
      - "6382:6382"
      - "16382:16382"
    volumes:
      - ./redis3.conf:/usr/local/etc/redis/redis.conf
      - ./redis-slave1/data:/data
    command:
      - "redis-server"
      - "/usr/local/etc/redis/redis.conf"

  redis-slave2:
    image: redis:6-alpine
    container_name: redis-slave2
    environment:
      - "TZ=Asia/Shanghai"
    ports:
      - "6383:6383"
      - "16383:16383"
    volumes:
      - ./redis4.conf:/usr/local/etc/redis/redis.conf
      - ./redis-slave2/data:/data
    command:
      - "redis-server"
      - "/usr/local/etc/redis/redis.conf"

  redis-slave3:
    image: redis:6-alpine
    container_name: redis-slave3
    environment:
      - "TZ=Asia/Shanghai"
    ports:
      - "6384:6384"
      - "16384:16384"
    volumes:
      - ./redis5.conf:/usr/local/etc/redis/redis.conf
      - ./redis-slave3/data:/data
    command:
      - "redis-server"
      - "/usr/local/etc/redis/redis.conf"

3、在docker-compose.yml文件所在文件夹下,同时redis.conf也要在该文件夹下,执行命令

bash 复制代码
docker-compose up -d

4、执行成功后,进入任意一个容器

bash 复制代码
docker exec -it redis-master1 sh

5、执行如下命令,创建集群。此处注意,各个节点的ip一定要保证能够在容器内与之通信,否则无法建立集群,如果有需要对网络调整的,在docker-compose.yml进行配置

bash 复制代码
redis-cli --cluster create 192.168.1.202:6379 192.168.1.202:6380 192.168.1.202:6381 192.168.1.202:6382 192.1681.202:6383 192.168.1.202:6384 --cluster-replicas 1 -a '123456'

6、集群创建成功,开始验证,在集群中的节点中输入命令

bash 复制代码
redis-cli -h 127.0.0.1 -p 6379

7、输入密码

bash 复制代码
AUTH default 123456

8、查看集群信息

bash 复制代码
cluster info

9、输出ok即可

相关推荐
雪可问春风1 天前
docker环境部署
运维·docker·容器
双份浓缩馥芮白1 天前
【Docker】Linux 迁移 docker 目录(软链接)
linux·docker
M--Y1 天前
Redis常用数据类型
数据结构·数据库·redis
kobe_OKOK_1 天前
S7 adapter Docker run
运维·docker·容器
mameng19981 天前
Redis遇到热点key如何解决
数据库·redis·缓存
一个欠登儿程序员1 天前
在国产服务器上通过 Docker 部署 Windows 虚拟机
服务器·windows·docker
小红的布丁1 天前
Redis 持久化详解:AOF、RDB 与混合持久化如何平衡性能和可靠性
数据库·redis·缓存
Hadoop_Liang1 天前
构建Spring Boot项目Docker镜像
spring boot·后端·docker
一个有温度的技术博主1 天前
Redis Cluster 核心原理:哈希槽与数据路由实战
redis·算法·缓存·哈希算法
周末也要写八哥1 天前
追求性能极致为何不用Redis?
数据库·redis·缓存