1、下载redis作为制作镜像前提准备
wget http://download.redis.io/releases/redis-3.2.4.tar.gz
2、Dockerfile制作(与redis-3.2.4.tar.gz同目录--redis-cluster)
FROM centos:6.7 MAINTAINER gxg gaoxinguo@qq.com ENV REFRESHED_AT 2017-12-10
ENV REDIS_HOME /opt/redis/redis_default
ADD redis-3.2.4.tar.gz /opt/redis/ RUN ln -s /opt/redis/redis-3.2.4 $REDIS_HOME
RUN yum -y install gcc
WORKDIR $REDIS_HOME RUN make && make install
EXPOSE 6379
ENTRYPOINT [ "/usr/local/bin/redis-server", "/etc/redis/redis.conf" ] |
※ 运行 docker build --tag rediscluster:v1 . 生成基础镜像!
3、新建集群redis服务器目录
4、每个目录中新建配置文件和启动文件
5、编辑基础的配置redis.conf
port 6379 bind 172.17.0.2 daemonize no pidfile "/var/run/redis.pid" cluster-enabled yes cluster-config-file nodes.conf cluster-node-timeout 15000 appendonly yes |
6、编辑每个目录下的启动文件
#!/bin/bash docker run -d -p 7000:6379 --restart always --net=comnet --ip 172.17.0.2 --name redis7000 -v /data/redis/7000:/etc/redis/:ro rediscluster:v1 |
★ 这里docker运行时,使用组网模式并使用固定IP,防止容器重启后IP更改,造成集群失败!
docker network create --subnet=172.17.0.0/16 comnet ## 创建网桥
7、依次启动6个目录执行对应的脚本
./start.700n.sh
8、进入7000服务器执行集群脚本(容器内执行)
docker exec -it redis7000 /bin/bash yum install -y ruby rubygems wget https://rubygems.global.ssl.fastly.net/gems/redis-3.2.1.gem gem install -l ./redis-3.2.1.gem
src/redis-trib.rb create --replicas 1 172.17.0.2:6379 172.17.0.3:6379 172.17.0.4:6379 172.17.0.5:6379 172.17.0.6:6379 172.17.0.7:6379 |
9、如需增加节点,可以增加容器并启动后,执行如下命令
cluster meet 172.17.0.10 6379 |