使用docker搭建redis集群(两种方式)
2020-05-07 04:21
701 查看
文章目录
前言
前面我已经完成了对于Mysql数据库集群的搭建,这里来完成对Redis数据库集群的搭建。这里就提供两种关于redis集群的搭建:
- 在docker中使用端口映射的技术,何为端口映射,就是说当我们建立完成redis集群以后,在使用RDM(Redis客户端)访问时候访问地址类似于
172.18.0.1:6379
,172.18.0.2:6379
,172.18.0.3:6379
,就是说我们在访问时候端口还是6379,因为docker将内部的reids端口都映射到同一个端口进行访问处理。 - 第二种就是使用到主机的ip地址然后分配端口号,这个就拿阿里云linux服务器来举例子,可以使用自己云服务器的公网IP地址,配置上不同的端口号,这个时候可能就需要进行安全组配置的端口开放(自己的云主机的运行的小伙伴应该也都知道如何配置)具体讲到会具体讲解。就例如访问为为
121.199.2.34:9001
,121.199.2.34:9002
等。
第一种:端口映射
- 我们可以使用到
docker search redis
来查询与redis相关联的镜像文件,使用 docker pull 拉取下来,但是这个时候就是最为原始的redis配置,我们在进行到配置的时候就可能会出现问题,所以这里我们输入这条命令:
docker pull yyyyttttwwww/redis // 拉取镜像文件 docker tag yyyyttttwwww/redis redis-1 // 更改名字,后续操作会简单一些。
- 在完成了对镜像的拉取和更换名字以后,像之前在搭建MySql数据库集群一样,定义一个网络。
docker network create --subnet=172.19.0.0/16 net2
- 在完成了对网络的创建以后,就可以开始对redis容器的创建,这里创建6个redis容器,6个容器一主一丛,三个主服务器连接在一起,才能够构成一个redis数据库集群。命令如下:
因为上面我们定义了172.19.0.* 网段,所以这里将集群搭建在特殊的网段内部。
docker run -it -d --restart=always --name r1 -p 5001:6379 --net=net2 --ip 172.19.0.2 redis bash docker run -it -d --restart=always --name r2 -p 5002:6379 --net=net2 --ip 172.19.0.3 redis bash docker run -it -d --restart=always --name r3 -p 5003:6379 --net=net2 --ip 172.19.0.4 redis bash docker run -it -d --restart=always --name r4 -p 5004:6379 --net=net2 --ip 172.19.0.5 redis bash docker run -it -d --restart=always --name r5 -p 5005:6379 --net=net2 --ip 172.19.0.6 redis bash docker run -it -d --restart=always --name r6 -p 5006:6379 --net=net2 --ip 172.19.0.7 redis bash
- 在完成了对网段的创建开始,就可以开始对配置文件进行配置,首先我们需要知道有哪些地方需要进行一个具体的配置:
daemonize yes # 表示以后台的方式进行运行 不然就会出现下图所示,就不能够进行其他命令的配置 cluster-enabled yes # 表示开启集群,默认是关闭的 cluster-config-file nodes.conf # 表示集群的配置文件名称 cluter-node-timeout 15000 # 表示集群之间的超时时间,若是在这个时间段之内没有收到回复,表示节点出现了问题。 appendonly yes # redis的持久化有两种RDB与AOF,具体的可以去搜索,这里开启aof 性能更加高,出现问题数据丢失更加少(只会丢失一秒种的数据)
不进入后台模式:
5. 完成了配置文件(需要我们进入到每一个容器内都进行如下的更改)
#进入r1节点 docker exec -it r1 bash vi /usr/redis/redis.conf cd .. // 进入到 src目录。.. 表示父级目录 ./redis-server ../redis.conf // 开启服务,以哪一个配置文件进行开启。 #进入r2节点 docker exec -it r2 bash vi /usr/redis/redis.conf cd .. ./redis-server ../redis.conf #进入r3节点 docker exec -it r3 bash vi /usr/redis/redis.conf cd .. ./redis-server ../redis.conf #进入r4节点 docker exec -it r4 bash vi /usr/redis/redis.conf cd .. ./redis-server ../redis.conf #进入r5节点 docker exec -it r5 bash vi /usr/redis/redis.conf cd .. ./redis-server ../redis.conf #进入r6节点 docker exec -it r6 bash vi /usr/redis/redis.conf cd .. ./redis-server ../redis.conf
- 安装创建cluster的工具(这里是版本较低的情况下)
// 这个时候就启动成功,可以使用客户端工具进行访问。 cd /usr/redis/src mkdir -p ../cluster cp redis-trib.rb ../cluster/ cd ../cluster #创建Cluster集群 ./redis-trib.rb create --replicas 1 172.19.0.2:6379 172.19.0.3:6379 172.19.0.4:6379 172.19.0.5:6379 172.19.0.6:6379 172.19.0.7:6379
第二种:端口直接访问
对于第一种的创建方式,同时映射到同一个端口,以虚拟ip的方式来进行集群的搭建。第二种就是以我们的主机ip地址进行搭建,这里以我的阿里云主机进行测试(阿里云的linux云主机真香)。
首先需要我们完成对端口的开放:
设置入方向端口:我们这里设置9001-9006。
- 拉取redis镜像:
docker pull redis
- 创建redis容器:
cd /usr/local/src && mkdir redis-cluster && cd ./redis-cluster && touch redis-cluster.conf
- 对redis的配置文件进行配置:
进入命令(注意上级目录): vi redis-cluster.conf
port ${PORT} cluster-enabled yes protected-mode no cluster-config-file nodes.conf cluster-node-timeout 5000 #对外ip cluster-announce-ip [ip] cluster-announce-port ${PORT} cluster-announce-bus-port 1${PORT} appendonly yes
- 自行定义网段,用于节点之间的通信:
表示创建一个名为redis-net的网络供集群使用
docker network create redis-net
- 进入到对应的目录下,并生成配置文件信息:
cd /usr/local/src/redis-cluster // 表示进入到目录下 // 注意下方的9001-9006 要和自己开放的端口保持一致。 for port in `seq 9001 9006`; do mkdir -p ./${port}/conf && PORT=${port} envsubst < ./redis-cluster.conf > ./${port}/conf/redis.conf && mkdir -p ./${port}/data; done
可以在当前目录下使用 ls查看
- 通过以上创建的配置文件,使用redis镜像创建对应的6个redis容器:
for port in `seq 9001 9006`; do docker run -d -ti -p ${port}:${port} -p 1${port}:1${port} -v /usr/local/src/redis-cluster/${port}/conf/redis.conf:/usr/local/etc/redis/redis.conf -v /usr/local/src/redis-cluster/${port}/data:/data --restart always --name redis-${port} --net redis-net --sysctl net.core.somaxconn=1024 redis redis-server /usr/local/etc/redis/redis.conf; done ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200430210713119.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDAxNTA0Mw==,size_16,color_FFFFFF,t_70)
- 进入到任意一个容器的内部,执行创建集群的命令,搭建集群:
IP: 填写自己的主机地址。
docker exec -it redis-9001 bash redis-cli --cluster create ip:9001 ip:9002 ip:9003 ip:9004 ip:9005 ip:9006 --cluster-replicas 1
- 进入到集群的内部查看对应的信息。
redis-cli -h 121.199.2.XX -p 9001 cluster nodes // 就可以开始对应的测试
后记
以上就是搭建redis集群的两种方式,很多还是学习大家的,自己也进行测试,成功之后才发出来供大家学习,有什么不得当或是有问题的地方还希望大家能够指出来。
Maycope 原创文章 113获赞 163访问量 2万+ 关注 私信相关文章推荐
- 使用jedis连接单机和集群redis的两种方式
- 使用docker搭建redis集群并测试
- 使用docker redis-cluster集群搭建
- Linux中使用Docker搭建Redis集群
- docker--使用docker搭建redis集群
- 非关系型数据库Redis(三):搭建三主三从的两种方式与SpringBoot整合Redis集群
- 从docker入门到使用docker搭建redis哨兵集群
- 使用jedis连接单机和集群redis的两种方式
- 使用Docker在本地搭建Hadoop分布式集群
- Window平台搭建Redis分布式缓存集群 ---redis 安装和使用
- Golang开发环境搭建(Notepad++、LiteIDE两种方式以及martini框架使用)
- 使用ruby自带工具进行redis集群搭建
- Redis集群搭建与简单使用【转】
- 使用Docker搭建consul集群+registrator实现服务自动注册。
- 详解使用docker 1.12 搭建多主机docker swarm集群
- redis集群搭建之一~使用utils/create-cluster方法
- Docker1.12.1之swarm集群搭建与使用
- Redis集群搭建与简单使用
- 详解从 0 开始使用 Docker 快速搭建 Hadoop 集群环境
- Golang开发环境搭建(Notepad++、LiteIDE两种方式以及martini框架使用)