部署基本集群
设置集群基础设施的第一步是配置多个服务器以形成一个集群,您可以在其上托管数据库。部署新集群时,以下配置设置非常重要。有关更详细的描述和示例,另请参见设置参考。
选项名称 | 描述 |
---|---|
告知其他机器连接的地址。通常情况下,这应设置为此服务器的完全限定域名或 IP 地址。 |
|
此机器用于监听传入消息的地址或网络接口。将此值设置为 |
|
服务器应联系以发现其他集群成员的端点列表,以逗号分隔。通常,所有集群成员(包括当前服务器)都必须在此列表中指定。此设置的行为可以通过配置 |
|
主模式下初始数据库托管的数量。如果未指定,则默认为一个主模式托管。 |
|
辅助模式下初始数据库托管的数量。如果未指定,则默认为零个辅助模式托管。 |
任何带有 |
将任何监听地址配置为非 请务必了解其安全隐患,并强烈考虑设置加密。 |
配置一个包含三台服务器的集群
以下示例展示了如何使用服务器地址列表的方法,设置一个包含三个成员的基本集群,并在主模式下托管默认数据库 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
的配置外,都完全相同。
server.default_listen_address=0.0.0.0
server.default_advertised_address=server01.example.com
dbms.cluster.endpoints=server01.example.com:6000,server02.example.com:6000,server03.example.com:6000
initial.dbms.default_primaries_count=3
server.default_listen_address=0.0.0.0
server.default_advertised_address=server02.example.com
dbms.cluster.endpoints=server01.example.com:6000,server02.example.com:6000,server03.example.com:6000
initial.dbms.default_primaries_count=3
server.default_listen_address=0.0.0.0
server.default_advertised_address=server03.example.com
dbms.cluster.endpoints=server01.example.com:6000,server02.example.com:6000,server03.example.com:6000
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
设置。
分析用例
要了解有关专门针对分析用例设置集群的更多信息,请参阅部署分析集群。 |