前面我已经完成了对于Mysql数据库集群的搭建,这里来完成对Redis数据库集群的搭建。这里就提供两种关于redis集群的搭建:
172.18.0.1:6379
,172.18.0.2:6379
,172.18.0.3:6379
,就是说我们在访问时候端口还是6379,因为docker将内部的reids端口都映射到同一个端口进行访问处理。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
// 更改名字,后续操作会简单一些。
docker network create --subnet=172.19.0.0/16 net2
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
// 这个时候就启动成功,可以使用客户端工具进行访问。
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。
docker pull redis
cd /usr/local/src && mkdir redis-cluster && cd ./redis-cluster && touch 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
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
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)
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集群的两种方式,很多还是学习大家的,自己也进行测试,成功之后才发出来供大家学习,有什么不得当或是有问题的地方还希望大家能够指出来。