Fiche de configuration d’un cluster dans le cadre d’EMOLGINE 2024
Dans le cadre du projet Emolgine, nous allons mettre en oeuvre un cluster Neo4J afin d’estimer les besoins nécessaires à la manipulation de quelques milliards de molécules. L’architecture mise en place est composée de trois VMs de 60 Go de disque et de 16 Go de Ram avec 4 cores sur un réseau dédié 192.168.100.0/24.
Installation de 3 Vms de 16 Go et 4 cores avec Ubuntu 24.04 avec arborescence suivante

Arborescence des fichiers sur chaque machine.
Neo4J
Répertoire contenant l’archive de la version community
Répertoire contenant les fichiers de paramétrage de Neo4J
Script de lancement de l’instance
Script de chargement de la base
Répertoire qui va contenir les fichiers des bases
Neo4J
├── /backups
│ └── Neo4J.dump
├── /conf
│ ├── Neo4J-admin.conf
│ ├── Neo4J.conf
│ ├── server-logs.xml
│ └── user-logs.xml
├── lance_conf.sh
├── lance_load.sh
├── /newdata
Script de démarrage des instances de Neo4J enterprise 5.23.0 : lance_conf.sh
!#/bin/bash
docker run --name=server1 -d \
--network=host \
-p 7474:7474 -p 7687:7687 \
-p 5000:5000 -p 6000:6000 -p 7000:7000 \
--hostname=192.168.100.220 \
--env Neo4J_ACCEPT_LICENSE_AGREEMENT=eval \
-v /home/ystroppa/Neo4J/newdata:/var/lib/Neo4J/data \
-v /home/ystroppa/Neo4J/conf:/var/lib/Neo4J/conf \
Neo4J:5.23.0-enterprise
!#/bin/bash
docker run --name=server1 -d \
--network=host \
-p 7474:7474 -p 7687:7687 \
-p 5000:5000 -p 6000:6000 -p 7000:7000 \
--hostname=192.168.100.221 \
--env Neo4J_ACCEPT_LICENSE_AGREEMENT=eval \
-v /home/ystroppa/Neo4J/newdata:/var/lib/Neo4J/data \
-v /home/ystroppa/Neo4J/conf:/var/lib/Neo4J/conf \
Neo4J:5.23.0-enterprise
!#/bin/bash
docker run --name=server1 -d \
--network=host \
-p 7474:7474 -p 7687:7687 \
-p 5000:5000 -p 6000:6000 -p 7000:7000 \
--hostname=192.168.100.222 \
--env Neo4J_ACCEPT_LICENSE_AGREEMENT=eval \
-v /home/ystroppa/Neo4J/newdata:/var/lib/Neo4J/data \
-v /home/ystroppa/Neo4J/conf:/var/lib/Neo4J/conf \
Neo4J:5.23.0-enterprise
Contenu du fichier /conf 4 fichiers
Neo4J-admin.conf : par défaut
server-logs.xml: par défaut
user-logs.xml: par défaut
Neo4J.conf (adaptation à notre contexte)
server.directories.import=import
server.bolt.enabled=true
server.http.enabled=true
server.https.enabled=false
server.metrics.csv.rotation.compression=zip
db.tx_log.rotation.retention_policy=2 days 2G
server.jvm.additional=-XX:+UseG1GC
server.jvm.additional=-XX:-OmitStackTraceInFastThrow
server.jvm.additional=-XX:+AlwaysPreTouch
server.jvm.additional=-XX:+UnlockExperimentalVMOptions
server.jvm.additional=-XX:+TrustFinalNonStaticFields
server.jvm.additional=-XX:+DisableExplicitGC
server.jvm.additional=-XX:-RestrictContended
server.jvm.additional=-Djdk.nio.maxCachedBufferSize=1024
server.jvm.additional=-Dio.netty.tryReflectionSetAccessible=true
server.jvm.additional=-Djdk.tls.ephemeralDHKeySize=2048
server.jvm.additional=-Djdk.tls.rejectClientInitiatedRenegotiation=true
server.jvm.additional=-XX:FlightRecorderOptions=stackdepth=256
server.jvm.additional=-XX:+UnlockDiagnosticVMOptions
server.jvm.additional=-XX:+DebugNonSafepoints
server.jvm.additional=--add-opens=java.base/java.nio=ALL-UNNAMED
server.jvm.additional=--add-opens=java.base/java.io=ALL-UNNAMED
server.jvm.additional=--add-opens=java.base/sun.nio.ch=ALL-UNNAMED
server.jvm.additional=--enable-native-access=ALL-UNNAMED
server.jvm.additional=-Dlog4j2.disable.jmx=true
server.windows_service_name=Neo4J
server.memory.pagecache.size=512M
server.default_listen_address=0.0.0.0
server.default_advertised_address=192.168.100.221
dbms.cluster.discovery.v2.endpoints=192.168.100.220:6000,192.168.100.221:6000192.168.100.222:6000
dbms.cluster.discovery.version=V2_ONLY
initial.dbms.default_primaries_count=3
server.cluster.advertised_address=192.168.100.221:6000
server.cluster.raft.advertised_address=192.168.100.221:7000
server.routing.advertised_address=192.168.100.221:7688
server.discovery.advertised_address=192.168.100.221:6000
server.directories.logs=/logs
Chargement de la base Neo4J pour Emolgine au niveau du cluster à l’aide du fichier .dump
On procède de la même façon que sur la version community. Sur chaque nœud du serveur on exécute la script lance_load.sh qui consiste à démarrer un conteneur et d’activer Neo4J-admin pour charger le fichier Neo4J.dump.
Vérification du fonctionnement
netstat -a |more et l’utilisation de cypher-shell pour se connecter sur les instances du cluster.