写点什么

Spotify 开源其 Cassandra 编排工具 cstar

  • 2018-10-15
  • 本文字数:1756 字

    阅读完需:约 6 分钟

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 有以下三种方式:

  • –seed-host 告诉 cstar 连接到特定的主机,从那里获取完整的环型拓扑,然后在集群中的所有节点上运行脚本;

  • –host 指定一个准确的主机列表;

  • –host-file 指向一个文件名,其中包含换行符分割的主机列表。

对于在 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", "name":"SNAPSHOT_NAME", "description":"Name of pre-upgrade snapshot", "default":"preupgrade"}
# C* argument: {"option":"--puppet-branch", "name":"PUPPET_BRANCH", "description":"Name of puppet branch to switch to", "required":true}
nodetool snapshot -t $SNAPSHOT_NAME
sudo puppet --branch $PUPPET_BRANCH
sudo service cassandra restart
nodetool upgradesstables

Cstar 库中提供了 cstar 命令的完整列表和更多信息。 查看英文原文: Spotify Open Sources cstar: its Cassandra Orchestration Tool

2018-10-15 17:412241
用户头像

发布了 1008 篇内容, 共 404.2 次阅读, 收获喜欢 345 次。

关注

评论 1 条评论

发布
暂无评论
发现更多内容

StarRocks 培训课程重磅上线!专家出品,助你升级打怪不走弯路!

StarRocks

如何看待:低代码开发平台的兴起无需经验?

快乐非自愿限量之名

低代码

对游戏语音软件Oopz遭遇DDoS攻击后的一些建议

网络安全服务

负载均衡 udp 语音聊天软件 DDoS 攻击 黑神话悟空

新闻“样板间”提升50%开发效率,20家新闻媒体应用批量鸿蒙化

最新动态

NGINX 和 HAProxy:基于公有云标准环境的用户体验测试对比

NGINX开源社区

读书笔记 开源 最佳实践 反向代理 HAProxy

GreatSQL 异步复制及搭建

GreatSQL

支撑AI的算力芯片,未来何去何从?

博文视点Broadview

如何留住自己的团队?

秃头小帅oi

洞悉市场脉搏,从实时监控商品信息开始 —— 淘宝API的力量

技术冰糖葫芦

API Explorer平台 api 网关 API Gateway API 测试 pinduoduo API

现在的 AI ,有多会做老师?

豆包MarsCode

Python 人工智能 程序员 AI 求职

关于粒子滤波的解析

芯动大师

粒子滤波

mac苹果电脑矢量绘图软件:Sketch for mac 中文激活版

你的猪会飞吗

sketch Mac Mac软件下载站 mac破解软件下载

GitHub Star 数量前 13 的自托管项目清单

NocoBase

GitHub 开源 自托管 self-hosted

华为视频独家呈现:发布会开场舞《见非凡》AiMax 版来袭

最新动态

如何高效的匹配、筛选数据,避免嵌套循环

六哥是全栈

Java ts 开发技巧

Go必知必会:掌握Go语言中的Channel,并发编程的核心

王中阳Go

并发 channel Go 语言 GO语言编程

替换传统数据处理平台,TDengine 与华风数据达成合作

TDengine

数据库 tdengine 时序数据库

鸿蒙NEXT生态应用核心技术理念:一次开发,多端部署

芯盾时代

鸿蒙 物联网 国产化替代

火山引擎携手招商银行共探智能体应用,加速数字金融创新

新消费日报

议程抢先看!安谋科技、英特尔、浪潮信息、蚂蚁集团等企业大咖齐聚 2024 云栖大会操作系统开源专场

OpenAnolis小助手

操作系统 云栖大会 龙蜥社区 龙蜥操作系统 AIibaba CIoud Linux

爱回收商品详情数据接口

tbapi

爱回收API 爱回收商品详情数据接口

参赛心得和思路分享:2021第二届云原生编程挑战赛2: 实现一个柔性集群调度机制

阿里云天池

云原生

互联网大厂Java面试高手心法,在寒潮之下找到自己心仪的 offer。

码哥字节

Java 后端面试

读书笔记:简单高效的工作方式

老张

读书笔记 团队管理 远程办公

对接开源大模型应用开发平台最佳实践

阿里云大数据AI技术

人工智能 LLM rag OpenSearch dify

化“腐朽”为“神奇”:5 种 RAG 优化技术应对千奇百怪的 Query

Baihai IDP

程序员 AI rag Baihai IDP 企业 9 月 PK 榜

Spotify开源其Cassandra编排工具cstar_DevOps & 平台工程_Diogo Carleto_InfoQ精选文章