我们正在寻找在CI环境中执行Cassandra集群滚动升级的方法。
我们让Cassandra运行在许多虚拟机上。当虚拟机启动时,它会从池中分配一个随机IP地址。我们无法控制它来获取静态IP地址。我们也“不允许”登录到VM来运行Cassandra的手动升级。因此,为了升级,我们需要启动一个新的VM并在其上安装更高版本的Cassandra。
理想情况下,我们想:
我们考虑过使用cassandra.replace_node或cassandra.replace_node_first_boot,但是关于这些的文档强烈暗示(或说明)在使用这些节点时必须引导它,这意味着我们无法从旧节点复制数据(因为它会被忽略/覆盖/重复)。
是否有可能在不必引导节点的情况下做我们想做的事情?
(我们正在考虑静态IP地址的可能性 - 如果我们可以重用IP地址,那么该节点将显示为正在升级的节点 - 无需引导程序。但是,我们看起来不太可能拥有静态IP )。
答案 0 :(得分:0)
看起来其他人已经这样做了:
http://engineering.mydrivesolutions.com/posts/cassandra_nodes_replacement/
我们会尝试这一点,看看它对我们有多好。