2015-11-19 57 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