docker一键搭建redis集群脚本

前言

由于最近服务器外网IP频繁变更,导致redis集群不可用,要重新搭建集群,所以简单写了个集群的一键部署脚本,通过docker来搭建集群。这个自动化脚本主要是对之前的另一篇文章《docker搭建三主三从redis集群,可外网访问》里的关键步骤的整合和集成,建议使用该脚本前先看一下上述文章,了解一下集群搭建的整体流程以及前置环境准备

准备环境

  1. docker环境
  2. redis镜像【镜像版本:5.0.5】
  3. redis-cli客户端
  4. 防火墙端口开通【端口号:6111–6116,16111–16116】

文件&脚本

redis节点清单文件

文件名:nodes-port-list.txt

文件路径:/home/redis-cluster/nodes-port-list.txt

文件用途:用于指定各节点端口

文件内容如下:

6111
6112
6113
6114
6115
6116

shell脚本

文件名:redis-cluster-script.sh

文件路径:/home/redis-cluster/redis-cluster-script.sh

文件用途:集群创建脚本

#/bin/bash
# Created by 31 on 2021-02-01
# 集群目录,可自定义
REDIS_BASE_PATH='/home/redis-cluster'
# 获取服务器公网IP
REDIS_IP=$(host myip.opendns.com resolver1.opendns.com | grep "myip.opendns.com has" | awk '{print $4}')
echo "当前公网IP:"${REDIS_IP}
# 停止和删除docker容器
echo "开始停止和删除docker容器..."
while read line
do
docker stop "redis-"$line
docker rm "redis-"$line
done < ./nodes-port-list.txt
echo“docker容器清理完成,开始创建集群配置文件......# 写入集群配置文件
cat>${REDIS_BASE_PATH}/redis-cluster.conf<<EOF
port \${PORT}
protected-mode no
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
cluster-announce-ip $REDIS_IP
cluster-announce-port \${PORT}
cluster-announce-bus-port 1\${PORT}
appendonly yes
masterauth mypassword
requirepass mypassword
EOF
echo "集群配置文件创建完毕,开始创建节点配置..."
# 创建集群各节点配置文件
while read line
do
  port=$line
  rm -rf ${REDIS_BASE_PATH}/${port}
  mkdir -p ${REDIS_BASE_PATH}/${port}/conf \
  && PORT=${port} envsubst < ${REDIS_BASE_PATH}/redis-cluster.conf > ${REDIS_BASE_PATH}/${port}/conf/redis.conf \
  && mkdir -p ${REDIS_BASE_PATH}/${port}/data; \
done < ./nodes-port-list.txt

echo “节点配置完成,开始创建新docker容器......#创建redis docker容器
while read line
do
 port=$line
 docker run -d -it  \
  -v /home/redis-cluster/${port}/conf/redis.conf:/usr/local/etc/redis/redis.conf \
  -v /home/redis-cluster/${port}/data:/data \
  --restart always --name redis-${port} --net host \
  redis:latest redis-server /usr/local/etc/redis/redis.conf; \
done < ./nodes-port-list.txt
echo “docker容器创建完成,开始进行集群配置......# 拼接集群列表
NODE_LIST=""
while read line
do
NODE=${REDIS_IP}":"${line}
NODE_LIST=${NODE_LIST}" "${NODE}
done < ./nodes-port-list.txt

# 执行命令创建集群
redis-cli --cluster create $NODE_LIST --cluster-replicas 1 -a mypassword

echo "集群创建完成!"
exit 0

操作步骤

执行sh redis-cluster-script.sh命令即可
在这里插入图片描述
在创建过程中会询问是否确认,输入“yes”即可
在这里插入图片描述
等待程序执行完成即可
在这里插入图片描述

${REDIS_BASE_PATH}下生成文件目录结构如下

create-cluster-script        -- 执行脚本文件夹
├── nodes-port-list.txt      -- 节点配置文件
└── redis-cluster-script.sh  -- 集群创建脚本
6111                         -- 6111节点目录【一下文件均由脚本生成】
├── conf
│   └── redis.conf           -- 6111节点配置文件
└── data                     
    ├── appendonly.aof
    ├── dump.rdb
    └── nodes.conf
6112
├── conf
│   └── redis.conf
└── data
    ├── appendonly.aof
    ├── dump.rdb
    └── nodes.conf
6113
├── conf
│   └── redis.conf
└── data
    ├── appendonly.aof
    ├── dump.rdb
    └── nodes.conf
6114
├── conf
│   └── redis.conf
└── data
    ├── appendonly.aof
    ├── dump.rdb
    └── nodes.conf
6115
├── conf
│   └── redis.conf
└── data
    ├── appendonly.aof
    ├── dump.rdb
    └── nodes.conf
6116
├── conf
│   └── redis.conf
└── data
    ├── appendonly.aof
    ├── dump.rdb
    └── nodes.conf
redis-cluster.conf             -- 集群配置文件【脚本生成】

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值