docker-compose配置redis集群-支持arm

创建文件夹

在 /usr/local/docker/下创建,方便管理

mkdir redis-cluster
# 创建redis-1~redis-6文件夹
mkdir redis-cluster/redis-1 \
redis-cluster/redis-2 \
redis-cluster/redis-3 \
redis-cluster/redis-4 \
redis-cluster/redis-5 \
redis-cluster/redis-6

新建配置文件

cd redis-cluster

cat > redis-1/redis.conf << EOF
protected-mode no
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes
port 6381
masterauth 123456
requirepass 123456
EOF
cat > redis-2/redis.conf << EOF
protected-mode no
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes
port 6382
masterauth 123456
requirepass 123456
EOF
cat > redis-3/redis.conf << EOF
protected-mode no
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes
port 6383
masterauth 123456
requirepass 123456
EOF
cat > redis-4/redis.conf << EOF
protected-mode no
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes
port 6384
masterauth 123456
requirepass 123456
EOF
cat > redis-5/redis.conf << EOF
protected-mode no
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes
port 6385
masterauth 123456
requirepass 123456
EOF
cat > redis-6/redis.conf << EOF
protected-mode no
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes
port 6386
masterauth 123456
requirepass 123456
EOF

 

docker-compose.yaml文件配置 (复制有问题可以用 cat > docker-compose.yaml << EOF)

cd redis-cluster

cat > docker-compose.yaml << EOF
version: '3'
services:
  # redis1配置
  redis1:
    image: redis:6.0.16
    container_name: redis-1
    restart: always
    environment:
      - REDISCLI_AUTH=123456
    network_mode: "host"
    volumes:
      - ./redis-1/redis.conf:/usr/local/etc/redis/redis.conf
    command: ["redis-server", "/usr/local/etc/redis/redis.conf"]
  # redis2配置
  redis2:
    image: redis:6.0.16
    container_name: redis-2
    restart: always
    environment:
      - REDISCLI_AUTH=123456
    network_mode: "host"
    volumes:
      - ./redis-2/redis.conf:/usr/local/etc/redis/redis.conf
    command: ["redis-server", "/usr/local/etc/redis/redis.conf"]
  # redis3配置
  redis3:
    image: redis:6.0.16
    container_name: redis-3
    restart: always
    environment:
      - REDISCLI_AUTH=123456
    network_mode: "host"
    volumes:
      - ./redis-3/redis.conf:/usr/local/etc/redis/redis.conf
    command: ["redis-server", "/usr/local/etc/redis/redis.conf"]
  # redis4配置
  redis4:
    image: redis:6.0.16
    container_name: redis-4
    restart: always
    environment:
      - REDISCLI_AUTH=123456
    network_mode: "host"
    volumes:
      - ./redis-4/redis.conf:/usr/local/etc/redis/redis.conf
    command: ["redis-server", "/usr/local/etc/redis/redis.conf"]
  # redis5配置
  redis5:
    image: redis:6.0.16
    container_name: redis-5
    restart: always
    environment:
      - REDISCLI_AUTH=123456
    network_mode: "host"
    volumes:
      - ./redis-5/redis.conf:/usr/local/etc/redis/redis.conf
    command: ["redis-server", "/usr/local/etc/redis/redis.conf"]
  # redis6配置
  redis6:
    image: redis:6.0.16
    container_name: redis-6
    restart: always
    environment:
      - REDISCLI_AUTH=123456
    network_mode: "host"
    volumes:
      - ./redis-6/redis.conf:/usr/local/etc/redis/redis.conf
    command: ["redis-server", "/usr/local/etc/redis/redis.conf"]
EOF

启动容器

docker-compose up -d

 查看启动状态确保up

docker ps

创建集群(执行完会提示输入yes)

docker exec -it redis-1 redis-cli --cluster create 10.211.55.7:6381 10.211.55.7:6382 10.211.55.7:6383 10.211.55.7:6384 10.211.55.7:6385 10.211.55.7:6386 --cluster-replicas 1
#下边这个不用执行
docker exec -it redis-1 redis-cli --cluster  create  -a 123456 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 127.0.0.1:6386 --cluster-replicas 1

连接redis-1节点并查看集群信息节点信息

docker exec -it redis-1 redis-cli -c -h 10.211.55.7 -p 6381 -a 123456
cluster info
cluster nodes

使用set和get命令测试(set会自动到某个节点切片get也会在该切片上获取,但连接点不变)

set name grant
get name

设置密码(已在配置文件中添加)

在redis.conf中添加
masterauth 123456
requirepass 123456
在dockerfile中添加
environment:
- REDISCLI_AUTH=123456

认证连接

redis-cli -c -h 10.211.55.7 -p 6381 -a 123456

使用rdm连接单个

 

 

查看正在连接redis的进程

ps -ef | grep redis

有问题可以删除 

docker stop redis-1 redis-2 redis-3 redis-4 redis-5 redis-6

docker rm redis-1 redis-2 redis-3 redis-4 redis-5 redis-6


ps -ef |grep redis

 

posted @ 2022-07-09 22:18  白玉神驹  阅读(757)  评论(0)    收藏  举报