使用 Docker 在本地运行多个因果集群
在同一服务器或机器上运行多个因果集群相当容易。您需要确保:
-
每个集群需要在其自己的 Docker 网络上运行
-
必须防止端口映射重叠
-
causal_clustering.initial_discovery_members
只需要包含其集群中的机器列表 -
需要明确设置 bolt 的 advertised 主机名 + 端口
以下示例运行了 2 个独立的集群,每个集群包含 3 个核心实例
#!/bin/sh
# cluster 1
docker network create --driver=bridge cluster1
docker run --name=core1 --detach --network=cluster1 \
--publish=7474:7474 --publish=7473:7473 --publish=7687:7687 \
--env=NEO4J_dbms_mode=CORE \
--env=NEO4J_causal__clustering_expected__core__cluster__size=3 \
--env=NEO4J_causal__clustering_initial__discovery__members=core1:5000,core2:5000,core3:5000 \
--env=NEO4J_ACCEPT_LICENSE_AGREEMENT=yes \
--env=NEO4J_dbms_connector_bolt_advertised__address=localhost:7687 \
--env=NEO4J_AUTH=none \
neo4j:3.3-enterprise
docker run --name=core2 --detach --network=cluster1 \
--publish=8474:7474 --publish=8473:7473 --publish=8687:7687 \
--env=NEO4J_dbms_mode=CORE \
--env=NEO4J_causal__clustering_expected__core__cluster__size=3 \
--env=NEO4J_causal__clustering_initial__discovery__members=core1:5000,core2:5000,core3:5000 \
--env=NEO4J_ACCEPT_LICENSE_AGREEMENT=yes \
--env=NEO4J_dbms_connector_bolt_advertised__address=localhost:8687 \
--env=NEO4J_AUTH=none \
neo4j:3.3-enterprise
docker run --name=core3 --detach --network=cluster1 \
--publish=9474:7474 --publish=9473:7473 --publish=9687:7687 \
--env=NEO4J_dbms_mode=CORE \
--env=NEO4J_causal__clustering_expected__core__cluster__size=3 \
--env=NEO4J_causal__clustering_initial__discovery__members=core1:5000,core2:5000,core3:5000 \
--env=NEO4J_ACCEPT_LICENSE_AGREEMENT=yes \
--env=NEO4J_dbms_connector_bolt_advertised__address=localhost:9687 \
--env=NEO4J_AUTH=none \
neo4j:3.3-enterprise
# cluster 2
docker network create --driver=bridge cluster2
docker run --name=core21 --detach --network=cluster2 \
--publish=17474:7474 --publish=17473:7473 --publish=17687:7687 \
--env=NEO4J_dbms_mode=CORE \
--env=NEO4J_causal__clustering_expected__core__cluster__size=3 \
--env=NEO4J_causal__clustering_initial__discovery__members=core21:5000,core22:5000,core23:5000 \
--env=NEO4J_ACCEPT_LICENSE_AGREEMENT=yes \
--env=NEO4J_dbms_connector_bolt_advertised__address=localhost:17687 \
--env=NEO4J_AUTH=none \
neo4j:3.3-enterprise
docker run --name=core22 --detach --network=cluster2 \
--publish=18474:7474 --publish=18473:7473 --publish=18687:7687 \
--env=NEO4J_dbms_mode=CORE \
--env=NEO4J_causal__clustering_expected__core__cluster__size=3 \
--env=NEO4J_causal__clustering_initial__discovery__members=core21:5000,core22:5000,core23:5000 \
--env=NEO4J_ACCEPT_LICENSE_AGREEMENT=yes \
--env=NEO4J_dbms_connector_bolt_advertised__address=localhost:18687 \
--env=NEO4J_AUTH=none \
neo4j:3.3-enterprise
docker run --name=core23 --detach --network=cluster2 \
--publish=19474:7474 --publish=19473:7473 --publish=19687:7687 \
--env=NEO4J_dbms_mode=CORE \
--env=NEO4J_causal__clustering_expected__core__cluster__size=3 \
--env=NEO4J_causal__clustering_initial__discovery__members=core21:5000,core22:5000,core23:5000 \
--env=NEO4J_ACCEPT_LICENSE_AGREEMENT=yes \
--env=NEO4J_dbms_connector_bolt_advertised__address=localhost:19687 \
--env=NEO4J_AUTH=none \
neo4j:3.3-enterprise
此页面有帮助吗?