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

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

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

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

当每个容器都在其自己的物理机器上运行,并且不使用 Docker 网络时,您必须定义公布的地址以启用物理机器之间的通信。每个容器还必须绑定到主机机的网络。有关容器网络的更多信息,请参阅 Docker 官方文档

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

docker run --name=server1 --detach \
         --network=host \
         --publish=7474:7474 --publish=7687:7687 \
         --publish=5000:5000 --publish=6000:6000 --publish=7000:7000 \
         --hostname=public-address \
         --env NEO4J_dbms_cluster_discovery_endpoints=server1-public-address:5000,server2-public-address:5000,server3-public-address:5000 \
         --env NEO4J_server_discovery_advertised_address=public-address:5000 \
         --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:5.25.1-enterprise

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