扩展 Neo4j 部署
Neo4j 支持垂直和水平扩展。
垂直扩展
要增加或减少 Neo4j 实例可用的资源(CPU、内存),请更改 values.yaml 文件中的 neo4j.resources
对象以设置所需的资源使用量,然后执行 helm 升级。
如果您更改分配给 Neo4j 容器的内存,则还应更改 Neo4j 的内存配置(尤其是 |
例如,如果正在运行的 Neo4j 实例具有以下分配的资源
# values.yaml
neo4j:
resources:
cpu: "1"
memory: "3Gi"
# Neo4j Configuration (yaml format)
config:
server.memory.heap.initial_size: "2G"
server.memory.heap.max_size: "2G"
server.memory.pagecache.size: "500m"
并且您想将它们增加到 2 个 CPU 和 4 GB 内存(将额外内存分配给页面缓存)。
-
修改 values.yaml 文件以设置所需的资源使用量
# values.yaml neo4j: resources: cpu: "2" memory: "4Gi" # Neo4j Configuration (yaml format) config: server.memory.heap.initial_size: "2G" server.memory.heap.max_size: "2G" server.memory.pagecache.size: "1G"
-
使用修改后的部署values.yaml文件和Neo4j Helm图表运行
helm upgrade
命令来应用更改。例如helm upgrade <release-name> neo4j/neo4j -f values.yaml
水平扩展
您可以向Neo4j集群添加新服务器以扩展写入或读取工作负载。
以下示例假设您有一个正在运行的包含 3 台服务器的 Neo4j 集群,并且您的 Kubernetes 集群有一个可用于新服务器的节点,即server4
。
使用以下选项之一安装server4
添加新服务器并手动启用它
-
使用与现有集群相同的
neo4j.name
值安装server4
helm install server4 neo4j --set neo4j.edition=enterprise --set neo4j.acceptLicenseAgreement=yes --set volumes.data.mode=defaultStorageClass --set neo4j.password="password" --set neo4j.minimumClusterSize=3 --set neo4j.name=my-cluster
或者,您可以使用values.yaml文件设置新服务器的值,并使用neo4j/neo4j Helm图表安装新服务器。有关更多信息,请参阅创建 Helm 部署值文件和安装 Neo4j 集群服务器。
当新服务器加入集群时,它最初将处于
Free
状态。 -
使用
cypher-shell
(或 Neo4j 浏览器)连接到现有服务器之一,以启用server4
以托管数据库。-
访问
server1
上的 cypher-shellkubectl exec -ti server1-0 -- cypher-shell -u neo4j -p password -d neo4j
-
当
cypher-shell
提示符准备就绪后,验证server4
是否处于Free
状态,并记下其名称。SHOW SERVERS;
+---------------------------------------------------------------------------------------------------------------------------------+ | name | address | state | health | hosting | +---------------------------------------------------------------------------------------------------------------------------------+ | "0908819d-238a-473d-9877-5cc406050ea2" | "server4.neo4j.svc.cluster.local:7687" | "Free" | "Available" | ["system"] | | "19817354-5cd1-4579-8c45-8b897808fdb4" | "server2.neo4j.svc.cluster.local:7687" | "Enabled" | "Available" | ["system", "neo4j"] | | "b3c91592-1806-41d0-9355-8fc6ba236043" | "server3.neo4j.svc.cluster.local:7687" | "Enabled" | "Available" | ["system", "neo4j"] | | "eefd7216-6096-46f5-9c41-a74f79684172" | "server1.neo4j.svc.cluster.local:7687" | "Enabled" | "Available" | ["system", "neo4j"] | +---------------------------------------------------------------------------------------------------------------------------------+
-
-
使用其名称,启用
server4
以在集群中使用它。ENABLE SERVER "0908819d-238a-473d-9877-5cc406050ea2";
-
再次运行
SHOW SERVERS;
以验证server4
是否已启用。SHOW SERVERS;
+---------------------------------------------------------------------------------------------------------------------------------+ | name | address | state | health | hosting | +---------------------------------------------------------------------------------------------------------------------------------+ | "0908819d-238a-473d-9877-5cc406050ea2" | "server4.neo4j.svc.cluster.local:7687" | "Enabled" | "Available" | ["system"] | | "19817354-5cd1-4579-8c45-8b897808fdb4" | "server2.neo4j.svc.cluster.local:7687" | "Enabled" | "Available" | ["system", "neo4j"] | | "b3c91592-1806-41d0-9355-8fc6ba236043" | "server3.neo4j.svc.cluster.local:7687" | "Enabled" | "Available" | ["system", "neo4j"] | | "eefd7216-6096-46f5-9c41-a74f79684172" | "server1.neo4j.svc.cluster.local:7687" | "Enabled" | "Available" | ["system", "neo4j"] | +---------------------------------------------------------------------------------------------------------------------------------+
添加新服务器并自动启用它
此功能从 Neo4j 5.20 开始可用。
您可以在新服务器加入集群时通过在values.yaml文件中将neo4j.operations.enableServer
值设置为true
或在运行helm install
时使用--set
标志来自动启用新服务器。当您想将新服务器添加到集群并启用它而无需手动干预时,此功能非常有用。
-
使用以下选项之一安装
server4
-
使用与现有集群相同的
neo4j.name
值运行helm install
。helm install server4 neo4j --set neo4j.edition=enterprise --set neo4j.acceptLicenseAgreement=yes --set volumes.data.mode=defaultStorageClass --set neo4j.password="password" --set neo4j.minimumClusterSize=3 --set neo4j.name=my-cluster --set neo4j.operations.enableServer=true --set image="neo4j/helm-charts-operations:5.20.0" --set protocol="neo4j"
-
使用values.yaml文件设置新服务器的值,并使用neo4j/neo4j Helm图表安装新服务器。
-
确保
neo4j.name
值与现有集群相同,并且neo4j.operations.enableServer
设置为true
。neo4j: name: "my-cluster" minimumClusterSize: 3 resources: cpu: "0.5" memory: "2Gi" password: "my-password" edition: "enterprise" acceptLicenseAgreement: "yes" volumes: data: mode: "dynamic" dynamic: # * premium-rwo provisions SSD disks (recommended) # * standard-rwo provisions balanced SSD-backed disks # * standard provisions HDD disks storageClassName: premium-rwo operations: enableServer: true image: "neo4j/helm-charts-operations:5.20.0" # protocol can be "neo4j or "neo4j+ssc" or "neo4j+s". Default set to neo4j # Note: Do not specify bolt protocol here...it will FAIL. protocol: "neo4j" labels: {}
有关所有可能的配置选项以及有关自定义部署的更多信息,请参阅自定义 Neo4j Helm 图表。有关如何创建values.yaml文件和安装 Neo4j 集群服务器的更多信息,请参阅创建 Helm 部署值文件和安装 Neo4j 集群服务器。
-
使用修改后的部署values.yaml文件和 Neo4j Helm图表运行
helm install
以应用更改。helm install server4 neo4j -f values.yaml
当新服务器加入集群时,它将自动启用并准备好托管数据库。
-
-
-
使用 Cypher Shell(或 Neo4j 浏览器)验证新服务器是否处于
Enabled
状态。-
访问
server1
上的 Cypher Shell。kubectl exec -ti server1-0 -- cypher-shell -u neo4j -p password -d neo4j
-
运行
SHOW SERVERS;
以验证server4
是否已启用。SHOW SERVERS;
+---------------------------------------------------------------------------------------------------------------------------------+ | name | address | state | health | hosting | +---------------------------------------------------------------------------------------------------------------------------------+ | "0908819d-238a-473d-9877-5cc406050ea2" | "server4.neo4j.svc.cluster.local:7687" | "Enabled" | "Available" | ["system"] | | "19817354-5cd1-4579-8c45-8b897808fdb4" | "server2.neo4j.svc.cluster.local:7687" | "Enabled" | "Available" | ["system", "neo4j"] | | "b3c91592-1806-41d0-9355-8fc6ba236043" | "server3.neo4j.svc.cluster.local:7687" | "Enabled" | "Available" | ["system", "neo4j"] | | "eefd7216-6096-46f5-9c41-a74f79684172" | "server1.neo4j.svc.cluster.local:7687" | "Enabled" | "Available" | ["system", "neo4j"] | +---------------------------------------------------------------------------------------------------------------------------------+
-
更改数据库拓扑
请注意,在输出中,虽然server4
现在已启用,但它没有托管neo4j
数据库。您需要更改数据库拓扑以也使用新服务器。
-
更改
neo4j
数据库拓扑,使其托管在三个主服务器和一个辅助服务器上。ALTER DATABASE neo4j SET TOPOLOGY 3 PRIMARIES 1 SECONDARY;
-
现在运行
SHOW DATABASES;
命令以验证新拓扑。SHOW DATABASES;
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | name | type | aliases | access | address | role | writer | requestedStatus | currentStatus | statusMessage | default | home | constituents | +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | "neo4j" | "standard" | [] | "read-write" | "server2.neo4j.svc.cluster.local:7687" | "primary" | TRUE | "online" | "online" | "" | TRUE | TRUE | [] | | "neo4j" | "standard" | [] | "read-write" | "server4.neo4j.svc.cluster.local:7687" | "secondary" | FALSE | "online" | "online" | "" | TRUE | TRUE | [] | | "neo4j" | "standard" | [] | "read-write" | "server3.neo4j.svc.cluster.local:7687" | "primary" | FALSE | "online" | "online" | "" | TRUE | TRUE | [] | | "neo4j" | "standard" | [] | "read-write" | "server1.neo4j.svc.cluster.local:7687" | "primary" | FALSE | "online" | "online" | "" | TRUE | TRUE | [] | | "system" | "system" | [] | "read-write" | "server2.neo4j.svc.cluster.local:7687" | "primary" | FALSE | "online" | "online" | "" | FALSE | FALSE | [] | | "system" | "system" | [] | "read-write" | "server4.neo4j.svc.cluster.local:7687" | "primary" | FALSE | "online" | "online" | "" | FALSE | FALSE | [] | | "system" | "system" | [] | "read-write" | "server3.neo4j.svc.cluster.local:7687" | "primary" | TRUE | "online" | "online" | "" | FALSE | FALSE | [] | | "system" | "system" | [] | "read-write" | "server1.neo4j.svc.cluster.local:7687" | "primary" | FALSE | "online" | "online" | "" | FALSE | FALSE | [] | +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
请注意,
server4
现在托管了neo4j
数据库,并具有secondary
角色。