【问题标题】:Fault Tolerance and Kubernetes StatefulSet容错和 Kubernetes StatefulSet
【发布时间】:2021-10-16 19:28:17
【问题描述】:
据我了解,大多数数据库都支持使用可以从领导者那里接管的副本,以防领导者不可用。
我想知道在使用 StatefulSet 时在 Kubernetes 环境中拥有这些副本的必要性。一旦 pod 无响应,Kubernetes 会重新启动它,对吗? PVC 将确保数据不会丢失。
领导选举是不是比启动新应用程序更快?
或者说副本的唯一优势是为读取查询提供负载平衡?
【问题讨论】:
标签:
kubernetes
distributed-system
fault-tolerance
【解决方案1】:
据我了解,大多数数据库都支持使用可以从领导者那里接管的副本,以防领导者不可用。
我想知道在使用 StatefulSet 时在 Kubernetes 环境中拥有这些副本的必要性。
已从以前的单节点数据库迁移到分布式数据库。分布式数据库通常使用集群中的 3 或 5 个副本/实例运行。这样做的主要目的是高可用性和容错性,例如节点或磁盘故障。如果数据库运行在 Kubernetes 上也是一样的。
PVC 将确保数据不会丢失。
PVC 的目的是将应用程序配置与存储系统的选择解耦。这允许您例如尽管您将使用不同的存储系统,但可以在 Google Cloud、AWS 和 Minikube 上部署相同的应用程序而无需任何不同的配置。这不会改变存储系统的工作方式。
领导选举是不是比启动新应用程序更快?
许多不同的事情都可能失败,节点、存储系统或网络可以被分区,这样你就无法到达某个节点。
领导者选举只是集群设置中针对这些问题的一种缓解措施,您还需要以一致的方式复制所有数据。 Raft consensus algorithm 是现代分布式数据库中常见的解决方案。
或者说副本的唯一优势是为读取查询提供负载平衡?
这在分布式数据库中可能是一个优势,是的。但根据我的经验,这很少是使用它们的主要原因。