Docker搭建Redis Cluster

第一种方式

在这里插入图片描述

  1. 创建redis目录
  2. redis目录下分别创建docker-compose.ymlsetup-redis-cluster.sh文件
  3. setup-redis-cluster.sh授权,然后执行脚本即可
chmod -x ./setup-redis-cluster.sh 
./setup-redis-cluster.sh 10.242.82.32
  • 10.242.82.32:本机IP

docker-compose.yml

version: "2"

services:
  redis-cluster-node-0:
    image: docker.io/bitnami/redis-cluster:6.2
    ports:
      - 9001:9001
      - 19001:19001
    restart: always
    environment:
      - 'REDIS_CLUSTER_ANNOUNCE_IP=${HOST_IP}'
      - 'REDIS_PORT_NUMBER=9001'
      - 'REDIS_CLUSTER_DYNAMIC_IPS=no'
      - 'ALLOW_EMPTY_PASSWORD=yes'
      - 'REDIS_NODES=${HOST_IP}:9001 ${HOST_IP}:9002 ${HOST_IP}:9003 ${HOST_IP}:9004 ${HOST_IP}:9005 ${HOST_IP}:9000'

  redis-cluster-node-1:
    image: docker.io/bitnami/redis-cluster:6.2
    ports:
      - 9002:9002
      - 19002:19002
    restart: always
    environment:
      - 'REDIS_CLUSTER_ANNOUNCE_IP=${HOST_IP}'
      - 'REDIS_PORT_NUMBER=9002'
      - 'REDIS_CLUSTER_DYNAMIC_IPS=no'
      - 'ALLOW_EMPTY_PASSWORD=yes'
      - 'REDIS_NODES=${HOST_IP}:9001 ${HOST_IP}:9002 ${HOST_IP}:9003 ${HOST_IP}:9004 ${HOST_IP}:9005 ${HOST_IP}:9000'

  redis-cluster-node-2:
    image: docker.io/bitnami/redis-cluster:6.2
    ports:
      - 9003:9003
      - 19003:19003
    restart: always
    environment:
      - 'REDIS_CLUSTER_ANNOUNCE_IP=${HOST_IP}'
      - 'REDIS_PORT_NUMBER=9003'
      - 'REDIS_CLUSTER_DYNAMIC_IPS=no'
      - 'ALLOW_EMPTY_PASSWORD=yes'
      - 'REDIS_NODES=${HOST_IP}:9001 ${HOST_IP}:9002 ${HOST_IP}:9003 ${HOST_IP}:9004 ${HOST_IP}:9005 ${HOST_IP}:9000'

  redis-cluster-node-3:
    image: docker.io/bitnami/redis-cluster:6.2
    ports:
      - 9004:9004
      - 19004:19004
    restart: always
    environment:
      - 'REDIS_CLUSTER_ANNOUNCE_IP=${HOST_IP}'
      - 'REDIS_PORT_NUMBER=9004'
      - 'REDIS_CLUSTER_DYNAMIC_IPS=no'
      - 'ALLOW_EMPTY_PASSWORD=yes'
      - 'REDIS_NODES=${HOST_IP}:9001 ${HOST_IP}:9002 ${HOST_IP}:9003 ${HOST_IP}:9004 ${HOST_IP}:9005 ${HOST_IP}:9000'

  redis-cluster-node-4:
    image: docker.io/bitnami/redis-cluster:6.2
    ports:
      - 9005:9005
      - 19005:19005
    restart: always
    environment:
      - 'REDIS_CLUSTER_ANNOUNCE_IP=${HOST_IP}'
      - 'REDIS_PORT_NUMBER=9005'
      - 'REDIS_CLUSTER_DYNAMIC_IPS=no'
      - 'ALLOW_EMPTY_PASSWORD=yes'
      - 'REDIS_NODES=${HOST_IP}:9001 ${HOST_IP}:9002 ${HOST_IP}:9003 ${HOST_IP}:9004 ${HOST_IP}:9005 ${HOST_IP}:9000'

  redis-cluster-node-5:
    image: docker.io/bitnami/redis-cluster:6.2
    ports:
      - 9000:9000
      - 19000:19000
    restart: always
    depends_on:
      - redis-cluster-node-0
      - redis-cluster-node-1
      - redis-cluster-node-2
      - redis-cluster-node-3
      - redis-cluster-node-4
    environment:
      - 'REDIS_CLUSTER_ANNOUNCE_IP=${HOST_IP}'
      - 'REDIS_PORT_NUMBER=9000'
      - 'REDIS_CLUSTER_DYNAMIC_IPS=no'
      - 'ALLOW_EMPTY_PASSWORD=yes'
      - 'REDIS_CLUSTER_REPLICAS=1'
      - 'REDIS_CLUSTER_CREATOR=yes'
      - 'REDIS_NODES=${HOST_IP}:9001 ${HOST_IP}:9002 ${HOST_IP}:9003 ${HOST_IP}:9004 ${HOST_IP}:9005 ${HOST_IP}:9000'

setup-redis-cluster.sh

#!/bin/bash

# 待删除的容器名称列表
CONTAINER_NAMES=(
  "redis-redis-cluster-node-0-1"
  "redis-redis-cluster-node-1-1"
  "redis-redis-cluster-node-2-1"
  "redis-redis-cluster-node-3-1"
  "redis-redis-cluster-node-4-1"
  "redis-redis-cluster-node-5-1"
)

# 检查是否传入了 HOST_IP 参数
if [ -z "$1" ]; then
  echo "Usage: $0 HOST_IP"
  exit 1
fi

HOST_IP="$1"

# 遍历容器名称列表
for CONTAINER_NAME in "${CONTAINER_NAMES[@]}"; do
  # 检查容器是否在运行中
  if docker ps -a --format '{{.Names}}' | grep -q "^${CONTAINER_NAME}$"; then
    # 停止容器
    docker stop ${CONTAINER_NAME}
    echo "已停止容器 ${CONTAINER_NAME}"
  fi

  # 检查容器是否存在
  if docker ps -a --format '{{.Names}}' | grep -q "^${CONTAINER_NAME}$"; then
    # 删除容器
    docker rm ${CONTAINER_NAME}
    echo "已删除容器 ${CONTAINER_NAME}"
  else
    echo "容器 ${CONTAINER_NAME} 不存在,无需删除."
  fi
done

# 启动容器
HOST_IP=${HOST_IP} docker-compose up -d

echo "Redis 集群创建成功."

验证集群

redis-cli -h 192.168.103.50 -p 9001

第二种方式

为了体验Redis集群,并且为了便于部署所以直接使用docker部署了一个简单集群:

docker run -e "IP=0.0.0.0" -p 9000-9005:7000-7005 -d --name redis-cluster grokzen/redis-cluster:6.2.14 redis-server --protected-mode no

连接测试

redis-cli -c -p 9000

通过set 命令测试集群:

127.0.0.1:7000> set a 1
-> Redirected to slot [15495] located at 127.0.0.1:7002
OK

参考

https://github.com/Grokzen/docker-redis-cluster

windows环境下redis集群搭建搭建频繁如下: redis集群测试 01、安装Redis 02、创建6个目录Redis7001、Redis7002、Redis7003、Redis7004、Redis7005、Redis7006 03、把Redis目录下的redis.windows.conf文件分别复制到上创建创建的6个文件夹中 04、修改6个文件夹中的redis.windows.conf文件 a、修改端口,分别对应 700* b、绑定IP,这里使用的是一台电脑,都设置为127.0.0.1 c、指定数据文件(appendonly.aof)的存放位置,dir C:/MySoftPath/Java/Redis/Redis700*/ d、开启集群模式,cluster-enabled yes e、集群文件配制信息(不用设置路径,自动在对应的700*下面),cluster-config-file nodes-700*.conf f、超时时间,cluster-node-timeout 5000 g、开启aof模式,appendonly yes h、数据文件名称,appendfilename "appendonly.aof" 05、启动这6个redis 06、安装ruby环境(rubyinstaller-2.2.4-x64.exe),注意(安装所有模块),后台需要使用此环境。 07、下载ruby环境下Redis的驱动“redis-3.2.2.gem”。 08、把“redis-3.2.2.gem”放到ruby环境下进行驱动,在所在的目录运行【gem install --local redis-3.2.2.gem】 09、把redis-trib.rb集群工具放在redis目录下,使用此工具创建集群 10、创建Redis集群redis-trib.rb create --replicas 0 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 127.0.0.1:7006】 11、注意,如果第10步没有反应也不报错,在redis-trib.rb命令前面使用ruby 【ruby redis-trib.rb create --replicas.........】 12、最后配上别人的博客【http://www.cnblogs.com/tommy-huang/p/6240083.html】 。。。。。。。。。。。。。。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值