在Cassandra中动态添加新节点

时间:2012-11-04 14:09:40

标签: cassandra

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

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

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

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

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

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

1 个答案:

答案 0 :(得分:3)

是的可能。查看Netflix's Priam以获取动态cassandra集群管理的完整示例(但设计用于Amazon EC2)。

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

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

最困难的部分是以有效的方式管理分配给每个节点的令牌。 Cassandra 1.2即将推出,它将包含一个名为虚拟节点的功能,IMO将在您的情况下运行良好。请参阅Acunu presentation about it