在多个 Docker 主机上部署 Neo4j 集群

Neo4j 支持在无需编排工具的容器化环境中进行集群部署。本节介绍如何使用 Docker 在多台机器上搭建集群。有关如何在本地搭建用于测试目的的集群教程,请参阅 教程 → 在 Docker 容器中部署 Neo4j 集群

本页中的示例同时使用了命令扩展和 DNS 发现方法。有关更多信息,请参阅

为了创建高可用容器集群,Neo4j 集群服务器可以部署在不同的物理机器上。

当每个容器在各自的物理机器上运行且不使用 Docker 网络时,必须定义通告地址(advertised addresses)以实现物理机器之间的通信。每个容器还必须绑定到宿主机的网络。有关容器网络的更多信息,请参阅 Docker 官方文档

用于调用集群成员的 docker run 命令示例

docker run --name=server1 --detach \
         --network=host \
         --publish=7474:7474 --publish=7687:7687 \
         --publish=6000:6000 --publish=7000:7000 \
         --hostname=public-address \
         --env NEO4J_dbms_cluster_endpoints=server1-public-address:6000,server2-public-address:6000,server3-public-address:6000 \
         --env NEO4J_server_cluster_advertised__address=public-address:6000 \
         --env NEO4J_server_cluster.raft.advertised__address=public-address:7000 \
         --env NEO4J_server_default__advertised__address=public-address \
         --env NEO4J_ACCEPT_LICENSE_AGREEMENT=yes \
         --env NEO4J_server_bolt_advertised__address=public-address:7687 \
         --env NEO4J_server_http_advertised__address=public-address:7474 \
         neo4j:2026.03.1-enterprise

其中 public-address 是该机器的公共主机名或 IP 地址。