2016-04-09 138 views
-1

我正在编写一个自动化脚本,该脚本应该在AWS中创建4个实例,并在其上部署rethinkdb集群而无需任何人为干预。根据文档,我需要在命令行上使用--join参数或将join语句放在配置文件中。但是,我不明白的是,如果我只需要指定join一次以创建群集,或每次重新启动任何群集节点时?创建rethinkdb集群

我现在的理解是,我只需要一次发出它的群集配置以某种方式存储在元数据和下一次我就可以开始rethinkdb没有--join参数,它会重新连接到自身的集群的其余部分。但是什么时候需要配置文件中的join选项呢?

如果这是真的,那么我需要启动rethinkdb与--join选项在我的脚本然后关闭它,然后再次启动没有--join?这是做这件事的正确方法还是有更好的选择?

+0

我想感谢downvoters的一些解释。 – dtoux

+0

我没有downvote,但这很容易在你的开发机器上测试。用'-o 1 -d/some/other/path -j localhost:29015'运行第二个实例,然后暂停运行,然后在没有连接的情况下再次运行它,并查看端口8080和8081上的管理接口会发生什么。 – analytik

+0

@analytik,是的,这是我最终做的,但我希望在这里快速回答:-) – dtoux

回答

1

你说得对,在后续重启时,你不需要从命令行指定--join,它会发现集群并尝试重新连接。部分集群状态存储在系统表server_config中。

即使您擦除了此节点上的数据目录,它仍然可以形成群集,因为其他节点可能具有有关该节点的信息,并且会尝试连接到该节点。但是,如果没有其他节点存储有关此特定服务器的信息,或者由于某种原因重新启动了此特定节点并拥有新IP地址,并且其数据目录也被擦除了,则此时群集不知道它(与新的IP地址)。

所以,我会一直指定--join。它没有伤害。在最坏的情况下,这有助于使新节点能够再次加入集群。