手机版
你好,游客 登录 注册 搜索
背景:
阅读新闻

Spotify开源其Cassandra编排工具cstar

[日期:2018-10-17] 来源:infoq.com  作者:Diogo Carleto ,译者 谢丽 [字体: ]

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

Linux公社的RSS地址https://www.linuxidc.com/rssFeed.aspx

本文永久更新链接地址https://www.linuxidc.com/Linux/2018-10/154868.htm

linux
相关资讯       cstar  Cassandra编排工具 
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款