在Cassandra中动态添加新节点

Lyu*_*rov 9 cassandra

是否可以动态地将新主机添加到Cassandra集群?

我要做的是设置一个程序,可以:

  • 为每个用户设置数据库的本地版本
  • 每个用户的计算机将成为群集的一部分(计算机将成为主机)
  • 数据将在所有集群中复制

构建多个主机的集群通常需要配置cassandra.yaml来存储每个主机的种子,listen_address和rpc_address.

我的想法是通过java编辑这些文件并根据需要插入新的主机地址,但确保每个用户的cassandra.yaml文件中的数据准确是很有挑战性的.

我想知道是否有人做过类似的事情或者有更好的方法来达到这个目的.

lst*_*ern 4

是的,这是可能的。查看Netflix 的 Priam,了解动态 cassandra 集群管理的完整示例(但旨在与 Amazon EC2 配合使用)。

对于 rpc_address 和 Listen_address,如果不正常,您可以设置一个启动脚本来配置 cassandra.yaml。

对于种子,您可以配置自定义种子提供程序。查看用于 Netflix Priam 的种子提供程序,了解如何实现它的一些想法

最困难的部分是以有效的方式管理分配给每个节点的令牌。Cassandra 1.2 即将推出,并将包含一个称为虚拟节点的功能,在我看来,该功能将非常适合您的情况。请参阅Acunu 的相关演示