docker部署redis集群

/ 技术相关 / 0 条评论 / 630浏览

docker部署redis集群

拉取 redis 镜像

docker pull redis

创建网络

使用Bridge模式,则redis.conf配置文件中的端口可以都使用6379,但是需要映射到宿主机的不同端口。

docker network create -d bridge --subnet 172.180.0.0/16 --gateway 172.180.0.1 redis

::: tip 知识点

# 查看网络
docker network ls
docker network inspect redis
# 删除网络
docker network rm redis

:::

创建集群

其余三个过程可以使用Shell脚本完成,rmredis.sh(移除容器),redis-nodes.sh(创建配置文件,运行容器,创建集群)。从主机对应端口号6371~6376 (可自行配置)。

移除容器

rmredis.sh 文件路径可以修改。

for port in $(seq 1 6)
do
    echo "redis0${port}开始删除"
    docker rm -f redis0${port}
    rm -rf /Volumes/ME/Containers/redis/node-${port}
    echo "redis0${port}容器删除成功!!!"
done

创建配置文件,运行容器,创建集群

一、创建配置文件

redis-nodes.sh 将主机ip修改成你的,路径同样可修改。

for port in $(seq 1 6)
do
    echo "node-$port节点开始创建"
    mkdir -p /Volumes/ME/Containers/redis/node-${port}/conf
    touch /Volumes/ME/Containers/redis/node-${port}/conf/redis.conf
cat << EOF > /Volumes/ME/Containers/redis/node-${port}/conf/redis.conf
#端口 
port 6379
#非保护模式 
protected-mode no
#启用集群模式 
cluster-enabled yes
cluster-config-file nodes.conf
#超时时间 
cluster-node-timeout 5000
#集群各节点IP地址,记得172.180.0.1修改为你的ip地址
cluster-announce-ip 172.180.0.1${port}
#集群节点映射端口 
cluster-announce-port 6379
#集群总线端口 
cluster-announce-bus-port 16379
#开启aof持久化策略 
appendonly yes
#后台运行, 如果是docker安装,由于docker本身就是后台运行的,daemonize为yes两者会冲突
daemonize no
#进程号存储
pidfile /var/run/redis_6379.pid
#外部访问
bind 0.0.0.0
#日志
logfile "redis.log"
#密码
requirepass redis@mima
masterauth redis@mima
EOF
echo "node-$port节点创建完成!!!"
done

二、创建容器

for port in $(seq 1 6)
do
echo "redis0${port}开始部署"
docker run -d --name redis0${port} -p 637${port}:6379 -p 1637${port}:16379 --network redis --ip 172.180.0.1${port} -v /Volumes/ME/Containers/redis/node-${port}/data:/data -v /Volumes/ME/Containers/redis/node-${port}/conf/redis.conf:/etc/redis/redis.conf redis redis-server /etc/redis/redis.conf
echo "redis0${port}部署完成!!!"
done

三、创建集群

此条语句执行的前提是主机上也安装了redis。没安装,注释掉随机进入一个容器执行即可。

redis-cli -a redis@mima --cluster create 172.180.0.11:6379 172.180.0.12:6379 172.180.0.13:6379 172.180.0.14:6379 172.180.0.15:6379 172.180.0.16:6379 --cluster-replicas 1

四、批量重启容器

for port in $(seq 1 6)
do
echo "redis0${port}开始启动"
docker restart redis0${port}
echo "redis0${port}启动完成!!!"
done

五、单机版redis

docker run -d --name redis -p 6379:6379 -p 16379:16379 -v /Volumes/ME/Containers/redis/data:/data -v /Volumes/ME/Containers/redis/conf/redis.conf:/etc/redis/redis.conf redis