使用docker搭建redis-cluster集群

一、安装docker

			yum update  --->  执行以下命令:添加yum仓库,使用阿里云的源	
			
			sudo yum install -y yum-utils device-mapper-persistent-data lvm2
			sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
			
			安装最新版docker:yum install -y docker-ce
			
			启动:systemctl start docker.service
			查看版本:docker version
			设置开机自启:systemctl enable docker

二、安装redis ,修改配置文件

1.创建文件夹,下载redis 安装源文件,解压

			mkdir /usr/local/redis_docker
			cd /usr/local/redis_docker
			wget http://download.redis.io/releases/redis-4.0.1.tar.gz 
			tar -xzf redis-4.0.1.tar.gz
			

2.安装gcc

yum install -y gcc-c++

3.编译

make
#如果报错,可以尝试:make MALLOC=libc

4.修改配置文件redis.conf

			#ip绑定
			# bind 0.0.0.0
			# 0.0.0.0为不绑定ip
			
			#设置密码
			requirepass 123456789
			#主从复制的验证密码
			masterauth 123456789	
			#日志文件
			logfile “/usr/local/redis/logs/redis-server.log”
			#开启集群配置
			cluster-enabled yes
			#集群配置文件
			cluster-config-file nodes-6379.conf
			#集群超时时间
			cluster-node-timeout 15000

三、创建集群基础镜像

  1. 创建Dockerfile 文件,内容如下:
# 指定基础镜像
FROM centos:7

#镜像作者
MAINTAINER kiwis "[email protected]"

#定义路径的环境变量
ENV REDIS_HOME /usr/local

#将Dockerfile同级目录下的redis-4.0.1.tar.gz复制到镜像的根目录
ADD redis-4.0.1.tar.gz /

#创建安装目录,根据环境变量信息,实际的创建目录为:/usr/local/redis
RUN mkdir -p $REDIS_HOME/redis

#创建日志保存目录
RUN mkdir -p $REDIS_HOME/redis/logs

#将Dockerfile同级目录下redis-4.0.1中的redis配置文件拷贝到容器的/usr/local/redis目录中
ADD redis.conf $REDIS_HOME/redis/

#更新镜像的yum
RUN yum -y update

#安装gcc相关编译工具
RUN yum install -y gcc make

#指定工作目录
WORKDIR /redis-4.0.1

#执行编译
RUN make

#进行安装,指定安装路径
RUN make PREFIX=$REDIS_HOME/redis/ install

#移动安装后的redis-cli 等文件到/redis 目录下
RUN mv $REDIS_HOME/redis/bin/*  $REDIS_HOME/redis/

#移动到上一级
WORKDIR /

#删除解压文件
RUN rm -rf /redis-4.0.1

#删除多于的工具
RUN yum remove -y gcc make

#添加数据卷
#/usr/local/redis/logs/redis-server.log
#此目录需要和redis.conf中logfile一致
VOLUME ["/usr/local/redis/logs"]

#暴露6379的端口
EXPOSE 6379

2.编译生成基础镜像

docker build -t kiwis/redis-cluster  .

四、创建redis 集群节点镜像

1.创建Dockerfile 文件

FROM kiwis/redis-cluster:latest
MAINTAINER kiwis "[email protected]"
ENTRYPOINT ["/usr/local/redis/redis-server", "/usr/local/redis/redis.conf"]

2.编译生成节点镜像

docker build -t kiwis/redis-node  .

3.查看镜像目录
在这里插入图片描述

4.启动各个节点容器

docker run -d --name redis-node-7001 -p 7001:6379 kiwis/redis-node
docker run -d --name redis-node-7002 -p 7002:6379 kiwis/redis-node
docker run -d --name redis-node-7003 -p 7003:6379 kiwis/redis-node
docker run -d --name redis-node-7004 -p 7004:6379 kiwis/redis-node
docker run -d --name redis-node-7005 -p 7005:6379 kiwis/redis-node
docker run -d --name redis-node-7006 -p 7006:6379 kiwis/redis-node

在这里插入图片描述5.查看宿主机与容器ip的对应关系
在这里插入图片描述

宿主机 容器
192.168.11.203:7001 172.17.0.2:6379
192.168.11.203:7002 172.17.0.3:6379
192.168.11.203:7003 172.17.0.4:6379
192.168.11.203:7004 172.17.0.5:6379
192.168.11.203:7005 172.17.0.6:6379
192.168.11.203:7006 172.17.0.7:6379

五、配置节点

1.任意进入一个redis

redis-cli -p 7001
auth 123456789

若提示无redis-cli 命令,复制一下

cp /usr/local/redis/redis-cli  /usr/bin/redis-cli

2.添加节点

CLUSTER MEET 172.17.0.3 6379
CLUSTER MEET 172.17.0.4 6379
CLUSTER MEET 172.17.0.5 6379
CLUSTER MEET 172.17.0.6 6379
CLUSTER MEET 172.17.0.7 6379

3.查看节点信息

cluster nodes

查看集群状态

cluster info

此时集群不可用,因为没有配置糟点。

4.配置糟点
创建 addslots.sh 文件,配置糟点到3台主,内容如下

#!/bin/bash
#将0-5461的槽点配置在172.17.0.2:6379(宿主机127.0.0.1:7001)的redis上
n=0
for ((i=n;i<=5461;i++))
do
   /usr/local/redis/redis-cli -h 127.0.0.1 -p 7001 -a Bendian001002!  CLUSTER ADDSLOTS $i
done

#将5462-10922的槽点配置在172.17.0.3:6379(宿主机127.0.0.1:7002)的redis上
n=5462
for ((i=n;i<=10922;i++))
do
   /usr/local/redis/redis-cli -h 127.0.0.1 -p 7002 -a Bendian001002!  CLUSTER ADDSLOTS $i
done

#将10923-16383的槽点配置在172.17.0.4:6379(宿主机127.0.0.1:7003)的redis上
n=10923
for ((i=n;i<=16383;i++))
do
   /usr/local/redis/redis-cli -h 127.0.0.1 -p 7003 -a Bendian001002!  CLUSTER ADDSLOTS $i
done

执行shell脚本

sh addslots.sh

在这里插入图片描述此时,3主可用。

5.主从高可用,配置3主3从,主挂从自动切换,保证集群正常
创建addSlaveNodes.sh 文件,在从节点中添加主节点id

#CLUSTER REPLICATE后面跟的是172.17.0.5:6379的集群ID
/usr/local/redis/redis-cli -h 127.0.0.1 -p 7004 -a 123456789 CLUSTER REPLICATE bf43cd766b947a2ee728a17747fb77241e887197
#CLUSTER REPLICATE后面跟的是172.17.0.6:6379的集群ID
/usr/local/redis/redis-cli -h 127.0.0.1 -p 7005 -a 123456789  CLUSTER REPLICATE ac002bdef8ca9d5fbc21e5a9f2a718faf0c5cdf2
#CLUSTER REPLICATE后面跟的是172.17.0.7:6379的集群ID
/usr/local/redis/redis-cli -h 127.0.0.1 -p 7006 -a 123456789  CLUSTER REPLICATE 8b26bfb03986b91c22f2fce780bcf5692e0a5a6d

查看结果
在这里插入图片描述

六、高可用测试:略

完美结束!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章