Cassandra - 替换非死节点

时间:2017-06-26 09:16:04

标签: cassandra

我们正在寻找在CI环境中执行Cassandra集群滚动升级的方法。

我们让Cassandra运行在许多虚拟机上。当虚拟机启动时,它会从池中分配一个随机IP地址。我们无法控制它来获取静态IP地址。我们也“不允许”登录到VM来运行Cassandra的手动升级。因此,为了升级,我们需要启动一个新的VM并在其上安装更高版本的Cassandra。

理想情况下,我们想:

  • 关闭现有节点上的Cassandra;
  • 使用新版本的cassandra和新IP地址启动新节点;
  • 将数据从旧节点复制到新节点;
  • 启动新节点,因为它是旧节点(autobootstrap = false);
    • 这里可能需要一些Cassandra设置来告诉群集这是一个现有节点,沿着cassandra.replace_node但不需要autobootstrap = true)
  • 运行“nodetool upgradesstables”。

我们考虑过使用cassandra.replace_node或cassandra.replace_node_first_boot,但是关于这些的文档强烈暗示(或说明)在使用这些节点时必须引导它,这意味着我们无法从旧节点复制数据(因为它会被忽略/覆盖/重复)。

是否有可能在不必引导节点的情况下做我们想做的事情?

(我们正在考虑静态IP地址的可能性 - 如果我们可以重用IP地址,那么该节点将显示为正在升级的节点 - 无需引导程序。但是,我们看起来不太可能拥有静态IP )。

1 个答案:

答案 0 :(得分:0)

看起来其他人已经这样做了:

http://engineering.mydrivesolutions.com/posts/cassandra_nodes_replacement/

我们会尝试这一点,看看它对我们有多好。