一、安装最新的redis客户端。
默认latest 版本最新
docker pull redis
查看镜像时候安装成功
docker images |grep "redis"
二、开始配置redis环境
创建配置文件
cd /home
mkdir redis-cluster
cd redis-cluster
vi redis-cluster.tmpl
编辑 redis-cluster文件
port ${PORT} ##节点端口
cluster-enabled yes ##cluster集群模式
cluster-config-file nodes.conf ##集群配置名
cluster-node-timeout 5000 ##超时时间
cluster-announce-ip 172.18.0.${TEMP} ##实际为各节点网卡分配ip
cluster-announce-port ${PORT} ##节点映射端口
cluster-announce-bus-port 1${PORT} ##节点总线端appendonly yes ##持久化模式
创建虚拟网卡
docker network create --driver bridge --subnet 172.18.0.0/16 redis-net #创建网卡并且指定子网
为节点创建配置文件
for port in `seq 7010 7015`; do \
base=7008 \
&& ip=$[port-base] \
&& mkdir -p ./${port}/conf \
&& PORT=${port} TEMP=${ip} envsubst < ./redis-cluster.tmpl > ./${port}/conf/redis.conf \
&& mkdir -p ./${port}/data; \
done
校验目录正确
tree --下面截图环境已经配置好的集群环境可能会有出入。刚创建data目录下面是没有文件的
cat 701*/conf/redis.conf
三、创建容器并指定IP
for port in `seq 7010 7015`; do \
base=7008
myips=$[port-base]
docker run -d -ti -p ${port}:${port} -p 1${port}:1${port} \
--privileged=true -v /home/redis-cluster/${port}/conf/redis.conf:/usr/local/etc/redis/redis.conf \
--privileged=true -v /home/redis-cluster/${port}/data:/data \
--restart always --name redis-${port} --net redis-net --ip 172.18.0.${myips} \
--sysctl net.core.somaxconn=1024 redis redis-server /usr/local/etc/redis/redis.conf; \
done
四、查看容器ip时候与自己配置的ip一致
for port in `seq 7010 7015`;do echo -n "$(docker inspect --format '{{ (index .NetworkSettings.Networks "redis-net").IPAddress }}' "redis-${port}")":${port} ' '; done;
五、集群创建
进入容器
docker exec -it redis-7010 bash
用redis-cli工具启动集群
redis-cli --cluster create 172.18.0.2:7010 172.18.0.3:7011 172.18.0.4:7012 172.18.0.5:7013 172.18.0.6:7014 172.18.0.7:7015 --cluster-replicas 1
六、最终结果
链接客户端 查看主从信息
info replication
宿主主机对外开放ip
for port in `seq 7010 7015`; do \
firewall-cmd --zone=public --add-port=${port}/tcp --permanent done