学会用 Go 创建命令行工具
|
以上的命令,简单解释一下slaveof 就是让两个slave节点去复制container_name为redis-master的节点,这样就组成了一个简单的3个节点的主从架构 然后用命令行进入当前目录,直接敲命令docker-compose up即可,剩下的事情交给docker-compose去做就好,它会把我们所需要的节点全部启动起来。 此时我们还需要拿到刚刚我们启动的master节点的IP,简要步骤如下:
1.通过docker ps找到对应的master节点的containerID 通知调用的客户端master发生了变化 通知其余的原slave节点,去复制Sentinel选举出来的新的master节点 如果此时原来的master又重新恢复了,Sentinel也会让其去复制新的master节点。成为一个新的slave节点。 硬核教程 硬核教程旨在用最快速的方法,让你在本地体验Redis主从架构和Sentinel集群的搭建,并体验整个故障转移的过程。 前置要求
准备compose文件
首先需要准备一个目录,然后分别建立两个子目录。如下。 大部分?大哥这可是要上生产环境,大部分这个数量未免也太敷衍了,咱就不能专业一点? 前面提到的大部分哨兵同意涉及到两个参数,一个叫quorum,如果Sentinel集群有quorum个哨兵认为master宕机了,就「客观」的认为master宕机了。另一个叫majority... 等等等等,不是已经有了一个叫什么quorum的吗?为什么还需要这个majority? 你能不能等我把话说完... quorum刚刚讲过了,其作用是判断master是否处于宕机的状态,仅仅是一个「判断」作用。而我们在实际的生产中,不是说只「判断」master宕机就完了, 我们不还得执行「故障转移」,让集群正常工作吗? 同理,当哨兵集群开始进行故障转移时,如果有majority个哨兵同意进行故障转移,才能够最终选出一个哨兵节点,执行故障转移操作。 主观宕机&客观宕机 你刚刚是不是提到了「客观宕机」?笑死,难不成还有主观宕机这一说? Sentinel中认为一个节点挂了有两种类型:
当一个Sentinel节点与其监控的Redis节点A进行通信时,发现连接不上,此时这个哨兵节点就会「主观」的认为这个Redis数据A节点sdown了。为什么是「主观」?我们得先知道什么叫主观 未经分析推算,下结论、决策和行为反应,暂时不能与其他不同看法的对象仔细商讨,称为主观。
❞简单来说,因为有可能「只是」当前的Sentinel节点和这个A节点的网络通信有问题,其余的Sentinel节点仍然可以和A正常的通信。 (编辑:周口站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
