docker搭建redis集群(亲测)

docker 搭建 redis cluster

  1. 安装docker

    yum install docker

  2. 启动docker

    systemctl start docker

  3. 拉取redis
    docker pull redis (最新版)

  4. 创建redis配置文件(redis-cluster.tmpl)
    我在路径/home下创建一个文件夹redis-cluster,在路径/home/redis-cluster下创建一个文件redis-cluster.tmpl,并把以下内容复制过去。(注:路径可自定义,我用的是/home/redis-cluster)

    port ${PORT}
    protected-mode no
    cluster-enabled yes
    cluster-config-file nodes.conf
    cluster-node-timeout 5000
    cluster-announce-ip 39.10X.XX.XX
    cluster-announce-port ${PORT}
    cluster-announce-bus-port 1${PORT}
    appendonly yes
    # Generated by CONFIG REWRITE 是否配置密码 如若要配置则修改第7步 加入-a 密码 
    # dir "/data"
    # masterauth "密码"
    # requirepass "密码"
    
  5. 创建自定义redis网络
    docker network create redis-net

  6. 在/home/redis-cluster下生成conf和data目标,并生成配置信息

    for port in `seq 7000 7005`; do \
      mkdir -p ./${port}/conf \
      && PORT=${port} envsubst < ./redis-cluster.tmpl > ./${port}/conf/redis.conf \
      && mkdir -p ./${port}/data; \
    done
    

    共生成6个文件夹,从7000到7005,每个文件夹下包含data和conf文件夹,同时conf里面有redis.conf配置文件

  7. 创建6个redis容器

    for port in `seq 7000 7005`; do \
      docker run -d -ti -p ${port}:${port} -p 1${port}:1${port} \
      -v /home/redis-cluster/${port}/conf/redis.conf:/usr/local/etc/redis/redis.conf \
      -v /home/redis-cluster/${port}/data:/data \
      --restart always --privileged=true --name redis-${port} --net redis-net \
      --sysctl net.core.somaxconn=1024 redis redis-server /usr/local/etc/redis/redis.conf; \
    done
    
--privileged =true 完全开放防火墙,如果不配置会出现问题,服务会一直restarting
  1. 实现集群

    echo yes | docker run -i --rm --net redis-net redis sh -c '\
      redis-cli --cluster create --cluster-replicas 1 \
      '"$(for port in `seq 7000 7005`; do \
        echo -n "$(docker inspect --format '{{ (index .NetworkSettings.Networks "redis-net").IPAddress }}' "redis-${port}")":${port} ' ' ; \
      done)"
    #redis-cli --cluster create :7000 :7001 :7002 :7003 :7004 :7005 --cluster-replicas 1
    

    可能会出现

    redis集群部署一直卡在Waiting for the cluster to join …

    redis新版本不支持ruby,而是使用redis-cli 代替。
    到这就完成了。
    可以尝试连接了。

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值