轉】Neo4j集群安裝實踐


  原博文出自於:  http://blog.fens.me/category/%E6%95%B0%E6%8D%AE%E5%BA%93/page/2/    感謝!

 

 

 

 

Neo4j集群安裝實踐

前言

“圖”一直是計算機算法研究的重要領域,但由於圖的復雜性缺少成熟的產品。直到社交網絡的普及,社會化關系網和復雜網絡的更入研究,大家對於“圖數據庫”有了更強烈的需求。圖數據庫產品也趨向成熟,慢慢地走進了大家的視野。

Neo4j就是圖數據庫的代表之作。

關於作者:

  • 張丹(Conan), 程序員Java,R,PHP,Javascript
  • weibo:@Conan_Z
  • blog: http://blog.fens.me
  • email: bsspirit@gmail.com

轉載請注明出處:
http://blog.fens.me/nosql-neo4j-intro/

neo4j-intro

目錄

  1. Neo4j簡介
  2. Neo4j單機安裝
  3. 創建一個簡單的社交關系圖
  4. Neo4j集群安裝HA

1. Neo4j簡介

Neo4j是一個用Java實現的、高性能的、NoSQL圖形數據庫。Neo4j 使用圖(graph)相關的概念來描述數據模型,通過圖中的節點和節點的關系來建模。Neo4j完全兼容ACID的事務性。Neo4j以“節點空間”來表達領域數據,相對於傳統的關系型數據庫的表、行和列來說,節點空間可以更好地存儲由節點關系和屬性構成的網絡,如社交網絡,朋友圈等。

由Neo4j構建“圖”模型,也可以准確表達 數據庫模型,key-value模型,文檔模型的數據關系。

2. Neo4j單機安裝

系統環境

  • Linux: Ubuntu 12.04.2 LTS 64bit Server
  • SUN Java: 1.6.0_29 64-Bit

下載neo4j-enterprise,企業版


~ wget http://dist.neo4j.org/neo4j-enterprise-1.9.4-unix.tar.gz
~ tar xvf neo4j-enterprise-1.9.4-unix.tar.gz
~ mv neo4j-enterprise-1.9.4 neo4j194
~ mv neo4j194/ /home/conan/toolkit/
~ cd /home/conan/toolkit/neo4j194

配置Neo4j服務器允許遠程訪問,修改neo4j-server.properties


~ vi conf/neo4j-server.properties

#取消注釋
org.neo4j.server.webserver.address=0.0.0.0

啟動Neo4j


~ bin/neo4j start
WARNING: Max 1024 open files allowed, minimum of 40 000 recommended. See the Neo4j manual.
WARNING! You are using an unsupported version of the Java runtime. Please use Oracle(R) Java(TM) Runtime Environment 7.
Using additional JVM arguments:  -server -XX:+DisableExplicitGC -Dorg.neo4j.server.properties=conf/neo4j-server.properties -Djava.util.logging.config.file=conf/logging.properties -Dlog4j.configuration=file:conf/log4j.properties -XX:+UseConcMarkSweepGC -XX:+CMSClassUnloadingEnabled
Starting Neo4j Server...WARNING: not changing user
process [2408]... waiting for server to be ready....... OK.
Go to http://localhost:7474/webadmin/ for administration interface.

通過瀏覽器打開Neo4j的web控制台, http://192.168.1.201:7474/webadmin/

neo4j-webadmin

非常簡單地,完成了單機的Neo4j的安裝。

3. 創建一個簡單的社交關系圖

neo4j-relations-1


~ bin/neo4j-shell

neo4j-sh (?)$ CREATE (A {id:1,name:'A'}), (B {id:2,name:'B'}), (C {id:3,name:'C'}), (D {id:4,name:'D'}),(A)-[:knows]->(B),(A)-[:knows]->(C),(B)-[:knows]->(D),(D)-[:knows]->(A);
+-------------------+
| No data returned. |
+-------------------+
Nodes created: 4
Relationships created: 4
Properties set: 8

neo4j-sh (?)$ START n=node(*) RETURN n;
+-------------------------+                                                           | n                       |
+-------------------------+
| Node[49]{name:"A",id:1} |
| Node[50]{name:"B",id:2} |
| Node[51]{name:"C",id:3} |
| Node[52]{name:"D",id:4} |
+-------------------------+
4 rows

通過控制台以圖形展示

neo4j-graph

刪除數據節點和關系


neo4j-sh (?)$ START n=node(*) MATCH n-[r]-() DELETE n, r;
+-------------------+
| No data returned. |
+-------------------+
Nodes deleted: 4
Relationships deleted: 4

neo4j-sh (?)$ START n=node(*) RETURN n;
+---+
| n |
+---+
+---+
0 row

4. Neo4j集群安裝HA

模擬Neo4j的高可用:Neo4j企業版本才提供高可用性功能。

Neo4j HA主要提供以下兩個功能:

  • 容錯數據庫架構 保存多個數據副本,即使硬件故障,也能保證可讀寫。
  • 水平方向擴展以讀為主架構 讀操作負載均衡。

Neo4j HA模式總有單個master,零個或多個slave。與其他ms復制架構,Neo4j HA的slave可以處理寫操作,而無需重定向寫入到master。

neo4j-ha

Neo4j的集群需要復制多份Neo4j的環境,我們這里准備構建3個節點


~ mkdir /home/conan/neo4j
~ cd /home/conan/neo4j
~ cp -R /home/conan/toolkit/neo4j194 /home/conan/neo4j
~ mv neo4j194/ n1
~ cp -R n1 n2
~ cp -R n1 n3
~ ls 
n1  n2  n3

分別修改各節點的配置文件

  • neo4j.properties
  • neo4j-server.properties
  • neo4j-server.properties

n1節點


~ vi n1/conf/neo4j.properties

ha.server_id=1
ha.server=127.0.0.1:6361
online_backup_server=127.0.0.1:6362
ha.cluster_server=127.0.0.1:5001
ha.initial_hosts=127.0.0.1:5001,127.0.0.1:5002,127.0.0.1:5003

~ vi n1/conf/neo4j-server.properties

org.neo4j.server.webserver.port=7474
org.neo4j.server.webserver.https.port=7473
org.neo4j.server.database.mode=HA

~ vi n1/conf/neo4j-wrapper.conf

wrapper.java.additional.4=-Dcom.sun.management.jmxremote.port=3637
wrapper.java.additional.5=-Dcom.sun.management.jmxremote.password.file=conf/jmx.password
wrapper.java.additional.6=-Dcom.sun.management.jmxremote.access.file=conf/jmx.access

n2節點


~ vi n2/conf/neo4j.properties

ha.server_id=2
ha.server=127.0.0.1:6363
online_backup_server=127.0.0.1:6364
ha.cluster_server=127.0.0.1:5002
ha.initial_hosts=127.0.0.1:5001,127.0.0.1:5002,127.0.0.1:5003

~ vi n2/conf/neo4j-server.properties

org.neo4j.server.webserver.port=7476
org.neo4j.server.webserver.https.port=7475
org.neo4j.server.database.mode=HA

~ vi n1/conf/neo4j-wrapper.conf

wrapper.java.additional.4=-Dcom.sun.management.jmxremote.port=3638
wrapper.java.additional.5=-Dcom.sun.management.jmxremote.password.file=conf/jmx.password
wrapper.java.additional.6=-Dcom.sun.management.jmxremote.access.file=conf/jmx.access

n3節點


~ vi n3/conf/neo4j.properties

ha.server_id=3
ha.server=127.0.0.1:6365
online_backup_server=127.0.0.1:6366
ha.cluster_server=127.0.0.1:5003
ha.initial_hosts=127.0.0.1:5001,127.0.0.1:5002,127.0.0.1:5003

~ vi n3/conf/neo4j-server.properties

org.neo4j.server.webserver.port=7478
org.neo4j.server.webserver.https.port=7478
org.neo4j.server.database.mode=HA

~ vi n1/conf/neo4j-wrapper.conf

wrapper.java.additional.4=-Dcom.sun.management.jmxremote.port=3639
wrapper.java.additional.5=-Dcom.sun.management.jmxremote.password.file=conf/jmx.password
wrapper.java.additional.6=-Dcom.sun.management.jmxremote.access.file=conf/jmx.access

分別啟動3個節點:


~ n1/bin/neo4j start
~ n2/bin/neo4j start
~ n3/bin/neo4j start

~ jps
5033 Bootstrapper
4073 StartClient
5546 Jps
5393 Bootstrapper
5219 Bootstrapper

命令行curl訪問測試:


curl -H "Content-Type:application/json" -d '["org.neo4j:*"]' http://localhost:7474/db/manage/server/jmx/query

打開瀏覽器控制台webadmin
http://192.168.1.201:7474/webadmin/#/info/org.neo4j/High%20Availability/

neo4j-cluster

這樣就完成了 Neo4j集群對於高可用安裝實踐!

轉載請注明出處:
http://blog.fens.me/nosql-neo4j-intro/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM