我正准备将节点从 3.11.17 升级到 4.1.7。我已经手动成功完成了一些开发节点的升级,但我想使用 Ansible 使此过程更具可重复性。我在 Ubuntu 服务器上运行,因此我必须与 apt 自动启动服务作斗争。想知道在不让 apt 向我抛出默认文件并可能弄乱东西的情况下,进行这些升级的最正统流程是什么。我的想法是:
- 排空并停止一个节点
- 我必需的 cassandra.yaml 和 rack 属性文件中的模板
- 安装 Cassandra 4.1.7
- 应对 apt 自动启动 cassandra
这是否意味着灾难?我的数据不在来自软件包维护者的配置的默认路径 (/var/lib/cassandra) 中,并且我的一些配置变量在 4.1 中不再存在,所以我预计 Cassandra 会在启动时崩溃,并看到无法识别的变量(我在开发测试中遇到过)。我真正想要的是安装 Cassandra 并在开始之前仔细检查一下,但我没有这种奢侈。在多次测试中,成功安装后立即停止 Cassandra 不起作用,Cassandra 会继续存在。
这实际上更像是一个 Debian 问题,它是 Cassandra,但我确实同意您的观点,最好在 Cassandra 包升级时不要自动启动该服务。
您需要配置 Ubuntu 以禁用自动启动,以便您拥有完全控制权并可以使用新设置手动配置 Cassandra。
我应该补充一点,您不能将 Cassandra 3.11 版本
cassandra.yaml
与 C* 4.1 一起使用,正如您在测试中已经发现的那样。您需要从 C* 4.1 配置文件的新副本开始,并根据您执行的测试使用新设置配置新属性。另请注意,JVM 选项已移至
conf/jvm8-server.options
Cconf/jvm11-server.options
* 4.0 ( CASSANDRA-9608 )。请熟悉中记录的
NEWS.txt
C* 3.11 和 4.0 + 4.1 之间所有必要的升级步骤。即使您直接从 3.11 升级到 C* 4.1,4.0 中的某些步骤仍可能适用于您的集群。干杯!