使用docker-compose安装redis集群

浮生半日闲 发布于 2022-11-01 70 次阅读


1、准备工作

1.1 配置文件

官网下载redis.conf配置文件。并将配置文件中的相关配置按照下方进行修改:

# 注释掉bind
# bind 127.0.0.1
port ${PORT}
# 设置集群的密码
requirepass ${password}
# 主节点的密码
masterauth ${password}
protected-mode no
daemonize no
appendonly yes
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 15000
cluster-announce-ip ${IP}
cluster-announce-port ${PORT}
cluster-announce-bus-port 1${PORT}

1.2 编写创建文件脚本

由于集群至少需要6个节点,如果手动进行创建会比较繁琐,因此使用脚本文件直接进行创建(就是将上方的redis.conf中的定义参数进行替换 )。

# 使用本机IP
ip=127.0.0.1
# 定义集群密码
password=123456

for port in `seq 6380 6385`; do \
  mkdir -p ./cluster-node-${port}/conf \
  && PORT=${port} envsubst < ./redis.conf > ./cluster-node-${port}/conf/redis.conf \
  && mkdir -p ./cluster-node-${port}/data \
  && mkdir -p ./cluster-node-${port}/logs; \
done

2、安装容器

2.1 创建文件

将redis.conf和redis-cluster-config.sh文件放到同一个目录下,然后执行脚本文件。

[java@localhost docker]$ bash redis-cluster-config.sh

2.2 创建容器

在目录下新建docker-compose.yml文件,并在文件中添加如下内容:

version: "3.3"

services:
  redis-master-6380:
    container_name: redis-master-6380
    image: redis:6.2.6-alpine
    ports:
      - 6380:6380
      - 16380:16380
    volumes:
      - ./cluster-node-6380/conf/redis.conf:/usr/local/etc/redis/redis.conf
      - ./cluster-node-6380/logs:/usr/local/redis/logs
      - ./cluster-node-6380/data:/data
    environment:
      - TZ=Asia/Shanghai
    command: ["redis-server", "/usr/local/etc/redis/redis.conf"]
    restart: always
  redis-master-6381:
    container_name: redis-master-6381
    image: redis:6.2.6-alpine
    ports:
      - 6381:6381
      - 16381:16381
    volumes:
      - ./cluster-node-6381/conf/redis.conf:/usr/local/etc/redis/redis.conf
      - ./cluster-node-6381/logs:/usr/local/redis/logs
      - ./cluster-node-6381/data:/data
    environment:
      - TZ=Asia/Shanghai      
    command: ["redis-server", "/usr/local/etc/redis/redis.conf"]
    restart: always
  redis-master-6382:
    container_name: redis-master-6382
    image: redis:6.2.6-alpine
    ports:
      - 6382:6382
      - 16382:16382
    volumes:
      - ./cluster-node-6382/conf/redis.conf:/usr/local/etc/redis/redis.conf
      - ./cluster-node-6382/logs:/usr/local/redis/logs
      - ./cluster-node-6382/data:/data
    environment:
      - TZ=Asia/Shanghai
    command: ["redis-server", "/usr/local/etc/redis/redis.conf"]
    restart: always
  redis-slave-6383:
    container_name: redis-slave-6383
    image: redis:6.2.6-alpine
    ports:
      - 6383:6383
      - 16383:16383
    volumes:
      - ./cluster-node-6383/conf/redis.conf:/usr/local/etc/redis/redis.conf
      - ./cluster-node-6383/logs:/usr/local/redis/logs
      - ./cluster-node-6383/data:/data
    environment:
      - TZ=Asia/Shanghai
    command: ["redis-server", "/usr/local/etc/redis/redis.conf"]
    restart: always
  redis-slave-6384:
    container_name: redis-slave-6384
    image: redis:6.2.6-alpine
    ports:
      - 6384:6384
      - 16384:16384
    volumes:
      - ./cluster-node-6384/conf/redis.conf:/usr/local/etc/redis/redis.conf
      - ./cluster-node-6384/logs:/usr/local/redis/logs
      - ./cluster-node-6384/data:/data
    environment:
      - TZ=Asia/Shanghai
    command: ["redis-server", "/usr/local/etc/redis/redis.conf"]
    restart: always
  redis-slave-6385:
    container_name: redis-slave-6385
    image: redis:6.2.6-alpine
    ports:
      - 6385:6385
      - 16385:16385
    volumes:
      - ./cluster-node-6385/conf/redis.conf:/usr/local/etc/redis/redis.conf
      - ./cluster-node-6385/logs:/usr/local/redis/logs
      - ./cluster-node-6385/data:/data
    environment:
      - TZ=Asia/Shanghai
    command: ["redis-server", "/usr/local/etc/redis/redis.conf"]
    restart: always

启动docker容器的创建:

[java@localhost docker]$ sudo docker-compose up -d

等待容器创建完成使用docker ps进行查看。

3、创建集群

通过上面步骤创建完容器后,需要手动创建集群环境。

# 注意:此处的ip(127.0.0.1)和密码(123456)需要和上面redis-cluster-config.sh中的配置一致
[java@localhost docker]$ sudo docker exec -it redis-master-6380 redis-cli --cluster create 127.0.0.1:6380 127.0.0.1:6381 127.0.0.1:6382 127.0.0.1:6383 127.0.0.1:6384 127.0.0.1:6385 -a 123456 --cluster-replicas 1

等待集群创建完成。