docker搭建redis集群
1通过docker获取redis镜像
通过命令docker search redis获取安装最新的redis镜像
也可以直接通过命令安装
$ docker pull docker.io/redis:5.0.0,通过docker images 查看是否安装成功
$ docker network create redis-net
创建redis-net虚拟网卡,目的是让docker容器能与宿主桥接网络,并间接与外界连接。
查看redis-net虚拟网卡网关ip
$ docker network inspect redis-net | grep "Gateway" | grep --color=auto -P '(\d{1,3}.){3}\d{1,3}' -o
在home目录下新建文件夹mkdir /home/docker/redisContainer/redis-cluster
在建好的文件夹中新建文件名为redis-cluster.tmpl文件
$ touch redis-cluster.tmpl
配置文件的内容为:
port ${PORT}
protected-mode no
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
cluster-announce-ip 172.21.0.14
cluster-announce-port ${PORT}
cluster-announce-bus-port 1${PORT}
appendonly yes
创建完文件后执行:
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
上述命令会在redis-cluster.tmpl同级目录中创建7000 7001 7002 7003 7004 7005的文件夹,在每个文件夹下创建conf、data文件夹和在conf文件夹下的redis.conf配置文件
再根据下载好的redis镜像来创建容器
for port in `seq 7000 7005`; do \
docker run -d -ti -p ${port}:${port} -p 1${port}:1${port} \
-v/home/docker/redisContainer/redis-cluster/${port}/conf/redis.conf:/usr/local/etc/redis/redis.conf \
-v /home/docker/redisContainer/redis-cluster/${port}/data:/data \
--restart always --name redis-${port} --net redis-net \
--sysctl net.core.somaxconn=1024 redis:5.0.0 redis-server /usr/local/etc/redis/redis.conf; \
done
注意:-v/home/docker/redisContainer/redis-cluster/${port}/conf/redis.conf 和 -v /home/docker/redisContainer/redis-cluster/${port}/data为你创建的7000中的redis.conf和data的完整路径,否则无法完成各个容器redis中的配置文件映射
容器创建好之后通过命令docker ps来查看
通过命令来进入任意容器:
$ docker exec -it redis-7000 /bin/bash\
通过下面的命令,进行集群连接。
$ /usr/local/bin/redis-cli --cluster create 172.18.0.2:7000 172.18.0.3:7001 172.18.0.4:7002 172.18.0.5:7003 172.18.0.6:7004 172.18.0.7:7005 --cluster-replicas 1
输入命令$ redis-cli -p 7000 -c
$ set name chend
$ get name