【问题标题】:Cassandra backup running on Kubernetes在 Kubernetes 上运行的 Cassandra 备份
【发布时间】:2017-07-07 07:50:06
【问题描述】:

我有一个在 Kubernetes 上运行的由 3 个 Cassandra pod 组成的集群。我想自动备份我的数据,为此我需要在每个容器内运行 nodetool snaphot 命令,并且我需要远程调用它。从架构的角度来看,正确的方法是什么? 我是否需要修改 cassandra 映像以在其中包含 ssh 守护进程,或者我是否需要在 cassandra pod 中包含辅助容器或通过“kubectl exec”Kubernetes API 调用来执行此操作?其他选择?

【问题讨论】:

  • sidecar 类型的模式似乎是目前解决此用例的一种方法。有一个正在开发中的快照 API (github.com/kubernetes/kubernetes/issues/44172),您将来应该可以使用它。
  • @AnirudhRamanathan 感谢您的回答。我也考虑过边车模式,但对我来说有很多开销(运行 nodetool 需要 java 和 python),并且每个 cassandra 容器都需要它。不确定 k8s 快照 API 是否会对我有所帮助,因为在进行快照之前,我仍然需要告诉 cassandra 将内存中的所有内容刷新到磁盘。

标签: kubernetes database-backups


【解决方案1】:

我认为 k8s cronJob 资源 - 是您通过 nodetool 备份数据所需要的。通常,cronJob 包含 jobTemplate 部分和 spec 部分。 spec 部分又具有容器定义,与Deployment 中的几乎相同。您可以在其中使用 nodetool 构建自己的 docker 映像(或尝试在 dockerhub 上找到某个位置)并使用您自己的特定配置运行它。

更多信息: https://kubernetes.io/docs/tasks/job/automated-tasks-with-cron-jobs/

【讨论】:

    猜你喜欢
    • 2017-08-24
    • 1970-01-01
    • 1970-01-01
    • 2017-04-13
    • 1970-01-01
    • 2018-08-15
    • 1970-01-01
    • 1970-01-01
    • 2013-01-12
    相关资源
    最近更新 更多