docker 搭建 redis 集群
- 创建redis-cluster目录
mkdir /home/redis/docker_redis_cluster
- 获取redis原生的配置文件
- 下载redis-trib.rb
wget http://download.redis.io/redis-stable/src/redis-trib.rb
- redis.conf 配置文件 改为 redis-cluster.tmpl
mv redis.conf redis-cluster.tmpl
- 修改redis.conf 配置文件
#bind 127.0.0.1
protected-mode no
port ${PORT}
daemonize no
dir /data/redis
appendonly yes
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 15000
- 创建Dokerfile
FROM ruby:2.5-slim
MAINTAINER dongsilindslzc@foxmail.com
RUN gem install redis
RUN mkdir /redis
WORKDIR /redis
ADD ./redis-trib.rb /redis/redis-trib.rb
- 创建docker内部网络
查询是否存在
docker network ls #检查网络是否存在
docker network rm 网路名#存在删除删除网络
docker network create redis-cluster-net #创建网络
- 创建 master 和 slave 文件夹
for port in
seq 7000 7005
; do
ms=“master”
if [ p o r t − g e 7003 ] ; t h e n m s = " s l a v e " f i m k d i r − p . / port -ge 7003 ]; then ms="slave" fi mkdir -p ./ port−ge7003];thenms="slave"fimkdir−p./ms/KaTeX parse error: Expected 'EOF', got '&' at position 7: port/ &̲& mkdir -p ./ms/KaTeX parse error: Expected 'EOF', got '\ ' at position 11: port/data \̲ ̲ && PORT=port envsubst < ./redis-cluster.tmpl > ./ m s / ms/ ms/port/redis.conf;
done;
- 运行docker redis 的 master 和 slave 实例
for port in
seq 7000 7005
; do
ms=“master”
if [ $port -ge 7003 ]; then
ms=“slave”
fi
docker run -d -p p o r t : port: port:port -p 1 p o r t : 1 port:1 port:1port
-v P W D / PWD/ PWD/ms/$port/redis.conf:/data/redis.conf
-v P W D / PWD/ PWD/ms/KaTeX parse error: Expected 'EOF', got '\ ' at position 23: …ta:/data/redis \̲ ̲--restart alway…ms-$port --net redis-cluster-net
redis redis-server /data/redis.conf;
done;
- 组装masters : slaves 节点参数
matches=""
for port inseq 7000 7005
; do
ms=“master”
if [ p o r t − g e 7003 ] ; t h e n m s = " s l a v e " f i m a t c h e s = port -ge 7003 ]; then ms="slave" fi matches= port−ge7003];thenms="slave"fimatches=matches ( d o c k e r i n s p e c t − − f o r m a t ′ ( i n d e x . N e t w o r k S e t t i n g s . N e t w o r k s " r e d i s − c l u s t e r − n e t " ) . I P A d d r e s s ′ " r e d i s − (docker inspect --format '{{(index .NetworkSettings.Networks "redis-cluster-net").IPAddress}}' "redis- (dockerinspect−−format′(index.NetworkSettings.Networks"redis−cluster−net").IPAddress′"redis−ms- p o r t " ) : {port}"): port"):{port}" ";
done;
- 创建集群
docker-clusterdocker run -it --rm --net redis-cluster-net redis-trib ruby redis-trib.rb create --replicas 1 $matches
- 集群创建完毕开始验证
docker exec -it redis-master-7000 redis-cli -c -h 192.168.121.128 -p 7000
192.168.121.128:7000>
验证成功