1. 程式人生 > >neo4j+nginx 實現查詢叢集設定

neo4j+nginx 實現查詢叢集設定

      最近一直都在研究Neo4j社群版的簡單叢集,是讀寫的叢集,但是做了很多調研,一直沒有得到理想的解決方案,所以又重新整理了思路,一步一步的做,先做讀的叢集。方案如下:服務+nginx+neo4j,中間放了一層代理nginx,這個代理可以連線N(N>=2)臺機器。最後經過多次實踐,排除各種問題,最後成功,查詢的叢集能做到。GOOD!!!  具體步驟如下:

     準備工作如下:兩臺機器,每臺機器Neo4j用的版本是社群版3.4.7,這是最新的Neo4j版本,能容納320億個節點,320億個關係,640億個屬性。

Nginx 用的版本是1.13.7,因為我需要這個stream,所以nginx版本必須是1.9版本以上的。

兩個安裝過程就不說了,網上教程都有。要說的是我採用的Neo4j連線是bolt協議,而bolt協議是建立在tcp協議或者websocket上。

       1,首先,升級nginx工程,讓它支援stream功能,預設的Nginx安裝功能是不支援的,所以需要升級。升級步驟很簡單,如下:

1)cd =/usr/local/nginx/nginx-1.13.7(nginx安裝路徑) ,執行命令:

./configure --prefix=/usr/local/nginx/nginx-1.13.7 --with-stream
安裝stream模組

2)執行 make  命令,不是make install 命令

3)備份nginx命令  ,執行:

cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak
4)把先生成的nginx命令覆蓋以前的nginx命令,執行:

cp /usr/local/nginx/nginx-1.13.7/objs/nginx /usr/local/nginx/sbin/nginx

5) 測試是否升級成功,執行

/usr/local/nginx/sbin/nginx -t

成功,第一步升級工作完成。

2,配置nginx.conf檔案,配置如下:

stream {
  
	upstream neo4j{
		server localhost:17687 weight=2;
		server 10.10.8.143:7687;
	
	}
    server {
		listen 7687;
        proxy_pass neo4j; # &lt;--- replace this with your neo4j server and bolt port<br />    
		}
	}

  然後儲存,退出。

3,設定neo4j.conf,cd到neo4j的安裝路徑下,找到neo4j.conf配置檔案,開啟,修改如下:

# Bolt connector
dbms.connector.bolt.enabled=true
#dbms.connector.bolt.tls_level=OPTIONAL
dbms.connector.bolt.listen_address=:17687

儲存,退出。

4,分別啟動neo4j,啟動nginx,分別檢視是否啟動成功,啟動成功後,測試,為了達到測試效果,兩臺機器的資料要查詢的那個資料不能一樣。

注意:遇到最大的坑就是,兩臺機器的權重不能一樣,必須有權重大小的區別。如圖:

最後,社群版相簿讀叢集成功。為了達到簡單叢集的效果,可以把相同的資料同時往兩臺機器的相簿寫資料,開啟事務,保證資料的一致性。同時上面的配置還有很多可以優化的地方,比如nginx可以配置keepalived引數等等。