Cassandra 集群中的 IP 交换

Posted

技术标签:

【中文标题】Cassandra 集群中的 IP 交换【英文标题】:IP swapping in Cassandra cluster 【发布时间】:2019-12-18 12:27:05 【问题描述】:

我们有运行良好的 3 个节点的 cassandra 集群,但由于某些问题,我们需要交换所有 3 个节点的 IP 地址。

所以基本上,我们想将旧的 cassandra 服务器 IP 地址交换为新的 cassandra 服务器 IP 地址。 我的问题是:-

1) 我们需要遵循什么特定程序来避免任何问题吗?

2) 或者只是修改 rpc_address、listen_address、seeds、peers 表等并启动 cassandra 节点?

请帮忙,谢谢

【问题讨论】:

【参考方案1】:

您已经确定了要采取的大部分步骤。此外,请确保一次执行一个节点的步骤:

    cassandra.yaml 中更新 rpc_address、listen_address、种子和对先前 IP 地址的任何引用。另外,请确保 auto_bootstrap 设置为 false(默认情况下,该指令被省略,默认值为 true)。 根据您的安装情况,还可以查看cassandra-topology.propertiescassandra-rackdc.properties 停止 cassandra 服务 更改盒子的IP地址(即ifconfig,添加新路由等) 在cassandra-env.sh 中包含以下指令和先前的IP 地址: JVM_OPTS="$JVM_OPTS -Dcassandra.replace_address=previous_ip_address 在节点中启动 Cassandra 服务。等到nodetool status 报告为UN,您应该注意到报告了新的IP 地址 如果您在cassandra.yml 中添加了auto_bootstrap 指令,请将其删除\ 从cassandra-env.sh 中删除cassandra.replace_address 指令 在不同的节点重复

【讨论】:

感谢@Carlos,但如果我没记错的话,您似乎在谈论节点替换。我的问题是节点相同,只需更改它们的 IP 地址。根据您的观点 1. 以前 IP 地址的任何引用。我们如何识别? 其实这个过程类似于更换一个下线的节点。我刚刚用 IP 地址何时更改的信息编辑了答案 但是以前的IP地址现在不存在了,那么我们如何在cassandra-env.sh中引用呢? IP地址变更已经发生了?集群在运行吗?你有什么错误吗? 尚未更改。我们计划在我的启动和运行的 cassandra 节点中分配新的 IP 地址。这就是为什么我要问正确的程序。如果我们将分配一个新的 IP 地址,那么旧的将不存在?那我们怎么参考呢?希望你能理解我的担忧。

以上是关于Cassandra 集群中的 IP 交换的主要内容,如果未能解决你的问题,请参考以下文章

cassandra.yaml中的群集配置问题,用于多节点群集,其中只有1个公共IP

Cassandra集群管理-替换异常节点

Meet Professor Cassandra Fraser

Cassandra 更新无法正常工作

Cassandra 数据模型

cassandra集群缩容与剔除问题节点