Redis的保姆级安装Docker单机与redis集群版

1.Docker安装redis单机版

1.1、在github上拉去redis.6.2.7的镜像

docker pull redis:6.2.7
  • : 后面是你拉取的版本号
    在这里插入图片描述
    此时我们已经有镜像了,在启动之前,我们防止数据丢失,我们需要对容器进行加载容器卷

1.2,在宿主机也就是centos下新建一个文件夹,存放我们的redis.conf

mkdir -p /app/redis

1.3将一个redis.conf文件模板拷贝进/app/redis目录下

cp /etc/redis.conf /app/redis/

在这里插入图片描述

1.4将一个/app/redis目录下修改redis.conf文件

1.# 开启密码验证:aliyun的需要设置,防止挖矿
requirepass 123456
2.#允许redis外地连接
注释掉 # bind127.0.01
3.守护进程关闭
daemonize no
4.开启数据持久化
appendonly yes

在这里插入图片描述

1.5使用redis6.2.7镜像创建容器(运行镜像)

docker run  -p 6379:6379 --name myr3 --privileged=true -v /app/redis/redis.conf:/etc/redis/redis.conf -v /app/redis/data:/data -d redis:6.2.7 redis-server /etc/redis/redis.conf
  • 测试redis6.2.7是否能够连接
docker exec -it myr3 /bin/bash
redis-cli

在这里插入图片描述

2.redis集群版配置

2.1新建6个容器

  • 这里采用3主3从的配置,首先我们需要关闭防火墙,在创建6个docker容器实例
关闭防火墙:
systemctl stop firewall
  • 后台运行6个redis容器
docker run -d --name redis-node-1 --net host --privileged=true -v /data/redis/share/redis-node-1:/data redis:6.2.7 --cluster-enabled yes --appendonly yes --port 6381
 
docker run -d --name redis-node-2 --net host --privileged=true -v /data/redis/share/redis-node-2:/data redis:6.2.7 --cluster-enabled yes --appendonly yes --port 6382
 
docker run -d --name redis-node-3 --net host --privileged=true -v /data/redis/share/redis-node-3:/data redis:6.2.7 --cluster-enabled yes --appendonly yes --port 6383
 
docker run -d --name redis-node-4 --net host --privileged=true -v /data/redis/share/redis-node-4:/data redis:6.2.7 --cluster-enabled yes --appendonly yes --port 6384
 
docker run -d --name redis-node-5 --net host --privileged=true -v /data/redis/share/redis-node-5:/data redis:6.2.7 --cluster-enabled yes --appendonly yes --port 6385
 
docker run -d --name redis-node-6 --net host --privileged=true -v /data/redis/share/redis-node-6:/data redis:6.2.7 --cluster-enabled yes --appendonly yes --port 6386

上述命令的解释图:
在这里插入图片描述

2.2进入容器redis-node-1并为6台机器构建集群关系

docker exec -it redis-node-1 /bin/bash
  • 构建主从关系

这里需要注意自己的真实ip地址,也就是连接虚拟机的

redis-cli --cluster create 192.168.117.128:6381 192.168.117.128:6382 192.168.117.128:6383 192.168.117.128:6384 192.168.117.128:6385 192.168.117.128:6386 --cluster-replicas 1
  • cluster-replicas 1代表主从节点是对半开的
  • 以6381为节点进去查看节点的信息
cluster info
cluster nodes

在这里插入图片描述

2.3数据的读写与储存

  • 防止路由失效加参数-c并新增两个key
redis-cli -p 6381 -c
  • 查看集群信息
redis-cli --cluster check 192.168.117.128:6381

在这里插入图片描述

2.4 容错切换迁移

  • 主机6381和从机切换,先停止6381,此时从机会进行上位
  • 再次查看集群信息:redis-cli -p 6382 -c ; cluster nodes

-在这里插入图片描述

  • 查看集群状态
redis-cli --cluster check 192.168.117.128:6381

2.5 主从扩容案例

这里我们主要提供的是,在集群中我们数据是通过哈希槽进行取余的,因此当我们新增一台服务器的时候,哈希槽是需要变化的,相当于16384初一主机台数就是每一台的哈希值

  • 这里我们新建6387,6388两个节点+新建后启动+查看是否有8个节点
docker run -d --name redis-node-7 --net host --privileged=true -v /data/redis/share/redis-node-7:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6387

docker run -d --name redis-node-8 --net host --privileged=true -v /data/redis/share/redis-node-8:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6388

docker ps

  • 进入6387的容器实例中
    docker exec -it redis-node-7 /bin/bash

  • 将新增的6387节点作为master节点加入原集群
    redis-cli --cluster add-node 192.168.117.128:6387 192.168.117.128:6381

redis-cli --cluster add-node 自己实际IP地址:6387 自己实际IP地址:6381
6387 就是将要作为master新增节点
6381 就是原来集群节点里面的领路人,相当于6387拜拜6381的码头从而找到组织加入集群
  • 此时我们在检查一遍集群状况,看是否添加进集群
redis-cli --cluster check 192.168.117.128:6387

在这里插入图片描述

  • 此时节点7还么分配槽号,重新分配槽号
# 重新分派槽号
命令:redis-cli --cluster reshard IP地址:端口号
redis-cli --cluster reshard 192.168.111.147:6381
  • 为主节点6387配置从节点6388
命令:redis-cli --cluster add-node ip:新slave端口 ip:新master端口 --cluster-slave --cluster-master-id 新主机节点ID
 
redis-cli --cluster add-node 192.168.111.147:6388 192.168.111.147:6387 --cluster-slave --cluster-master-id e4781f644d4a4e4d4b4d107157b9ba8144631451-------这个是6387的编号,按照自己实际情况
  • 此时在检查集群状态,发现主从已经配好,哈希槽值也已经配好
    redis-cli --cluster check 192.168.117.128 6382

2.6 主从缩容

当我们不需要这么多集群的时候,我们需要进行缩容,缩容与扩容类似

  • 目的:== 将6387,6388下线,同时将槽位归还==
  • 1.将6388从集群中进行删除
命令:redis-cli --cluster del-node ip:从机端口 从机6388节点ID
 
redis-cli --cluster del-node 192.168.111.147:6388 5d149074b7e57b802287d1797a874ed7a1a284a8

在这里插入图片描述

  • 2.将6387的槽号清空,重新分配,本例将清除来的槽号都给6381
redis-cli --cluster reshard 192.168.117.128:6381

在这里插入图片描述

  • 检查集群情况第二次
redis-cli --cluster check 192.168.111.147:6381
 
4096个槽位都指给6381,它变成了8192个槽位,相当于全部都给6381了,不然要输入3次,一锅端
  • 将6387进行删除,在检查集群情况
命令:redis-cli --cluster del-node ip:端口 6387节点ID
 
redis-cli --cluster del-node 192.168.111.147:6387 e4781f644d4a4e4d4b4d107157b9ba8144631451

在这里插入图片描述

  • 到这里集群版的redis就讲解完毕了,需要多加练习才行鸭!!!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李知恩真爱粉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值