Neo4J 图库的集群部署与基础使用
Ned4J 图库的集群部署与基础使用
部署机器
| 名称 | 配置 | IP | 
|---|---|---|
| server1 | 8 核 16G | 172.16.0.2 | 
| server2 | 8 核 16G | 172.16.0.3 | 
| server3 | 8 核 16G | 172.16.0.4 | 
| server4 | 8 核 16G | 172.16.0.5 | 
# 创建项目目录
mkdir -p /opt/neo4j/
# 环境变量
export USER_ID="$(id -u)"
export GROUP_ID="$(id -g)"
export NEO4J_DOCKER_IMAGE=neo4j:5-community
export NEO4J_EDITION=docker_compose
export EXTENDED_CONF=yes
export NEO4J_ACCEPT_LICENSE_AGREEMENT=yes
export NEO4J_AUTH=neo4j/your_password
neo4j.conf 配置文件
# Setting that specifies how much memory Neo4j is allowed to use for the page cache.
server.memory.pagecache.size=100M
# Setting that specifies the initial JVM heap size.
server.memory.heap.initial_size=100M
# The behavior of the initial discovery is determined by the parameters `dbms.cluster.discovery.resolver_type` and `dbms.cluster.discovery.endpoints`.
# The DNS strategy fetches the IP addresses of the cluster members using the DNS A records.
# ### dbms.cluster.discovery.resolver_type=DNS
# The value of `dbms.cluster.discovery.endpoints` should be set to a single domain name and the port of the discovery service.
# The domain name returns an A record for every server in the cluster when a DNS lookup is performed.
# Each A record returned by DNS should contain the IP address of the server in the cluster.
# The configured server uses all the IP addresses from the A records to join or form a cluster.
# The discovery port must be the same on all servers when using this configuration.
# ### dbms.cluster.discovery.endpoints=neo4j-network:5000
# Address (the public hostname/IP address of the machine)
# and port setting that specifies where this instance advertises for discovery protocol messages from other members of the cluster.
# ### server.discovery.advertised_address=$(hostname -i)
# Address (the public hostname/IP address of the machine)
# and port setting that specifies where this instance advertises for Raft messages within the cluster.
# ### server.cluster.raft.advertised_address=$(hostname)
 # Address (the public hostname/IP address of the machine)
 # and port setting that specifies where this instance advertises for requests for transactions in the transaction-shipping catchup protocol.
# ### server.cluster.advertised_address=$(hostname)
# Enable server-side routing
# ###dbms.routing.enabled=true
# Use server-side routing for neo4j:// protocol connections.
# ###dbms.routing.default_router=SERVER
# The advertised address for the intra-cluster routing connector.
# ###server.routing.advertised_address=$(hostname)
# HTTP Connector
#
dbms.connector.http.type=HTTP
dbms.connector.http.enabled=true
dbms.connectors.default_listen_address=0.0.0.0
#
#dbms.connector.http.address=0.0.0.0:#{default.http.port}
dbms.connector.http.address=0.0.0.0:7474
dbms.connector.http.listen_address=0.0.0.0:7474
Docker-Compose.yml 文件
version: '3.8'
# Custom top-level network
networks:
  neo4j-internal:
services:
  server1:
    # Docker image to be used
    image: ${NEO4J_DOCKER_IMAGE}
    # Hostname
    hostname: server1
    # Service-level network, which specifies the networks, from the list of the top-level networks (in this case only neo4j-internal), that the server will connect to.
    # Adds a network alias (used in neo4j.conf when configuring the discovery members)
    networks:
      neo4j-internal:
        aliases:
          - neo4j-network
    # The ports that will be accessible from outside the container - HTTP (7474) and Bolt (7687).
    ports:
      - "7474:7474"
      - "7687:7687"
    # Uncomment the volumes to be mounted to make them accessible from outside the container.
    volumes:
      - /opt/neo4j/neo4j.conf:/conf/neo4j.conf # This is the main configuration file.
      - /opt/neo4j/data/server1:/var/lib/neo4j/data
      - /opt/neo4j/logs/server1:/var/lib/neo4j/logs
      - /opt/neo4j/conf/server1:/var/lib/neo4j/conf
      - /opt/neo4j/import/server1:/var/lib/neo4j/import
      #- /opt/neo4j/metrics/server1:/var/lib/neo4j/metrics
      #- /opt/neo4j/licenses/server1:/var/lib/neo4j/licenses
      #- /opt/neo4j/ssl/server1:/var/lib/neo4j/ssl
    # Passes the following environment variables to the container
    environment:
      - NEO4J_ACCEPT_LICENSE_AGREEMENT
      - NEO4J_AUTH
      - EXTENDED_CONF
      - NEO4J_EDITION
      - NEO4J_initial_server_mode__constraint=PRIMARY
    # Simple check testing whether the port 7474 is opened.
    # If so, the instance running inside the container is considered as "healthy".
    # This status can be checked using the "docker ps" command.
    healthcheck:
      test: ["CMD-SHELL", "wget --no-verbose --tries=1 --spider localhost:7474 || exit 1"]
    # Set up the user
    user: ${USER_ID}:${GROUP_ID}
  server2:
    image: ${NEO4J_DOCKER_IMAGE}
    hostname: server2
    networks:
      neo4j-internal:
        aliases:
          - neo4j-network
    ports:
      - "7475:7474"
      - "7688:7687"
    volumes:
      - /opt/neo4j/neo4j.conf:/conf/neo4j.conf
      - /opt/neo4j/data/server2:/var/lib/neo4j/data
      - /opt/neo4j/logs/server2:/var/lib/neo4j/logs
      - /opt/neo4j/conf/server2:/var/lib/neo4j/conf
      - /opt/neo4j/import/server2:/var/lib/neo4j/import
      #- /opt/neo4j/metrics/server2:/var/lib/neo4j/metrics
      #- /opt/neo4j/licenses/server2:/var/lib/neo4j/licenses
      #- /opt/neo4j/ssl/server2:/var/lib/neo4j/ssl
    environment:
      - NEO4J_ACCEPT_LICENSE_AGREEMENT
      - NEO4J_AUTH
      - EXTENDED_CONF
      - NEO4J_EDITION
      - NEO4J_initial_server_mode__constraint=PRIMARY
    healthcheck:
      test: ["CMD-SHELL", "wget --no-verbose --tries=1 --spider localhost:7474 || exit 1"]
    user: ${USER_ID}:${GROUP_ID}
  server3:
    image: ${NEO4J_DOCKER_IMAGE}
    hostname: server3
    networks:
      neo4j-internal:
        aliases:
          - neo4j-network
    ports:
      - "7476:7474"
      - "7689:7687"
    volumes:
      - /opt/neo4j/neo4j.conf:/conf/neo4j.conf
      - /opt/neo4j/data/server3:/var/lib/neo4j/data
      - /opt/neo4j/logs/server3:/var/lib/neo4j/logs
      - /opt/neo4j/conf/server3:/var/lib/neo4j/conf
      - /opt/neo4j/import/server3:/var/lib/neo4j/import
      #- /opt/neo4j/metrics/server3:/var/lib/neo4j/metrics
      #- /opt/neo4j/licenses/server3:/var/lib/neo4j/licenses
      #- /opt/neo4j/ssl/server3:/var/lib/neo4j/ssl
    environment:
      - NEO4J_ACCEPT_LICENSE_AGREEMENT
      - NEO4J_AUTH
      - EXTENDED_CONF
      - NEO4J_EDITION
      - NEO4J_initial_server_mode__constraint=PRIMARY
    healthcheck:
      test: ["CMD-SHELL", "wget --no-verbose --tries=1 --spider localhost:7474 || exit 1"]
    user: ${USER_ID}:${GROUP_ID}
  server4:
    image: ${NEO4J_DOCKER_IMAGE}
    hostname: server4
    networks:
      neo4j-internal:
        aliases:
          - neo4j-network
    ports:
      - "7477:7474"
      - "7690:7687"
    volumes:
      - /opt/neo4j/neo4j.conf:/conf/neo4j.conf
      - /opt/neo4j/data/server4:/var/lib/neo4j/data
      - /opt/neo4j/logs/server4:/var/lib/neo4j/logs
      - /opt/neo4j/conf/server4:/var/lib/neo4j/conf
      - /opt/neo4j/import/server4:/var/lib/neo4j/import
      #- /opt/neo4j/metrics/server4:/var/lib/neo4j/metrics
      #- /opt/neo4j/licenses/server4:/var/lib/neo4j/licenses
      #- /opt/neo4j/ssl/server4:/var/lib/neo4j/ssl
    environment:
      - NEO4J_ACCEPT_LICENSE_AGREEMENT
      - NEO4J_AUTH
      - EXTENDED_CONF
      - NEO4J_EDITION
      - NEO4J_initial_server_mode__constraint=SECONDARY
    healthcheck:
      test: ["CMD-SHELL", "wget --no-verbose --tries=1 --spider localhost:7474 || exit 1"]
    user: ${USER_ID}:${GROUP_ID}
version: '2'
services:
  neo4j:
    image: docker.io/bitnami/neo4j:5
    ports:
      - '7474:7474'
      - '7473:7473'
      - '7687:7687'
    volumes:
      - 'neo4j_data:/bitnami'
    environment:
      - NEO4J_AUTH=neo4j/bitnami1
volumes:
  neo4j_data:
    driver: local
Neo4J 的基础使用
基于 7474 端口的访问
通过远程配置的IP访问与配置,特别需要注意的就是对应的Auth这块,从而基于对应的外部IP才可以访问 比如 http://192.168.1.217:7474/

参考
本文来自 上海志彦,作者:上海志彦,转载请注明原文链接:https://www.cnblogs.com/pmo-sh/p/deploy-neo4j-use-docker-compose-and-use.html
                    
                
                
            
        
浙公网安备 33010602011771号