Docker 部署 Redis 集群

一.创建 Redis 镜像

前置:Redis安装

1.编写Redis基础镜像Dockerfile

cd /usr/local/redis_docker
vim Dockerfile
#Redis Version 5.0.5
#指定基础镜像
FROM centos:7
#定义路径的环境变量
ENV REDIS_HOME /usr/local
#将Dockerfile同级目录下的redis-5.0.5.tar.gz复制到镜像的根目录
ADD redis-5.0.5.tar.gz / 
#创建安装目录,根据环境变量信息,实际的创建目录为:/usr/local/redis
RUN mkdir -p $REDIS_HOME/redis
#将Dockerfile同级目录下redis-5.0.5中的redis配置文件拷贝到容器的/usr/local/redis目录中
ADD redis-5.0.5/redis.conf $REDIS_HOME/redis/
RUN rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
#更新yum源
RUN yum -y update
#安装编译需要的工具
RUN yum -y install vim
RUN yum install -y gcc make
#指定工作目录
WORKDIR /redis-5.0.5
#移动编译后的redis-server到容器相关的目录,
RUN make
RUN mv /redis-5.0.5/src/redis-server  $REDIS_HOME/redis/
WORKDIR /
#删除解压文件
RUN rm -rf /redis-5.0.5
#安装编译完成之后,删除多余的gcc跟make
RUN yum remove -y gcc make
#添加数据卷
VOLUME ["/var/log/redis"]
#暴露6379端口
EXPOSE 6379

2.创建Redis基础镜像

docker build -t my/redis-cluster .   #后面这个.表示当前目录下的Dockerfile

3.编写Redis节点镜像Dockerfile

mkdir /usr/local/redis_docker/redis-node
cd /usr/local/redis_docker/redis-node
vim Dockerfile
FROM my/redis-cluster:latest
ENTRYPOINT ["/usr/local/redis/redis-server", "/usr/local/redis/redis.conf"]

4.创建Redis节点镜像

docker build -t redis-node .

5.查看Docker镜像

在这里插入图片描述

二.启动镜像

1.创建redis节点

docker run -d --name redis-node-0 -p 6379:6379 redis-node
docker run -d --name redis-node-1 redis-node
docker run -d --name redis-node-2 redis-node
docker run -d --name redis-node-3 redis-node
docker run -d --name redis-node-4 redis-node
docker run -d --name redis-node-5 redis-node

2.查看redis节点IP

docker inspect redis-node-0 redis-node-1 redis-node-2 redis-node-3 redis-node-4 redis-node-5 | grep IPA


在这里插入图片描述

3.查看容器

在这里插入图片描述

4.创建集群

进入安装目录执行如下代码:
➜ redis_docker cd redis-5.0.5/src

./redis-cli --cluster create 172.17.0.2:6379 172.17.0.4:6379 172.17.0.5:6379 172.17.0.6:6379 172.17.0.9:6379 172.17.0.10:6379 --cluster-replicas 1 -a pwd


在这里插入图片描述

5.连接redis集群

./redis-cli -p 6379-c -a pwd #-a访问服务端密码,-c表示集群模式

6.验证

在这里插入图片描述
在这里插入图片描述

7.查看节点

在这里插入图片描述

8.集群操作说明

CLUSTER INFO 打印集群的信息 
CLUSTER NODES 列出集群当前已知的所有节点(node),以及这些节点的相关信息。  
	   
//节点(node) 
CLUSTER MEET <ip> <port> 将 ip 和 port 所指定的节点添加到集群当中,让它成为集群的一份子。 
CLUSTER FORGET <node_id> 从集群中移除 node_id 指定的节点。 
CLUSTER REPLICATE <node_id> 将当前节点设置为 node_id 指定的节点的从节点。 
CLUSTER SAVECONFIG 将节点的配置文件保存到硬盘里面。 

//槽(slot) 
CLUSTER ADDSLOTS <slot> [slot ...] 将一个或多个槽(slot)指派(assign)给当前节点。 
CLUSTER DELSLOTS <slot> [slot ...] 移除一个或多个槽对当前节点的指派。 
CLUSTER FLUSHSLOTS 移除指派给当前节点的所有槽,让当前节点变成一个没有指派任何槽的节点。 
CLUSTER SETSLOT <slot> NODE <node_id> 将槽 slot 指派给 node_id 指定的节点,如果槽已经指派给另一个节点,那么先让另一个节点删除该槽>,然后再进行指派。 
CLUSTER SETSLOT <slot> MIGRATING <node_id> 将本节点的槽 slot 迁移到 node_id 指定的节点中。 
CLUSTER SETSLOT <slot> IMPORTING <node_id> 从 node_id 指定的节点中导入槽 slot 到本节点。
CLUSTER SETSLOT <slot> STABLE 取消对槽 slot 的导入(import)或者迁移(migrate)。  
   
//键 (key) 
CLUSTER KEYSLOT <key> 计算键 key 应该被放置在哪个槽上。 
CLUSTER COUNTKEYSINSLOT <slot> 返回槽 slot 目前包含的键值对数量。 
CLUSTER GETKEYSINSLOT <slot> <count> 返回 count 个 slot 槽中的键。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值