【问题标题】:Active MQ in HA Shared Database (Master/Slave) on Kubernetes with StatefulSet具有 StatefulSets 的 Kubernetes 上的共享数据库(主/从)中的 Activemq
【发布时间】:2022-02-22 16:58:58
【问题描述】:

我正在 Kubernetes 上的 HA 中部署 ActiveMQ 5.15。以前我使用的是部署和clusterIP 服务。它工作正常。主机将启动,从机将等待获取锁。如果我删除了作为 master 的 pod,slave 会拿起并成为 master。

现在我想基于this thread 尝试使用statefulset。 部署成功完成,并使用id0id1 创建了两个 pod。但我注意到两个 pod 都是 master。他们都开始了。我还注意到在Statefulset 的情况下创建了两个PVC id0id1,而deployment 只有1 个PVC。由于它不再是共享存储,这可能是问题吗?我们还能用Statefulset 实现主/从设置吗?

【问题讨论】:

  • 我不清楚像这样的 HA 配置在 K8s 等托管环境中是否有意义。 HA 的目标是让一个代理的失败导致另一个代理的启动。但是,在 K8s 中,如果 ActiveMQ pod 出现故障,那么 K8s 将重新启动它,提供与 ActiveMQ 的传统 HA 配置基本相同的功能,但配置复杂性更低,并且没有空闲的 pod 等待故障。您能否详细说明传统 HA 配置相对于 K8s 基本监控/重启功能的优势?
  • 虽然非常好。由于我们已经在使用副本计数为 1 的部署,因此如果 pod 失败/终止。 Kubernetes 将重新启动或创建一个新的。同意你的观点。

标签: kubernetes activemq kubernetes-statefulset


【解决方案1】:

我还注意到,与只有 1 个 PVC 的部署相比,在 statefulset 的情况下创建了两个 PVC id0 和 id1。由于它不再是共享存储,这可能是问题吗?

你是对的。在使用 k8s StatefulSets 时,每个 Pod 都有自己的持久化存储(专用 PVC 和 PV),并且这个持久化存储不共享。

当一个 Pod 被终止并在不同的节点上重新调度时,Kubernetes 控制器将确保该 Pod 与同一个 PVC 关联,从而保证状态完好。

在您的情况下,要实现主/从设置,请考虑使用共享网络位置/文件系统进行持久存储,例如:

检查complete list of PersistentVolume types currently supported by Kubernetes(作为插件实现)。

【讨论】:

  • 所以我们不能使用 statefulset 对吗?所以我们仍然使用部署和 pvc。
  • @ashley,请检查此example。他们创建了一个简单的 StatefulSet 并从所有 pod 写入存储在 EFS 上的一个文件。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-12-17
  • 2021-11-10
  • 2017-10-10
  • 1970-01-01
  • 1970-01-01
  • 2014-03-28
  • 1970-01-01
相关资源
最近更新 更多