搭建redis-cluster

搭建redis-cluster

  • 1. redis容器初始化
mkdir redis-cluster
cd redis-cluster
vi Dockerfile
  • Dockerfile内容如下:
#基础镜像
FROM redis
#修复时区
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN echo 'Asia/Shanghai' >/etc/timezone
#环境变量
ENV REDIS_PORT 8000
#ENV REDIS_PORT_NODE 18000
#暴露变量
EXPOSE $REDIS_PORT
#EXPOSE $REDIS_PORT_NODE
#复制
COPY entrypoint.sh /usr/local/bin/
COPY redis.conf /usr/local/etc/
#for config rewrite
RUN chmod 777 /usr/local/etc/redis.conf
RUN chmod +x /usr/local/bin/entrypoint.sh
#入口
ENTRYPOINT ["/usr/local/bin/entrypoint.sh"]
#命令
CMD ["redis-server", "/usr/local/etc/redis.conf"]

#!/bin/sh
#只作用于当前进程,不作用于其创建的子进程
set -e
#$0--Shell本身的文件名 $1--第一个参数 $@--所有参数列表
# allow the container to be started with `--user`
if [ "$1" = 'redis-server' -a "$(id -u)" = '0' ]; then
    sed -i 's/REDIS_PORT/'$REDIS_PORT'/g' /usr/local/etc/redis.conf
    chown -R redis .  #改变当前文件所有者
    exec gosu redis "$0" "$@"  #gosu是sudo轻量级”替代品”
fi

exec "$@"
  • 编写redis.conf
#端口
port REDIS_PORT
#开启集群
cluster-enabled yes
#配置文件
cluster-config-file nodes.conf
cluster-node-timeout 5000
#更新操作后进行日志记录
appendonly yes
#设置主服务的连接密码
# masterauth
#设置从服务的连接密码
# requirepass
# bind 127.0.0.1
protected-mode no

  • 编写docker-compose.yml文件
version: '3'

services:
    redis1:
        build: ./
        restart: always
        volumes:
            - ./data/redis/8001/data:/data
        environment:
            - REDIS_PORT=8001
        ports:
            - '8001:8001'       #服务端口
            - '18001:18001'   #集群端口

    redis2:
        build: ./
        restart: always
        volumes:
            - ./data/redis/8002/data:/data
        environment:
            - REDIS_PORT=8002
        ports:
            - '8002:8002'
            - '18002:18002'

    redis3:
        build: ./
        restart: always
        volumes:
            - ./data/redis/8003/data:/data
        environment:
            - REDIS_PORT=8003
        ports:
            - '8003:8003'
            - '18003:18003'
          
    redis4:
        build: ./
        restart: always
        volumes:
            - ./data/redis/8004/data:/data
        environment:
            - REDIS_PORT=8004
        ports:
            - '8004:8004'
            - '18004:18004'
    redis5:
        build: ./
        restart: always
        volumes:
            - ./data/redis/8005/data:/data
        environment:
            - REDIS_PORT=8005
        ports:
            - '8005:8005'
            - '18005:18005'
    redis6:
        build: ./
        restart: always
        volumes:
            - ./data/redis/8006/data:/data
        environment:
            - REDIS_PORT=8006
        ports:
            - '8006:8006'


  • 创建镜像
后台进程
docker-compose up -d
重新创建
docker-compose up --build
  • 进入容器查看集群信息
docker exec -it cfe80afb8314 bash
redis-cli -c -p 8003
cluster info

在这里插入图片描述
从上面的日志里看到,当前集群状态失败。

  • 2. redis容器集群配置
docker run --rm -it inem0o/redis-trib create --replicas 1 你的ip:8001 你的ip:8002 你的ip:8003 你的ip:8004 你的ip:8005 你的ip:8006

再次查看
在这里插入图片描述
已经成功搭建集群。

  • 设置集群密码
    每个节点逐一配置
docker exec -it 7b43e8c80052 bash
redis-cli -c -p 8002
config set masterauth 123456
config set requirepass 123456
auth 123456
config rewrite

在这里插入图片描述

  • 查看密码文件(进入容器)
    在这里插入图片描述
    已经成功了。。。。。。。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值