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参数等等。

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