2015-11-19 62 views
2

嗨,我是HA概念和Neo4j HA的新手。我已经浏览了Neo4j Docs,但我仍然有一些想到的问题。关于neo4j HA设置的疑问

  1. 当使用php脚本通过REST连接到Neo4j数据库时,我应该使用哪个ip集群。有一个共同的IP群集?

我问这个,因为如果主控失败,一个新的neo4j实例变成主控。我的脚本应该如何连接到新的主人。我应该使用第三方软件指向新的主人。可以通过neo4j通过一个公共的群集ip自动发生。如果我的观念薄弱,请原谅我,只需要一些指导。

  1. 如何将所有读取和写入操作指向主服务器并仅使用从服务器进行复制。或者这是默认设置。我看到多个阅读&多个写方案,所以我感到困惑。
  2. 是否有任何文档/材料进一步解释有关设置仲裁器实例或我应该只是配置3节点的Neo4j HA作为http://neo4j.com/docs/stable/ha-setup-tutorial.html说明和实例中的一个运行下面的命令 -

    neo4j_home$ ./bin/neo4j-arbiter start

任何帮助表示赞赏。谢谢!

回答

3

欢迎的Neo4j用户的社区;)

首先,我建议你看看上neo4j-php-client,因为它支持Neo4j的HA集群,它可以解决你的问题和存在的问题。而不是找到自己的解决方案。

  1. 最佳做法是使用Neo4j HA群集的某种负载平衡前端。这里是关于它的伟大文章:http://blog.armbruster-it.de/2015/08/neo4j-and-haproxy-some-best-practices-and-tricks/

  2. 您可以在基于HTTP方法(GET重定向到奴隶; POST,PUT,DELETE重定向到主)的负载平衡器级别上执行此操作。但Cypher端点存在问题,因为它只使用POST方法。您可以使用额外的HTTP标头来区分读取和写入请求,但该逻辑必须位于您的应用程序中。

  3. 首先,从官方文档开始就足够了。

资源

+0

感谢您的快速响应! 1)只是为了看看我是否理解这个权利 - 负载平衡器是自动故障转移的授权? &对于第3点)我的意思是,如果我只在其中一个HA实例上运行'neo4j-arbiter start',它的行为就像是一个仲裁者而没有任何事务被登录到实例。 – DevD

+0

负载均衡器不是强制性的,但强烈建议。 Neo4j仲裁者启动是不同的服务,它不是真正的Neo4j服务器。 – MicTech

+0

再次感谢!您是否有任何链接/文档/材料,进一步讨论如何将Neo4j仲裁器设置为集群的一部分。 – DevD

1

正如我的朋友镁骅提到的,通常我们使用HAProxy的作为Neo4j的顶部负载平衡器。

随着提到的PHP客户端,你有一个伟大的配置机制,允许:

  1. 当使用HA代理,定义你的读/写的查询,以便它会自动添加一个头的HTTP请求。标题也是可配置的。

  2. 当不使用HAProxy时,您可以在客户端设置中定义所有neo4j实例并激活高可用性扩展(仅在启用缓存的情况下工作)。因此,当主设备关闭时,客户端将自动尝试检测新选择的主设备,并重写缓存中的连接配置以获取更多请求。

我试着让自述文件尽可能地好,请阅读它并在存储库中打开存在的问题。

https://github.com/graphaware/neo4j-php-client

+0

感谢和伟大的API。刚刚通过文档。它表示_自动地,写查询将针对主连接执行,同时读取针对从属连接的查询。我还看到有读取和写入模式。有没有一种方法可以将所有读取和写入操作指向主机本身?是否有规定添加仲裁者,(我知道仲裁者不会读写,但是会在此设置中工作)?谢谢你的一样! – DevD

+1

如果您不使用特定的读取和写入方法,则会将这些方法假定为写入主机。您也可以将连接别名传递给客户端的每个方法以指向您想要的连接。为什么它不适用于仲裁者。另外,我认为你会考虑更多的事情,而不是担心仲裁者。 –

+0

当然。再次感谢您的答案! – DevD