centos7系统使用docker容器搭建redis cluster集群

一、下载redis镜像

二、手动创建容器并搭建集群(使用宿主机ip)

1、循环创建节点文件夹和配置文件

for i in $(seq 0 5); do \
mkdir -p node${i}/conf; \
mkdir -p node${i}/data; \
done

2、配置文件内容

vi node1/conf/redis.conf
daemonize no
protected-mode no
port 6380
dbfilename dump6380.rdb
appendonly yes
appendfilename appendonly6380.aof

cluster-enabled yes
cluster-config-file redis-node0.conf
cluster-node-timeout 500
cluster-announce-ip 192.168.100.20
cluster-announce-port 6380
cluster-announce-bus-port 16380

3、复制配置文件,修改端口,port、cluster-announce-port、cluster-announce-bus-port都修改

for i in $(seq 1 5); do \
cp node0/conf/redis.conf node${i}/conf/;
done

4、创建容器

for i in $(seq 0 5); do \
docker run -it -d \
--name redis-node${i} \
-p $((6380+i)):$((6380+i)) -p $((16380+i)):$((16380+i)) \
-v /home/redis/node${i}/conf/redis.conf:/usr/local/etc/redis/redis.conf \
-v /home/redis/node${i}/data:/data \
redis redis-server /usr/local/etc/redis/redis.conf; \
done

5、进入容器

docker exec -it redis-node0 bash

6、构建cluster集群

redis-cli --cluster create 192.168.100.20:6380 192.168.100.20:6381 192.168.100.20:6382 192.168.100.20:6383 192.168.100.20:6384 192.168.100.20:6385 --cluster-replicas 1

三、docker-compose创建容器并搭建集群

1、创建.sh文件创建目录和文件

vi gen-redis-cluster.sh
for i in $(seq 1 6); \
do \
  mkdir -p node$((6400+i))/conf/
  mkdir -p node$((6400+i))/data/
  touch node$((6400+i))/conf/redis.conf
  cat > node$((6400+i))/conf/redis.conf << EOF
port 6379
bind 0.0.0.0
protected-mode no
daemonize no
dbfilename dump$((6400+i)).rdb
appendonly yes
appendfilename appendonly$((6400+i)).aof

cluster-enabled yes
cluster-config-file node$((6400+i)).conf
cluster-node-timeout 500
cluster-announce-ip 192.20.2.${i}
cluster-announce-port 6379
cluster-announce-bus-port 16379
EOF
done

2、创建docker-compose.yml文件

version: '3.8'
services:
  redis1:
    image: 'redis'
    container_name: redis-node6401
    volumes:
      - ./node6401/conf/redis.conf:/usr/local/etc/redis/redis.conf
      - ./node6401/data:/data
    ports:
      - 6401:6379
      - 16401:16379
    command: redis-server /usr/local/etc/redis/redis.conf
    networks:
      redis-cluster:
        ipv4_address: 192.20.2.1
  redis2:
    image: 'redis'
    container_name: redis-node6402
    volumes:
      - ./node6402/conf/redis.conf:/usr/local/etc/redis/redis.conf
      - ./node6402/data:/data
    ports:
      - 6402:6379
      - 16402:16379
    command: redis-server /usr/local/etc/redis/redis.conf
    networks:
      redis-cluster:
        ipv4_address: 192.20.2.2
  redis3:
    image: 'redis'
    container_name: redis-node6403
    volumes:
      - ./node6403/conf/redis.conf:/usr/local/etc/redis/redis.conf
      - ./node6403/data:/data
    ports:
      - 6403:6379
      - 16403:16379
    command: redis-server /usr/local/etc/redis/redis.conf
    networks:
      redis-cluster:
        ipv4_address: 192.20.2.3
  redis4:
    image: 'redis'
    container_name: redis-node6404
    volumes:
      - ./node6404/conf/redis.conf:/usr/local/etc/redis/redis.conf
      - ./node6404/data:/data
    ports:
      - 6404:6379
      - 16404:16379
    command: redis-server /usr/local/etc/redis/redis.conf
    networks:
      redis-cluster:
        ipv4_address: 192.20.2.4
  redis5:
    image: 'redis'
    container_name: redis-node6405
    volumes:
      - ./node6405/conf/redis.conf:/usr/local/etc/redis/redis.conf
      - ./node6405/data:/data
    ports:
      - 6405:6379
      - 16405:16379
    command: redis-server /usr/local/etc/redis/redis.conf
    networks:
      redis-cluster:
        ipv4_address: 192.20.2.5
  redis6:
    image: 'redis'
    container_name: redis-node6406
    volumes:
      - ./node6406/conf/redis.conf:/usr/local/etc/redis/redis.conf
      - ./node6406/data:/data
    ports:
      - 6406:6379
      - 16406:16379
    command: redis-server /usr/local/etc/redis/redis.conf
    networks:
      redis-cluster:
        ipv4_address: 192.20.2.6
networks:
  redis-cluster:
    external: true

3、创建自定义docker网络

docker network create -d bridge --subnet 192.20.2.0/24 --gateway 192.20.2.254 redis-cluster

4、使用docker-compose创建容器

docker-compose up -d

5、进入容器

docker exec -it redis-node6401 bash

6、构建cluster集群

redis-cli --cluster create 192.20.2.1:6379 192.20.2.2:6379 192.20.2.3:6379 192.20.2.4:6379 192.20.2.5:6379 192.20.2.6:6379 --cluster-replicas 1

注:构建集群很可能会通信失败,多尝试

posted @ 2025-04-23 01:13  此时不卷何时卷  阅读(57)  评论(0)    收藏  举报