扩展 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 chart 运行
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 chart 安装新服务器。有关更多信息,请参阅创建 Helm 部署值文件和安装 Neo4j 集群服务器。
当新服务器加入集群时,它最初将处于
Free
状态。 -
通过使用
cypher-shell
(或 Neo4j Browser)连接到现有服务器之一,启用server4
以便托管数据库-
访问
server1
上的cypher-shell
kubectl 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"] | +---------------------------------------------------------------------------------------------------------------------------------+
自动添加和启用新服务器
当新服务器加入集群时,您可以通过在 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.26.0" --set protocol="neo4j"
-
使用 values.yaml 文件为新服务器设置值,并使用 neo4j/neo4j Helm chart 安装新服务器。
-
确保
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.26.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 chart。有关如何创建 values.yaml 文件和安装 Neo4j 集群服务器的更多信息,请参阅创建 Helm 部署值文件和安装 Neo4j 集群服务器。
-
使用修改后的部署 values.yaml 文件和 Neo4j Helm chart 运行
helm install
以应用更改。helm install server4 neo4j -f values.yaml
当新服务器加入集群时,它将自动启用并准备好托管数据库。
-
-
-
使用 Cypher Shell(或 Neo4j Browser),验证新服务器是否处于
Enabled
状态-
访问
server1
上的 Cypher Shellkubectl 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
现在以secondary
角色托管neo4j
数据库。