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參數等等。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章