0%

neo4j集群安装步骤

1. neo4j集群安装

  1. 文件说明:
  • neo4j-enterprise-3.4.18-unix.tar.gz为软件压缩包
  • 如下其余的都是第三方包,后面只需要移动到后面指定的文件夹中即可
1
2
3
4
5
apoc-3.4.0.4-all.jar                hive-service-1.1.0-cdh5.15.2.jar
graph-algorithms-algo-3.4.12.7.jar httpclient-4.2.5.jar
hive-exec-1.1.0-cdh5.15.2.jar httpcore-4.2.5.jar
hive-jdbc-1.1.0-cdh5.15.2.jar libfb303-0.9.3.jar
hive-metastore-1.1.0-cdh5.15.2.jar libthrift-0.9.3.jar
  1. 说明

    安装目录这里假设为根目录下面的opt文件夹/opt,具体视现场情况而定。配置集群方式可以通过先修改一份配置文件,然后将整个文件包发送到另外两个节点上。最后再修改neo4j的id即可。以下为此种安装方式的步骤

测试主机配置ip分别为:

xxx.xx.xxx.100/xxx.xx.xxx.102/xxx.xx.xxx.9,

对应的hostname分别为master/slave01/slave02,

对应的neo4j集群id分别为1/2/3
(具体视现场情况而定,neo4j集群id只是一个标识)

  1. 获取软件包之后然后在安装目录下直接解压缩,命令如下
1
tar -vxf neo4j-enterprise-3.4.18-unix.tar.gz
  1. 开启http页面服务外部访问
  • 修改neo4j-enterprise-3.4.18/conf/neo4j.conf文件

删除

1
# dbms.connectors.default_listen_address=0.0.0.0

行前面的井号

1
# vim中打开文件然后输入“/+字符串”然后回车可以进行字符串搜索,使用n键调整上下匹配
  1. 配置ip地址及页面缓存大小
  • 修改neo4j-enterprise-3.4.18/conf/neo4j.conf文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 修改文件中的不带井号行的数据为如下值

# Unique server id for this Neo4j instance
# can not be negative id and must be unique
ha.server_id=1
# List of other known instances in this cluster
# Alternatively, use IP addresses:
ha.initial_hosts=xxx.xx.xxx.100:5001,xxx.xx.xxx.102:5001,xxx.xx.xxx.9:5001(这里根据实际id进行修改,端口默认不变)
# HA - High Availability
# SINGLE - Single mode, default.
dbms.mode=HA
# HTTP Connector
dbms.connector.http.enabled=true
dbms.connector.http.listen_address=:7474
# 设置堆内存和页面缓存大小
dbms.memory.heap.initial_size=10g
dbms.memory.heap.max_size=10g
dbms.memory.pagecache.size=10g
  1. 将第0步里面所述的所有第三方包放到/opt/neo4j-enterprise-3.4.18/plugins目录下

  2. 将整个neo4j文件夹opt/neo4j-enterprise-3.4.18复制到要安装的从节点对应的目录下

1
2
scp -r ./opt/neo4j-enterprise-3.4.18/ root@xxx.xx.xxx.102:/opt/
scp -r ./opt/neo4j-enterprise-3.4.18/ root@xxx.xx.xxx.9:/opt/
  1. 修改从节点的neo4jID
  • 修改从节点的neo4j-enterprise-3.4.18/conf/neo4j.conf文件
  • 找到neo4j.conf文件中的如下部分,将两个从节点中的ha.server_id分别修改为2和3
1
2
3
# Unique server id for this Neo4j instance
# can not be negative id and must be unique
ha.server_id=1
  1. 然后分别启动三个集群,主从节点启动顺序不定,集群配置必须三个节点都启动服务才能启动成功。单独启动一个节点是无法启动成功的

/opt/neo4j-enterprise-3.4.18/bin目录下分别输入

start``` ,并等待数秒即可
1
2
3
4
5
6
7
8
9
10
11
12

> 重启和关闭的命令将上面的start改成restart或者stop即可


9. web客户端查看是否启动成功

客户端页面为“http://xxx.xx.xxx.100:7474/browser/”,
第一次登陆的时候会强制修改密码,
默认账号密码为:neo4j/neo4j。
点击页面上的System information框内的monitor键如下显示表示成功启动。
(id为1,2,3的节点状态都是alive)

Cluster
Id Alive Available Is Master
1 true true yes
2 true true -
3 true true

1
2
3
4
5
6
7
8
9


# 2.启动可能遇到问题:

## 2.1 ERROR Failed to start Neo4j
> ERROR Failed to start Neo4j: Starting Neo4j failed: Component 'org.neo4j.server.database.LifecycleManagingDatabase@1e141e42' was successfully initialized, but failed to start. Please see the attached cause exception "Conversation-response mapping:
> {1/13#=ResponseFuture{conversationId='1/13#', initiatedByMessageType=join, response=null}}". Starting Neo4j failed: Component

如上错误说明三台机器之间访问出现了问题,不能相互感知,不能加入集群,还需要增加下面配置

在neo4j-node1 neo4j.conf中添加

dbms.connectors.default_listen_address=xxx.xx.xxx.100
dbms.connector.bolt.enabled=true
dbms.connector.bolt.listen_address=:7687

在neo4j-node2 neo4j.conf中添加

dbms.connectors.default_listen_address=xxx.xx.xxx.102
dbms.connector.bolt.enabled=true
dbms.connector.bolt.listen_address=:7687

在neo4j-node3 neo4j.conf中添加

dbms.connectors.default_listen_address=xxx.xx.xxx.9
dbms.connector.bolt.enabled=true
dbms.connector.bolt.listen_address=:7687

1
2
3
然后三台集群分别启动即可,无启动顺序。等待启动完成查看neo4j状态或者看日志都可以看到启动已经成功。

## 2.2 Neo4j-shell 报错Connection refused

cd /etc/neo4j
vim neo4j.conf
去掉 #dbms.shell.enabled=true 前面的#

1
2
3
4
5
6
7
8
9
10
11
更改后重启neo4j即可

# 3. 部分需要脚本
**下面脚本都需要在文件解压后在“/opt/neo4j-enterprise-3.4.18/bin”(解压文件的bin目录下)目录下手动建立相关的文件**


## 3.1 清空库脚本
- 路径:
> /opt/neo4j-enterprise-3.4.18/bin/dropDataBase.sh

- 内容:

#!/bin/bash

Neo4j删除边和顶点的脚本

删除边

/opt/neo4j-enterprise-3.4.18/bin/cypher-shell “call apoc.periodic.iterate(‘match ()-[r]-() return r’,’delete r’,{batchsize:’100000’,iterateList:true,paraller:true,concurrency:8})”

删除点

/opt/neo4j-enterprise-3.4.18/bin/cypher-shell “call apoc.periodic.iterate(‘match (n) return n’,’delete n’,{batchsize:’100000’,iterateList:true,paraller:true,concurrency:8})”

1
2
3
4
5
6
7
8
- 说明:
> 该脚本为删库脚本,需要删库的时候**先执行删除边**脚本**再执行删除点**脚本

## 3.2 服务崩溃自动启动脚本
- 路径:
> /opt/neo4j-enterprise-3.4.18/bin/selfStartUp.sh

- 内容:

check_point(){
echo “端口检测”
netstat -tlpn grep “\b$1\b”
}
while true
do
if check_point 7474
then
echo “已存在”
else
echo “不在”
./neo4j start
fi
sleep 10m
done

- 说明:

> 该脚本需要在**集群的三台机器上**常驻执行,neo4j安装后执行```nohup  selfStartUp.sh  & ```启动