Spotify最近开源了其Cassandra编排工具cstar。Cstar是一个命令行工具,用于在Cassandra集群中的所有主机上运行脚本。

\\

Cstar的出现是为了在Cassandra节点中运行shell命令。这些shell命令通常与性能、安全性、一致性、升级等相关。

\\

据Spotify称,2017年,Spotify Cassandra fleet达到了3000个节点;从那时起,安全高效地运行shell命令的需求变得越来越迫切。比如,整个Cassandra fleet的计划升级就是其中一项噩梦般的任务,该过程需要以下步骤:

\\

  • 清理所有快照(以便有足够的磁盘空间来完成升级)\
  • 生成一个新的快照(以便可以回滚)\
  • 禁止puppet自动运行\
  • 停止Cassandra进程\
  • 从git库的一个自定义分支运行puppet,以便可以升级程序包\
  • 再次启动Cassandra进程\
  • 把system.schema_columnfamilies升级为JSON格式\
  • 运行 `nodetool upgradesstables`,根据节点上数据量的不同,这个过程可能需要几个小时才能完成\
  • 删除回滚快照\

此外,在操作Cassandra fleet时还存在一系列其他相关的问题,如网络故障、ssh连接中断、cpu密集型操作、Cassandra进程/节点重启而不影响性能和可用性,或部分完成执行处理(任务仅在某些节点中成功)。

\\

在Spotify的早期,在Cassandra节点上运行命令的最常见方式是在多个终端中键入命令。

\\

Cstar的目标是解决这些问题。要使用cstar,所有涉及到的机器都应该使用类UNIX系统,如OSX或Linux,并且运行cstar的机器必须有python 3。

\\

Cstar通过cstar命令运行,如下所示:

\\

\# cstar COMMAND [HOST-SPEC] [PARAMETERS]

\\

HOST-SPEC指定在哪个节点上运行脚本。指定HOST-SPEC有以下三种方式:

\\

  • \\t\--seed-host告诉cstar连接到特定的主机,从那里获取完整的环型拓扑,然后在集群中的所有节点上运行脚本;\\t\
  • \\t\--host指定一个准确的主机列表;\\t\
  • \\t\--host-file指向一个文件名,其中包含换行符分割的主机列表。\\t\

\\\对于在Cassandra主机上运行的每个命令,cstar会自动保存标准输出、错误和退出状态。结果(作业状态)保存在运行cstar的计算机上的用户主目录.cstar/jobs/JOB_ID/HOSTNAME下。\\\

下面是集群上的一些CLI命令示例:

\\

\# cstar run --command='service cassandra restart' --seed-host some-host\# cstar puppet-upgrade-cassandra --seed-host some-host --puppet-branch=cass-2.2-upgrade\

\\\下面是一个脚本示例,该脚本通过在不同的分支上运行puppet来升级Cassandra集群,然后重新启动节点,最后升级sstable文件:\\

\# !/usr/bin/env bash\# C* cluster-parallel: true                                                                                                                                                                                    \# C* dc-parallel: true                                                                                                                                                                                         \# C* strategy: topology                                                                                                                                                                                        \# C* description: Upgrade one or more clusters by switching to a different puppet branch                                                                                                                       \# C* argument: {\"option\":\"--snapshot-name\

Spotify开源其Cassandra编排工具cstar相关推荐

  1. 再见了VMware、Docker,这个免费开源的容器编排工具不香吗?

    身为让容器应用实现大规模工业生产的一大功臣,过去几年,Kubernetes  势头迅猛,BAT.京东.美团.字节都走上了全域容器化部署以及云原生架构的康庄大道. 美团技术团队云原生演进之路 如果你认为 ...

  2. 简单的Docker编排工具TOSCA

    时下Docker编排工具一瞥 从<Docker orchestration>这篇有趣的文章中,我们要思考为什么需要编排工具?基本的前提是,编排工具扮演了创建基于应用的容器及其层依赖的时间编 ...

  3. Spotify如何使用Cassandra实现个性化推荐

    在Spotify我们有超过6000万的活跃用户,他们可以访问超过3000万首歌曲的庞大曲库.用户可以关注成千上万的艺术家和上百个好友,并创建自己的音乐图表.在我们的广告平台上,用户还可以通过体验各种音 ...

  4. 开源大数据处理系统/工具大全

    查询引擎 一.Phoenix 贡献者::Salesforce 简介:这是一个Java中间层,可以让开发者在Apache HBase上执行SQL查询.Phoenix完全使用Java编写,代码位于GitH ...

  5. 最全的30+个开源免费的Docker工具

    容器生态系统的发展和扩展速度越来越快速,并且已经有了许多的Docker工具和服务,想要知道所有的有用选择,你会发现基本很难完成. 无论您是初学者还是专家,开发人员或DevOps工程师,SRE或平台架构 ...

  6. 云计算:OpenStack、Docker、K8S(Kubernetes容器编排工具)的演进史 | 附推荐阅读

    目录 引子 OpenStack 的诞生 OpenStack 是什么 Docker 的出现 K8S(Kubernetes) - 为 Docker 而生 推荐阅读 引子 作为一名程序员,设计程序架构.优化 ...

  7. NOMAD 与 KUBERNETES:比较容器编排工具——翻译版

    原文地址:https://www.imaginarycloud.com/blog/nomad-vs-kubernetes/?fbclid=IwAR1VgUJ4ikO30sDaZv7c9WYaVSPPo ...

  8. 容器编排工具—Kubernetes

    概述 Kubernetes由google通过go语言基于borg(google内部自研发自用的资源管理器,根据当时K8s面世的时间,brog已在google内部运行长达10年以上)进行重写的容器资源管 ...

  9. 容器编排工具与 Kuberneters

    1. 什么是容器编排 试想这样的场景: 我们使用 Docker 运行一个服务应用,当负载增加,单一实例无法满足需要时,我们就得增加这个实例部署的数量,并配置容器间负载均衡,而所有这些操作都需要我们手动 ...

最新文章

  1. [转]Eclipse中的Web项目自动部署到Tomcat
  2. 使用CSS完美实现垂直居中的方法
  3. jpa报错No property found for column ‘first_time‘ mapped to field ‘first_time‘
  4. 闲鱼疯转6800份!大厂内部数据分析资料首公开!
  5. Django Rest Framework 视图和路由
  6. 15分钟了解Apache Phoenix(HBase的开源SQL引擎)
  7. 物理学家张首晟:如果世界末日来临,我会带这几句话上诺亚方舟|研习社演讲实录...
  8. css提取页面元素唯一性_下面这个函数,能够获取一个元素的任意 CSS 属性值。...
  9. OneNote使用技巧及运用
  10. Python Tkinter教程–第1部分
  11. 用华秋DFM处理Allegro PCB文件
  12. 航芯技术分享 | 一文读懂汽车CAN总线技术原理(下)
  13. oracle公司的crm系统,原创-CRM客户关系管理系统设计-jsp+oracle
  14. python 缺失值随机性检验_SPSS缺失值:缺失值分析
  15. 802.11 Tx Rate Control
  16. hellow windows
  17. 一切皆服务:以蓝天的角度看待云
  18. JavaScript 事件委托
  19. ai人工智能培训老师讲师NLP自然语言处理讲师叶梓:人工智能之最新NLP自然语言处理技术与实战-10
  20. 概率图模型(马尔可夫模型)

热门文章

  1. Android中怎样使用MediaPlayer播放byte数组音频文件
  2. Android中使用getDrawable时提示:Call requires API level 21(current min is 15)
  3. C#中File类的常用读取与写入文件方法的使用
  4. MyBatisPlus条件构造器实现降序排序的两种方式
  5. One more sprint? 再加一个迭代?-英文
  6. flutter Web打包
  7. 直击「神策 2021 数据驱动大会」五大论坛,精彩不断
  8. 直播报名 | 用户中台建设实践解析
  9. 喜报 | 链家签约神策数据,让数据“说话”更精准
  10. 为不同目录设置Forms身份验证