zoukankan      html  css  js  c++  java
  • Kubernetes-基于helm安装部署高可用的Redis及其形态探索

     首先是一些关于redis的介绍和其在K8S上的安装过程:https://www.kubernetes.org.cn/3974.html

    1.1部署形态

    通过上述地址的教程,可以完成redis 的安装和使用。本文主要是要阐述一些社区版的redis-ha的形态探索。

    这是我按照上述教程安装的例子,可以看到,默认是安装1主+2从,这是3节点的配置。同时,每个redis-server和一个redis-sentinel安装在一个节点,也就有了三个redis-sentinel。

    1.2主从切换

    首先,我们通过kubectl get svc -n default的方式来获取redis的网络情况。(n为namespace,请根据自己情况进行更改)

    然后,我们通过redis-cli的方式来访问redis的master实例,并获取Replication的状态。

    从上图中,我们可以看出,redis master有两个slave,同时,可以看到他们的ip和pod ip是对应的。(注意,这里我们是在宿主机上,通过master的clusterIP访问的,而非redis pod的)

    我们进入到redis的master server的pod中,kill掉redis server进程,因为pod存活条件应该是以redis来判断的(有的是ping 6379这个端口,这里暂时还不知道是怎么判断的。),这个时候因为我们kill掉了redis进程,所以k8s认为这个pod需要重启,所以退出了bash。

    注意,这里显示的以slave的方式启动,应该是因为我之前曾经做过类似的操作,这个节点之前是个从节点,是在一个master节点被kill掉之后才提升成为的主节点。sentinel info可以证实这一点。

     稍等片刻后,我们可以看到已经完成了主从切换,同时我们依然可以通过之前的redis master的clusterIP来访问redis的master实例。(请观察此图与上面那个图片的role变化,和sentinel中的address变化)

     可见,当master的pod因为某种原因down掉了之后,k8s会通过sentinel选择一个新的master节点,并更新master的clusterIP指向新的master的podip,以便对上层应用做成无感切换。下图依然通过master的clusterIP来访问redis的master实例。

     今天先到这里,本次主要是讲述了k8s通过helm安装的redis-ha进行主从切换对于业务和K8S的影响,之后会探索redis-ha的master,slave和sentinel的配置。

    更多openstack/trove的文章:http://www.cnblogs.com/S-tec-songjian/

    此文章属博客园用户S-tec原创作品,受国家《著作权法》保护,未经许可,任何单位及个人不得做营利性使用;若仅做个人学习、交流等非营利性使用,应当指明作者姓名、作品名称,原文地址,并且不得侵犯作者依法享有的其他权利。

  • 相关阅读:
    业务层和数据层
    Android开发学习总结——Android开发的一些相关概念(转)
    Android开发学习总结(五)——Android应用目录结构分析(转)
    Android开发学习总结(六)—— APK反编译(转)
    微信开发学习总结(一)——微信开发环境搭建(转)
    PowerMockito使用详解(转)
    java堆栈 (转)
    windows 7 SDK和DDK下载地址
    Linux pipe函数
    火星人的数学观(4)
  • 原文地址:https://www.cnblogs.com/S-tec-songjian/p/9354828.html
Copyright © 2011-2022 走看看