搭建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
- 查看密码文件(进入容器)
已经成功了。。。。。。。