docker搭建三主三从redis集群

转自 https://blog.csdn.net/u010695169/article/details/106422030 原文

一、安装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.编译 ,进入解压目录

cd redis-4.0.1/
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 "232533355@qq.com"
#定义路径的环境变量
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配置文件拷贝到容器的/usr/local/redis目录中(将上一步改好的redis.conf 文件复制到这里)
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-server到容器相关的目录
#RUN mv /redis-4.0.1/src/redis-server  $REDIS_HOME/redis/
#将安装好的redis/bin 文件移动到/usr/local/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

docker build -t kiwis/redis-cluster  .

查看镜像,如下:
在这里插入图片描述基础镜像创建成功。

四、创建redis 集群节点镜像

1.创建Dockerfile 文件

FROM kiwis/redis-cluster:latest
MAINTAINER kiwis "1153530876@qq.com"
ENTRYPOINT ["/usr/local/redis/redis-server", "/usr/local/redis/redis.conf"]

2.编译生成节点镜像

docker build -t kiwis/redis-node  .

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

4.启动各个节点容器,设置容器开机自启。如果创建时未指定 --restart=always ,可通过update 命令:docker update --restart=always xxx

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

在这里插入图片描述5.查看宿主机与容器ip的对应关系:
docker inspect 96668a6d6e77 2ea2c4d14b57 a5e83594ce89 a3e232638c8d ada1dd8a217c 9d1dbad7d7a2 |grep IPAddress
在这里插入图片描述

宿主机容器
192.168.11.203:7001172.17.0.2:6379
192.168.11.203:7002172.17.0.3:6379
192.168.11.203:7003172.17.0.4:6379
192.168.11.203:7004172.17.0.5:6379
192.168.11.203:7005172.17.0.6:6379
192.168.11.203:7006172.17.0.7:6379

五、配置节点

1.任意进入一个redis,这里进的是7001

# 若提示 -bash: redis-cli: 未找到命令,复制一下再执行 redis-cli
cp /usr/local/redis/redis-cli /usr/bin/redis-cli

redis-cli
auth 123456789

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.配置糟点
查找redis-cli 文件的位置:find / -name redis-cli
在这里插入图片描述复制文件到脚本中指定的目录:cp /data/tools/redis_docker/redis-4.0.1/src/redis-cli /usr/local/redis/redis-cli
创建 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 123456789 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 123456789 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 123456789 CLUSTER ADDSLOTS $i
done
123456789101112131415161718192021

执行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 25bb050a854af5336dddf4f7167ac582e91a5b90
#CLUSTER REPLICATE后面跟的是172.17.0.6:6379的集群ID
/usr/local/redis/redis-cli -h 127.0.0.1 -p 7005 -a 123456789  CLUSTER REPLICATE 0ef8b95bd2ad1f9ae8557f844c8e28f5df8d8c13
#CLUSTER REPLICATE后面跟的是172.17.0.7:6379的集群ID
/usr/local/redis/redis-cli -h 127.0.0.1 -p 7006 -a 123456789  CLUSTER REPLICATE 74889988290fe402dca12a8a0c25719ecb3d24ef
123456

执行:
在这里插入图片描述
查看结果:成功!
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值