写点什么

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:412683
用户头像

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

关注

评论 1 条评论

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

JAVA SOCKET编程——TCP/UDP

乌龟哥哥

6月月更

Java String 构造方法中的内存分配

HoneyMoose

DingOS服务提交IPO配置指南

鼎道智联

前端 开发 IPO配置

社区文章|MOSN 构建 Subset 优化思路分享

SOFAStack

负载均衡 开源 开发者 算法

PHP开发的网站,如何实现批量打印快递单的功能?

迷彩

编程 记录 开发 php扩展 6月月更

Java 字符串引用(String Interning)

HoneyMoose

Eureka的InstanceInfoReplicator类(服务注册辅助工具)

程序员欣宸

Java SpringCloud 6月月更

DOM编程

大熊G

JavaScript 前端 6月月更

5道面试题,拿捏String底层原理!

码农参上

string 底层原理 死磕 Java 基础

智能合约dapp系统开发模式定制方案

开发微hkkf5566

如何使用物联网低代码平台进行报表管理?

AIRIOT

物联网 低代码平台

Java String 文字(Literal)和 对象(Object)初始化

HoneyMoose

一文走近ZMQ

No Silver Bullet

6月月更 ZMQ

Java自定义Once方法保障单次执行

FunTester

如何进行高效简洁的电子文档管理

小炮

缓存穿透利器之「布隆过滤器」

Ayue、

redis 布隆过滤器

【直播回顾】战码先锋第六期:共建测试子系统,赋能开发者提高代码质量

OpenHarmony开发者

OpenHarmony

DOM 节点

Jason199

DOM js DOM事件 6月月更

redis精讲系列介绍七-过期策略

Nick

Redis 核心技术与实战 6月月更 redis精讲 redis 过期策略 redis 底层原理

我对新能源汽车的一些看法(37/100)

hackstoic

新能源汽车 生活杂谈

Java String 性能和优化

HoneyMoose

Linux开发_curl调用网络接口

DS小龙哥

6月月更

今天,SysAK 是如何实现业务抖动监控及诊断?&手把手带你体验Anolis OS|第25-26期

OpenAnolis小助手

Linux sig 龙蜥大讲堂 开源贡献 社区运维

深圳java培训 | Java设计模式之建造者模式

@零度

设计模式 JAVA开发

Fabric.js IText 手动设置斜体 🎋

德育处主任

JavaScript 前端 canvas Fabric.js 6月月更

钟珊珊:被爆锤后的工程师会起飞|OneFlow U

OneFlow

自我介绍 实习

axios框架入门教程

倔强的牛角

axios 6月月更

Java String 手工引用指针

HoneyMoose

面试突击59:一个表中可以有多个自增列吗?

王磊

Java 面试

IDE 的主题应该用亮色还是暗色?终极答案来了!

胡说云原生

ide vscode IDEA goland ide主题

Gitlab运维篇之——备份及恢复

阿呆

#GitLab 备份恢复

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