k8s 有状态应用实践(Mysql)

有状态应用容器化设计方案

有状态应用解释

在分布式应用中,它的多个实例之间,往往有依赖关系,比如主从关系,主备关系。还有就是数据存储类应用,它的多个示例,往往都会在本地磁盘上保存一份数据。而这些实例一但被杀掉,即使重建出来,实例与数据之间的对应关系也已经丢失,从而导致应用失败。所以,这种实例不对等关系,以及实例对外部数据有依赖关系的应用,就被称为有状态应用 (Stateful Application)

有状态应用抽象

对于有状态应用,其实可以将其抽象为两种情况:

  • 拓扑状态:这种情况意味着,应用的多个实例之间不是对等关系,这些应用实例,必须按照某种顺序启动,比如节点A要先于节点B启动。如果将AB两个pod都删掉,再次启动也依旧得按照这个顺序,而且新创建出来的Pod。必须和原来的Pod的网络标识一样。这样原先的访问者可以使用同样的方法。访问到新的Pod
  • 存储状态:应用的多个实例分别绑定了不同的存储数据,对于这些应用实例来说。当应用因为某些原因导致了宕机,重启后依旧可以正常的读取到数据。

有状态应用特征

  • 稳定且唯一的网络标识
  • 稳定持久的存储
  • 有序,优雅的部署和伸缩
  • 有序,自动的更新

本次主要是针对数据存储类的有状态服务Mysql和Redis做在k8s的容器化,在第一阶段稳定后,可以继续拓展,囊括其他的服务如pika,influxdb 等。所以到这里我们可以先把目标缩小一点,改为存储应用容器化

存储应用容器化关键点

实现存储应用容器化主要有三个关键点,而这个三个关键点可以有多种实现方式,而这三种方式完全解耦。可以进行各种方式的组合。比如想要一个快速用起来,不考虑高可用的,可以支持。想要一个稳定且能用于生产高可用的也可以支持。

关键点
  1. 唯一网络标识

  2. 服务依赖关系(一主一从,一主N从)

  3. 数据持久化

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值