部署基本集群
设置集群基础设施的第一步是配置多个服务器以形成一个集群,您可以在其上托管数据库。在部署新集群时,需要考虑以下配置设置。有关更详细的描述和示例,请参见 设置参考。
从 Neo4j 5.23 开始,您可以选择使用两种发现服务之一:v1 或 v2。它们被设计为独立运行,并且可以并行运行。但是,新版本 v2 建议用于新部署,因为 v1 自 Neo4j 5.23 以来被认为已弃用。有关更多详细信息,请参见 集群服务器发现。
选项名称 | 描述 |
---|---|
告知其他机器连接到的地址。在典型情况下,应将其设置为此服务器的完全限定域名或 IP 地址。 |
|
此机器用于侦听传入消息的地址或网络接口。将此值设置为 |
|
|
服务器应联系以发现其他集群成员的端点的逗号分隔列表。通常,包括当前服务器在内的所有集群成员都必须在此列表中指定。该设置配置了 **发现服务 v2** 的端点。 |
|
此设置允许您选择要启动的发现服务。 |
|
集群所有成员(包括本服务器)的发现网络地址。此设置必须在所有集群成员上设置为相同的值。通过配置设置 |
以主模式启动的初始数据库托管数量。如果未指定,则默认为以主模式启动一个托管。 |
|
以从模式启动的初始数据库托管数量。如果未指定,则默认为以从模式启动零个托管。 |
任何以 |
将任何监听地址配置为除 确保您了解安全隐患,并认真考虑设置加密。 |
配置一个包含三个服务器的集群
以下示例展示了如何使用服务器地址列表方法设置一个包含三个成员的简单集群,这些成员以主模式托管默认数据库 neo4j
(以及 system
数据库)。
根据当前使用的 dbms.cluster.discovery.resolver_type
类型,发现服务可以使用服务器地址列表、DNS 记录或 Kubernetes 服务来发现集群中的其他服务器。
在本例中,您将 dbms.cluster.discovery.resolver_type
设置为 LIST
。
在本示例中,配置了三个名为 server01.example.com
、server02.example.com
和 server03.example.com
的服务器。在所有三个服务器上安装了 Neo4j Enterprise Edition。通过在每台服务器上准备 neo4j.conf 文件来配置它们。
请注意,它们除了 server.default_advertised_address
的配置外,其他配置都相同。
要使用发现服务 v2
-
您必须将
dbms.cluster.discovery.version
的配置设置为V2_ONLY
。 -
不要使用
dbms.cluster.discovery.endpoints
,而是使用dbms.cluster.discovery.v2.endpoints
。
server.default_listen_address=0.0.0.0
server.default_advertised_address=server01.example.com
dbms.cluster.discovery.v2.endpoints=server01.example.com:6000,server02.example.com:6000,server03.example.com:6000
dbms.cluster.discovery.version=V2_ONLY
initial.dbms.default_primaries_count=3
server.default_listen_address=0.0.0.0
server.default_advertised_address=server02.example.com
dbms.cluster.discovery.v2.endpoints=server01.example.com:6000,server02.example.com:6000,server03.example.com:6000
dbms.cluster.discovery.version=V2_ONLY
initial.dbms.default_primaries_count=3
server.default_listen_address=0.0.0.0
server.default_advertised_address=server03.example.com
dbms.cluster.discovery.v2.endpoints=server01.example.com:6000,server02.example.com:6000,server03.example.com:6000
dbms.cluster.discovery.version=V2_ONLY
initial.dbms.default_primaries_count=3
Neo4j 服务器已准备好启动。启动顺序无关紧要。
集群启动后,可以连接到任何实例并运行 SHOW SERVERS
来检查集群状态。这将显示有关集群中每个成员的信息
SHOW SERVERS;
+-----------------------------------------------------------------------------------------------------------+ | name | address | state | health | hosting | +-----------------------------------------------------------------------------------------------------------+ | "d6fbe54b-0c6a-4959-9bcb-dcbbe80262a4" | "server01:7687" | "Enabled" | "Available" | ["system", "neo4j"] | | "e56b49ea-243f-11ed-861d-0242ac120002" | "server02:7687" | "Enabled" | "Available" | ["system", "neo4j"] | | "73e9a990-0a97-4a09-91e9-622bf0b239a4" | "server03:7687" | "Enabled" | "Available" | ["system", "neo4j"] | +-----------------------------------------------------------------------------------------------------------+
要获取有关每个服务器的更详细的信息,请使用 SHOW SERVERS YIELD *
命令
SHOW SERVERS YIELD *;
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | serverId | name | address | state | health | hosting | requestedHosting | tags | allowedDatabases | deniedDatabases | modeConstraint | version | +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | "d6fbe54b-0c6a-4959-9bcb-dcbbe80262a4" | "d6fbe54b-0c6a-4959-9bcb-dcbbe80262a4" | "server01:7687" | "Enabled" | "Available" | ["system", "neo4j"] | ["system", "neo4j"] | [] | [] | [] | "NONE" | "5.0.0" | | "e56b49ea-243f-11ed-861d-0242ac120002" | "e56b49ea-243f-11ed-861d-0242ac120002" | "server02:7687" | "Enabled" | "Available" | ["system", "neo4j"] | ["system", "neo4j"] | [] | [] | [] | "NONE" | "5.0.0" | | "73e9a990-0a97-4a09-91e9-622bf0b239a4" | "73e9a990-0a97-4a09-91e9-622bf0b239a4" | "server03:7687" | "Enabled" | "Available" | ["system", "neo4j"] | ["system", "neo4j"] | [] | [] | [] | "NONE" | "5.0.0" | +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
启动时间
实例在加入集群时可能显示为不可用。如果要跟踪启动过程,可以在 neo4j.log 中查看消息。 |
在本示例中,配置了三个名为 server01.example.com
、server02.example.com
和 server03.example.com
的服务器。在所有三个服务器上安装了 Neo4j Enterprise Edition。通过在每台服务器上准备 neo4j.conf 文件来配置它们。请注意,它们除了 server.default_advertised_address
的配置外,其他配置都相同
server.default_listen_address=0.0.0.0
server.default_advertised_address=server01.example.com
dbms.cluster.discovery.endpoints=server01.example.com:5000,server02.example.com:5000,server03.example.com:5000
initial.dbms.default_primaries_count=3
server.default_listen_address=0.0.0.0
server.default_advertised_address=server02.example.com
dbms.cluster.discovery.endpoints=server01.example.com:5000,server02.example.com:5000,server03.example.com:5000
initial.dbms.default_primaries_count=3
server.default_listen_address=0.0.0.0
server.default_advertised_address=server03.example.com
dbms.cluster.discovery.endpoints=server01.example.com:5000,server02.example.com:5000,server03.example.com:5000
initial.dbms.default_primaries_count=3
Neo4j 服务器已准备好启动。启动顺序无关紧要。
集群启动后,可以连接到任何实例并运行 SHOW SERVERS
来检查集群状态。这将显示有关集群中每个成员的信息
SHOW SERVERS;
+-----------------------------------------------------------------------------------------------------------+ | name | address | state | health | hosting | +-----------------------------------------------------------------------------------------------------------+ | "d6fbe54b-0c6a-4959-9bcb-dcbbe80262a4" | "server01:7687" | "Enabled" | "Available" | ["system", "neo4j"] | | "e56b49ea-243f-11ed-861d-0242ac120002" | "server02:7687" | "Enabled" | "Available" | ["system", "neo4j"] | | "73e9a990-0a97-4a09-91e9-622bf0b239a4" | "server03:7687" | "Enabled" | "Available" | ["system", "neo4j"] | +-----------------------------------------------------------------------------------------------------------+
要获取有关每个服务器的更详细的信息,请使用 SHOW SERVERS YIELD *
命令
SHOW SERVERS YIELD *;
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | serverId | name | address | state | health | hosting | requestedHosting | tags | allowedDatabases | deniedDatabases | modeConstraint | version | +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | "d6fbe54b-0c6a-4959-9bcb-dcbbe80262a4" | "d6fbe54b-0c6a-4959-9bcb-dcbbe80262a4" | "server01:7687" | "Enabled" | "Available" | ["system", "neo4j"] | ["system", "neo4j"] | [] | [] | [] | "NONE" | "5.0.0" | | "e56b49ea-243f-11ed-861d-0242ac120002" | "e56b49ea-243f-11ed-861d-0242ac120002" | "server02:7687" | "Enabled" | "Available" | ["system", "neo4j"] | ["system", "neo4j"] | [] | [] | [] | "NONE" | "5.0.0" | | "73e9a990-0a97-4a09-91e9-622bf0b239a4" | "73e9a990-0a97-4a09-91e9-622bf0b239a4" | "server03:7687" | "Enabled" | "Available" | ["system", "neo4j"] | ["system", "neo4j"] | [] | [] | [] | "NONE" | "5.0.0" | +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
启动时间
实例在加入集群时可能显示为不可用。如果要跟踪启动过程,可以在 neo4j.log 中查看消息。 |
设置 |
在集群中创建新数据库
如 简介 中所述,集群中的服务器可以以主模式或从模式托管数据库。对于事务型工作负载,建议使用包含多个主服务器的数据库拓扑,以实现容错和自动故障转移。
如果工作负载更多地是分析性的,数据库拓扑可能会优先考虑从服务器而不是主服务器。这种配置针对可扩展性进行了优化,但它不是容错的,也不提供自动故障转移。以下示例涵盖了这两种情况。
在先前示例中某个服务器的 system
数据库中,执行以下 Cypher 命令来创建一个新数据库
CREATE DATABASE foo
TOPOLOGY 3 PRIMARIES
如果未指定 TOPOLOGY
,则会根据 neo4j.conf
文件中指定的 initial.dbms.default_primaries_count
创建数据库。此外,如果 initial.dbms.default_secondaries_count
被指定为除 0 以外的任何其他数字,则命令的第二行将读取 TOPOLOGY 3 PRIMARIES 0 SECONDARIES
。因此,使用 TOPOLOGY
指定的数字将覆盖 initial.dbms.default_primaries_count
和 initial.dbms.default_secondaries_count
(如果适用),前提是指定的数字不超过可用服务器的数量。
在先前示例中某个服务器的 system
数据库中,执行以下 Cypher 命令来创建一个新数据库
CREATE DATABASE bar
TOPOLOGY 1 PRIMARY 2 SECONDARIES
请注意,即使在初始配置中未指定 initial.dbms.default_secondaries_count
,此操作也是可能的。Cypher 命令的 TOPOLOGY
部分中指定的任何内容都会覆盖 initial.dbms.default_secondaries_count
设置。
分析用例
要详细了解专门为分析用例设置集群,请参见 部署分析集群。 |