使用docker在window系统上部署redis伪集群

最近在学习docker技术,所以想用docker来搭建一套redis的伪集群

首先,创建Dockerfile和redis.conf文件,拉取redis最新的版本的镜像

 

 

 

 

 

 

创建镜像完成后,因为redis节点要有ip,所以我们需要创建一个网络模块命令

docker network create --subnet 10.40.0.0/16 redis-net

 

创建完网络模块之后,我们要在redis镜像上创建6个容器,命令如下

docker run -d --net redis-net --ip 10.40.0.32 -p 8032:6379 --name redis6-cluster2 redis-6.0.7

每个容器的ip要不同,同时端口号也要不同,因为这个ip和端口号是要映射到localhost的,容器创建完成示例:

 

 

创建完成我们所需要的容器后,我们就可以使用命令来构建伪集群了首先,使用交互式命令进入其中一个容器:

docker exec -it redis6-cluster1 bash

进入到 /usr/local/bin目录下面,使用如下命令构建redis集群:

redis-cli --cluster create 10.40.0.31:6379 10.40.0.32:6379 10.40.0.33:6379 10.40.0.34:6379 10.40.0.35:6379 10.40.0.36:6379 -cluster-replicas 1

其中ip就是我们刚才创建容器时指定的ip,端口号就是redis的端口号,也就是redis.conf中的指定的port ,最后面的1意思是每个master只有一个replica,然后在需要的时候输入yes,redis伪集群就创建成功了。

 

 

创建完成后,我们就可以使用redis工具连接,当然,也可以在容器里面使用redis-cli命令

 

 

以上,就是我使用docker搭建redis伪集群的全部过程。当然,以上的内容我们在网上随便搜一下都可以搜到,但是,当我们按照网上的步骤去做的时候,会发现一些坑,下面就是我在搭建的时候遇到的一些问题,我把它记录下来

1、redis版本问题

我之前也是在网上搜怎么在docker上面搭建redis伪集群,搜到的是使用redis3.0.7版本,使用这个版本部署步骤也差不多,但是他会要我们在安装ruby环境,然后用./redis-trib.rb来构建集群,但是都部署好后,构建集群的时候会提示redis-trib.rb不可用 ,建议我们使用redis-cli

 

 后来我使用redis的最新版本6.0.7,这个版本我没有使用ruby部署,也就是使用上面的步骤就可以成功部署集群。

2、redis.conf问题

之前我直接把redis的包中的redis.conf文件copy出来 ,然后使用Dockerfile创建容器的时候把这个文件copy到容器中,但是发现容器起不来,而且之前使用的是docker run -d命令,容器创建成功了,但是redis服务没有起来,后来使用-it才发现,redis.conf中的很多参数在部署集群的时候会有问题,我没有每个参数的去调整,所以,后来我删减了很多的参数,只保留基本的参数,容器可以正常构建

3、创建容器

我们要部署redis伪集群的话,最少我们要创建6个容器,因为每个master最少要有一个cluster,而集群最少要有3个master,如果没有6个结点的话创建集群也是会失败的,当然,如果想每个集群增加结点的话,可以在创建成功后使用redis-cli --cluster add 命令增加结点

 

posted @ 2020-09-04 18:24  jie的博客  阅读(380)  评论(1编辑  收藏  举报