Redis学习第六天

Redis集群搭建实战

如何搭建基于主从复制下的Redis集群?本文将用Docker容器搭建一主二从模式的集群。

Docker,启动!

好好好,上来就报错!作者这个错误应该还蛮常见的。

很明显:address already in use,那到底是什么原因端口被占用呢?作者参考的是这一片文章:https://cloud.tencent.com/developer/article/1670358

原来是作者之前虚拟机本机已经启动redis了,再在docker上启动会导致6379端口冲突。这样就可以有两种解决方案,一种是停止本机redis服务,一种是更换redis-master容器的ip(或者干脆再创建一个新的),对于第一种方法,作者是这样做的:

首先找到本机redis的redis-server的位置。

根据该位置,使用shutdown命令停止redis服务。

经过端口检查,现在终于没有程序占用6379端口了。可是,作者当时忽略了一个问题,就是其实redis-master容器创建时虽然报错,但已经创建成功了:

状态是Created既不是退出Exited,也不是运行Up。说明这是另一种特殊的状态,创建是创建出来了,但是因为端口被占,所以无法正常运行。就是因为这个Created,导致以下问题:

所以要恢复redis-master容器的6379端口,就要把原先Created但是无法运行的redis-master删除,然后重新创建。这一步对应上图"You have to remove that containter"的内容。

一般来说,删除container需要先将其停止,再删除。但是目前的redis-master是Created状态,还不能运行呢!所以直接删了!

其中rm后面是容器的id,可以通过docker ps -a命令查看,第一列就是。

删了之后重新创建,舒服了。通过查看master的IP和容器状态,发现master容器已成功运行。

总而言之,作者先把本机的redis服务停止,再删除Created态的redis-master容器,再重新创建。其实不如直接删了,然后重新创建端口不一样的redis-master容器。

同样操作配置redis-slave2,实操部分作者不想写太多。


这种集群还有另一种方法,通过配置文件,就是对每个从节点先设置配置文件,再结合配置文件创建slave容器。

这个配置文件可以更改该容器的端口,这样可以在slave容器中就可以不使用默认的6379了,可以更好地与master区分。

也可以通过配置文件修改读写分离效果,默认状态下slave是READONLY,可以在配置文件中增加slave-read-only no选项指定该slave服务器可读可写。

另外,还可以通过配置文件修改心跳机制: 

通过增加这两个参数,可以设置主从复制停止阈值。从服务器数量低于阈值 或者 有部分从服务器(从服务器数量阈值)没有心跳,主从复制过程都会停止。


哨兵模式

基本概念

简而言之,主服务器状态难以检测,不利于突发情况下的数据恢复。而哨兵负责监听主从服务器状态,主挂掉之后快速选择从服务器升级替代。这个哨兵本质上就是哨兵进程,或者说哨兵服务器。

哨兵机制需要与主从模式结合,因为哨兵只有监视作用,不能存储处理数据。多个主从集群,也有多个哨兵:

实际操作

哨兵模式需要使用配置文件进行集群部署

作者后来去看docker compose和k8s了,这部分等后面再写吧。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Joy T

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

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

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

打赏作者

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

抵扣说明:

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

余额充值