diff --git a/docs-2.0/1.introduction/3.nebula-graph-architecture/1.architecture-overview.md b/docs-2.0/1.introduction/3.nebula-graph-architecture/1.architecture-overview.md index a341f563bfd..22726a30c50 100644 --- a/docs-2.0/1.introduction/3.nebula-graph-architecture/1.architecture-overview.md +++ b/docs-2.0/1.introduction/3.nebula-graph-architecture/1.architecture-overview.md @@ -6,7 +6,7 @@ Nebula Graph 由三种服务构成:Graph 服务、Meta 服务和 Storage 服 下图展示了 Nebula Graph 集群的经典架构。 -![Nebula Graph architecture](https://docs-cdn.nebula-graph.com.cn/docs-2.0/1.introduction/2.nebula-graph-architecture/nebula-graph-architecture-1.png "Nebula Graph architecture") +![Nebula Graph architecture](https://docs-cdn.nebula-graph.com.cn/figures/nebula-graph-architecture_3.png "Nebula Graph architecture") ## Meta 服务 diff --git a/docs-2.0/20.appendix/0.FAQ.md b/docs-2.0/20.appendix/0.FAQ.md index 5b515bae4a0..d9c8e72b75b 100644 --- a/docs-2.0/20.appendix/0.FAQ.md +++ b/docs-2.0/20.appendix/0.FAQ.md @@ -39,7 +39,7 @@ Nebula Graph 一直在持续开发,功能或操作的行为可能会有变化 从 Nebula Graph 3.0.0 开始,查询语句`LOOKUP`、`GO`、`FETCH`必须用`YIELD`子句指定输出结果。详情请参见[YIELD](../3.ngql-guide/8.clauses-and-options/yield.md)。 -### 如何处理错误信息 `Zone not enough!` +### 如何处理错误信息 `Host not enough!` 从 3.0.0 版本开始,在配置文件中添加的 Storage 节点无法直接读写,配置文件的作用仅仅是将 Storage 节点注册至 Meta 服务中。必须使用`ADD HOSTS`命令后,才能正常读写 Storage 节点。详情参见[管理 Storage 主机](../4.deployment-and-installation/manage-storage-host.md)。 diff --git a/docs-2.0/3.ngql-guide/4.job-statements.md b/docs-2.0/3.ngql-guide/4.job-statements.md index fb812824f53..44a55624d03 100644 --- a/docs-2.0/3.ngql-guide/4.job-statements.md +++ b/docs-2.0/3.ngql-guide/4.job-statements.md @@ -6,6 +6,25 @@ 所有作业管理命令都需要先选择图空间后才能执行。 +## SUBMIT JOB BALANCE DATA + +!!! enterpriseonly + + 仅企业版支持本功能。 + +`SUBMIT JOB BALANCE DATA`语句会在当前图空间内启动任务均衡分布分片。该命令会返回任务 ID。 + +示例: + +```ngql +nebula> SUBMIT JOB BALANCE DATA; ++------------+ +| New Job Id | ++------------+ +| 28 | ++------------+ +``` + diff --git a/docs-2.0/8.service-tuning/load-balance.md b/docs-2.0/8.service-tuning/load-balance.md index 9b4b39bcc5b..505373e2f7c 100644 --- a/docs-2.0/8.service-tuning/load-balance.md +++ b/docs-2.0/8.service-tuning/load-balance.md @@ -2,9 +2,118 @@ 用户可以使用`BALANCE`语句平衡分片和 Raft leader 的分布,或者清空某些 Storage 服务器方便进行维护。详情请参见 [BALANCE](../synchronization-and-migration/2.balance-syntax.md)。 -!!! compatibility "历史版本兼容性" +!!! danger + + `BALANCE`命令通过创建和执行一组子任务来迁移数据和均衡分片分布,**禁止**停止集群中的任何机器或改变机器的 IP 地址,直到所有子任务完成,否则后续子任务会失败。 + +## 均衡分片分布 + +!!! enterpriseonly + + 仅企业版支持均衡分片分布。 + +`BALANCE DATA`语句会开始一个任务,将当前图空间的分片平均分配到所有 Storage 服务器。通过创建和执行一组子任务来迁移数据和均衡分片分布。 + +### 示例 + +以横向扩容 Nebula Graph 为例,集群中增加新的 Storage 主机后,新主机上没有分片。 + +1. 执行命令`SHOW HOSTS`检查分片的分布。 + + ```ngql + nebual> SHOW HOSTS; + +-----------------+------+-----------+----------+--------------+-----------------------+------------------------+-------------+ + | Host | Port | HTTP port | Status | Leader count | Leader distribution | Partition distribution | Version | + +-----------------+------+-----------+----------+--------------+-----------------------+------------------------+-------------+ + | "192.168.8.101" | 9779 | 19669 | "ONLINE" | 0 | "No valid partition" | "No valid partition" | "3.1.0-ent" | + | "192.168.8.100" | 9779 | 19669 | "ONLINE" | 15 | "basketballplayer:15" | "basketballplayer:15" | "3.1.0-ent" | + +-----------------+------+-----------+----------+--------------+-----------------------+------------------------+-------------+ + ``` + +2. 进入图空间`basketballplayer`,然后执行命令`BALANCE DATA`将所有分片均衡分布。 + + ```ngql + nebula> USE basketballplayer; + nebula> BALANCE DATA; + +------------+ + | New Job Id | + +------------+ + | 2 | + +------------+ + ``` + +3. 根据返回的任务ID,执行命令`SHOW JOB `检查任务状态。 + + ```ngql + nebula> SHOW JOB 2; + +------------------------+------------------------------------------+-------------+---------------------------------+---------------------------------+-------------+ + | Job Id(spaceId:partId) | Command(src->dst) | Status | Start Time | Stop Time | Error Code | + +------------------------+------------------------------------------+-------------+---------------------------------+---------------------------------+-------------+ + | 2 | "DATA_BALANCE" | "FINISHED" | "2022-04-12T03:41:43.000000000" | "2022-04-12T03:41:53.000000000" | "SUCCEEDED" | + | "2, 1:1" | "192.168.8.100:9779->192.168.8.101:9779" | "SUCCEEDED" | 2022-04-12T03:41:43.000000 | 2022-04-12T03:41:53.000000 | "SUCCEEDED" | + | "2, 1:2" | "192.168.8.100:9779->192.168.8.101:9779" | "SUCCEEDED" | 2022-04-12T03:41:43.000000 | 2022-04-12T03:41:53.000000 | "SUCCEEDED" | + | "2, 1:3" | "192.168.8.100:9779->192.168.8.101:9779" | "SUCCEEDED" | 2022-04-12T03:41:43.000000 | 2022-04-12T03:41:53.000000 | "SUCCEEDED" | + | "2, 1:4" | "192.168.8.100:9779->192.168.8.101:9779" | "SUCCEEDED" | 2022-04-12T03:41:43.000000 | 2022-04-12T03:41:53.000000 | "SUCCEEDED" | + | "2, 1:5" | "192.168.8.100:9779->192.168.8.101:9779" | "SUCCEEDED" | 2022-04-12T03:41:43.000000 | 2022-04-12T03:41:53.000000 | "SUCCEEDED" | + | "2, 1:6" | "192.168.8.100:9779->192.168.8.101:9779" | "SUCCEEDED" | 2022-04-12T03:41:43.000000 | 2022-04-12T03:41:43.000000 | "SUCCEEDED" | + | "2, 1:7" | "192.168.8.100:9779->192.168.8.101:9779" | "SUCCEEDED" | 2022-04-12T03:41:43.000000 | 2022-04-12T03:41:53.000000 | "SUCCEEDED" | + | "Total:7" | "Succeeded:7" | "Failed:0" | "In Progress:0" | "Invalid:0" | "" | + +------------------------+------------------------------------------+-------------+---------------------------------+---------------------------------+-------------+ + ``` + +4. 等待所有子任务完成,负载均衡进程结束,执行命令`SHOW HOSTS`确认分片已经均衡分布。 + + !!! Note + + `BALANCE DATA`不会均衡 leader 的分布。均衡 leader 请参见[均衡leader分布](#leader)。 + + ```ngql + nebula> SHOW HOSTS; + +-----------------+------+-----------+----------+--------------+----------------------+------------------------+-------------+ + | Host | Port | HTTP port | Status | Leader count | Leader distribution | Partition distribution | Version | + +-----------------+------+-----------+----------+--------------+----------------------+------------------------+-------------+ + | "192.168.8.101" | 9779 | 19669 | "ONLINE" | 7 | "basketballplayer:7" | "basketballplayer:7" | "3.1.0-ent" | + | "192.168.8.100" | 9779 | 19669 | "ONLINE" | 8 | "basketballplayer:8" | "basketballplayer:8" | "3.1.0-ent" | + +-----------------+------+-----------+----------+--------------+----------------------+------------------------+-------------+ + ``` + +如果有子任务失败,请执行`RECOVER JOB `。如果重做负载均衡仍然不能解决问题,请到[Nebula Graph社区](https://discuss.nebula-graph.com.cn/)寻求帮助。 + +### 停止负载均衡作业 + +停止负载均衡作业,请执行命令`STOP JOB `。 + +- 如果没有正在执行的负载均衡作业,会返回错误。 + +- 如果有正在执行的负载均衡作业,会返回`Job stopped`。 + +!!! note + + - `STOP JOB `不会停止正在执行的子任务,而是取消所有后续子任务,状态会置为`INVALID`,然后等待正在执行的子任执行完毕根据结果置为`SUCCEEDED`或`FAILED`。用户可以执行命令`SHOW JOB `检查停止的作业状态。 + - 宕机重启后,作业状态变为`QUEUE`,子任务如果之前是`INVALID`或`FAILED`,状态会置为`IN_PROGRESS`,如果是`IN_PROGRESS`或`SUCCEEDED`则保持不变。 + +一旦所有子任务都完成或停止,用户可以再次执行命令`RECOVER JOB `重启作业,子任务按原有的状态继续执行。 + +### 迁移分片 + +迁移指定的 Storage 主机中的分片来缩小集群规模,可以使用命令`BALANCE DATA REMOVE [,: ...]`。 + +例如需要迁移`192.168.8.100:9779`中的分片,请执行如下命令: + +```ngql +nebula> BALANCE DATA REMOVE 192.168.8.100:9779; +nebula> SHOW HOSTS; ++-----------------+------+-----------+----------+--------------+-----------------------+------------------------+-------------+ +| Host | Port | HTTP port | Status | Leader count | Leader distribution | Partition distribution | Version | ++-----------------+------+-----------+----------+--------------+-----------------------+------------------------+-------------+ +| "192.168.8.101" | 9779 | 19669 | "ONLINE" | 15 | "basketballplayer:15" | "basketballplayer:15" | "3.1.0-ent" | +| "192.168.8.100" | 9779 | 19669 | "ONLINE" | 0 | "No valid partition" | "No valid partition" | "3.1.0-ent" | ++-----------------+------+-----------+----------+--------------+-----------------------+------------------------+-------------+ +``` + +!!! note - 不支持`BALANCE DATA`命令。 + 该命令仅迁移分片,不会将 Storage 主机从集群中删除。删除 Storage 主机请参见[管理 Storage 主机](../4.deployment-and-installation/manage-storage-host.md)。 +![tv-dashboard](https://docs-cdn.nebula-graph.com.cn/figures/screen_2022-04-13_cn.png) | 大屏区域 | 显示信息 | | ------------ | ------------------------------------------------------------ | diff --git a/docs-2.0/nebula-dashboard-ent/4.cluster-operator/3.cluster-information.md b/docs-2.0/nebula-dashboard-ent/4.cluster-operator/3.cluster-information.md index fd6344a6389..e157ee13b66 100644 --- a/docs-2.0/nebula-dashboard-ent/4.cluster-operator/3.cluster-information.md +++ b/docs-2.0/nebula-dashboard-ent/4.cluster-operator/3.cluster-information.md @@ -53,11 +53,15 @@ ### Partition 分布 -选择指定图空间,查看指定图空间的分片分布情况。显示所有 Storage 服务的 IP 地址、端口,及对应 Storage 服务中的分片数量。 +左上方选择指定图空间: + +- 查看指定图空间的分片分布情况。显示所有 Storage 服务的 IP 地址、端口,及对应 Storage 服务中的分片数量。 +- 单击 **Balance Data** 均衡分布当前图空间中的所有分片。 +- 单击 **Balance Data Remove** 迁移指定的 Storage 服务中的所有分片至其他 Storage 服务中,操作前系统会先引导用户选择 Storage 服务所在的节点 IP。 + + --> 单击右上角的**详情**,查看更多信息。 ### 分片信息 diff --git a/docs-2.0/nebula-dashboard-ent/4.cluster-operator/7.cluster-diagnosis.md b/docs-2.0/nebula-dashboard-ent/4.cluster-operator/7.cluster-diagnosis.md new file mode 100644 index 00000000000..162107145ff --- /dev/null +++ b/docs-2.0/nebula-dashboard-ent/4.cluster-operator/7.cluster-diagnosis.md @@ -0,0 +1,166 @@ +# 集群诊断 + +集群诊断是在指定的时间范围内,定位及分析当前集群出现的问题,并将诊断结果和集群相关的监控信息生成网页版的诊断报告。 + +## 功能介绍 + +- 通过诊断报告可以排查出当前集群出现的问题,并可以对问题进行解决。 +- 快速了解集群内各个节点以及服务,Session,服务配置的基本情况。 +- 根据诊断的报告信息,做出运维建议和集群预警。 + +## 诊断入口 + +1. 在 Dashboard 企业版顶部导航栏,单击**集群管理**。 +2. 单击目标集群右侧**详情**。 +3. 在左侧导航栏,单击**集群信息**->**集群诊断**。 + +## 创建诊断 + + +1. 选择诊断的时间范围。支持自定义诊断时间和通过时间区间设置集群诊断的范围,包括:`1 小时`、`6 小时`、`12 小时``1 天`、`3 天`、`7 天`、`14 天`。 + + !!! caution + + 集群诊断是对集群历史数据的诊断,因此用户设置的诊断范围的结束时间不能超过当前时间。 + +2. 在**集群诊断**页面,单击**开始诊断**。 + + ![diagnosepage](https://docs-cdn.nebula-graph.com.cn/figures/cluster-diagnose_2022-04-11_cn.png) + +3. 当诊断状态由 **generating** 变为 **success** 时,即表示诊断已经完成。 + +## 查看诊断报告 + +在诊断列表中,单击目标诊断右侧的**详情**。 + +集群诊断报告中包含以下内容: + +- 诊断结果 +- 基本信息 +- 负载 +- Network +- Session +- 服务信息 +- 配置信息 + +### 诊断结果 + +- 当以下参数出现异常时,诊断结果中会显示相应的信息,包括参数名、类型、严重程度、详情。 + + | 参数 | 说明 | + | ---------------------------------- | ---- | + | `num_queries_hit_memory_watermark` | 执行的 nGQL 语句中达到内存水位值的数量。 | + | `graphd_down ` | Graph 服务停止运行。 | + | `storaged_down` | Storage 服务停止运行。 | + | `metad_down` | Meta 服务停止运行。 | + | `node-exporter down` | 用于收集节点系统数据的服务停止运行。 | + +- 当未诊断到任何异常时,诊断结果中**不显示诊断信息**。 + +### 基本信息 + +![basic-info](https://docs-cdn.nebula-graph.com.cn/figures/basicinfo_2022-04-13_cn.png) + +- **诊断区间**:显示生成报告的时间范围,包括开始时间和结束时间。 + +- **节点信息**:显示集群中节点的数量、CPU、内存、磁盘等信息。 + + | 参数 | 说明 | + | ---------------------------------- | ---- | + | `HOST` | 服务器的 IP 地址。 | + | `INSTANCE` | 该服务器部署的实例数量,例如:`metad*1 graphd*1 storaged*1`。 | + | `CPU` | CPU 核数,单位 Core。 | + | `MEMORY` | 表示服务器的内存大小,单位是 GB。 | + | `DISK` | 表示服务器磁盘大小,单位是 GB。 | + + +- **服务信息**:显示 Nebula Graph 各个服务的类型、所在节点 IP、端口、HTTP 端口、运行状态。 + +- **Leader分布**:显示 Storage 服务中 Leader 分布情况。 + + | 参数 | 说明 | + | ---------------------------------- | ---- | + | `Storage Service` | 显示 Storage 服务的访问地址。 | + | `Number of Leaders` | 显示 Storage 服务中的 Leader 总数 。 | + | `Leader Distribution` | 显示 Storage 服务中不同图空间的 Leader 分布数。 | + +### 负载 + +![basic-info](https://docs-cdn.nebula-graph.com.cn/figures/load_2022-04-13_cn.png) + +显示集群所有服务器节点的负载信息,包括以下指标的平均值(AVG)、最大值(MAX)、最小值(MIN): + +- **内存使用率**:显示节点内存使用率,单位是 %。 + +- **CPU使用率**:显示节点 CPU 使用率,单位是 %。 + +- **磁盘使用率**:显示节点磁盘的总使用率,及节点中各个磁盘的使用率,单位是 %。 + +### Network + +![basic-info](https://docs-cdn.nebula-graph.com.cn/figures/network_2022-04-13.png) + +显示集群所有服务器节点的网络流量信息,包括以下指标的平均值(AVG)、最大值(MAX)、最小值(MIN): + +- **NetworkOut**:显示集群中各个服务器节点的网络流出速度的大小,及每个节点中各网卡的流出速度大小,单位是 Bytes/s。 + +- **NetworkIn**:显示集群中各个服务器节点的网络流入速度的大小,及每个节点中各网卡的流入速度大小,单位是 Bytes/s。 + +### Session + +![basic-info](https://docs-cdn.nebula-graph.com.cn/figures/session_2022-04-13.png) + +显示集群中所有 Graph 服务的 Session 相关信息。 + +| 参数 | 说明 | +| -------------------------------- | ---- | +| `num_opened_sessions` | 服务端建立过的会话数量。 | +| `num_auth_failed_sessions` | 登录验证失败的会话数量。 | +| `num_active_sessions` | 当前活跃的会话数量。 | +| `num_reclaimed_expired_sessions` | 服务端主动回收的过期的会话数量 | + +### 服务信息 + +显示集群各服务稳定性相关的指标: + +- **Graph**: + + ![basic-info](https://docs-cdn.nebula-graph.com.cn/figures/Service_Graph_2022-04-13_cn.png) + + | 参数 | 说明 | + | ------------- | ------------------------------------------------------------ | + | `METRIC_NAME` | `query`:查询次数。
`slow_queries`:慢查询次数。
`num_killed_queries`:被终止的查询数量。
`num_queries_hit_memory_watermark`:执行的 nGQL 语句中达到内存水位值的数量。
`num_rpc_sent_to_metad`:Graphd 服务发给 Metad 服务的 RPC 请求数量。 | + +- **Meta**: + + ![basic-info](https://docs-cdn.nebula-graph.com.cn/figures/Service_meta_2022-04-13_cn.png) + + | 参数 | 说明 | + | ------------- | ------------------------------------------------------------ | + | `METRIC_NAME` | `heartbeat`:心跳次数。 | + + +- **Storage**: + + ![basic-info](https://docs-cdn.nebula-graph.com.cn/figures/Service_Storage_2022-04-13_cn.png) + + | 参数 | 说明 | + | ------------- | ------------------------------------------------------------ | + | `METRIC_NAME` | `delete_vertices`:删除的点的数量。
`delete_edges`:删除的边的数量。
`delete_tags`:删除的 Tag 的数量。
`num_rpc_sent_to_metad`:Storaged 服务发给 Metad 服务的 RPC 请求数量。 | + +其他参数说明如下: + +| 参数 | 说明 | +| ------------- | ------------------------------------------------------------ | +| `TOTAL` | 该项监控执行的总次数。 | +| `ERROR` | 发生错误的个数。 | +| `P75` | P75周期内响应耗时从小到大排列,顺序处于 75% 位置的分位数值。 | +| `P95` | P95周期内响应耗时从小到大排列,顺序处于 95% 位置的分位数值。 | +| `P99` | P99周期内响应耗时从小到大排列,顺序处于 99% 位置的分位数值。 | +| `P999` | P999周期内响应耗时从小到大排列,顺序处于 99.9% 位置的分位数值。 | + +### 配置信息 + +列出当前集群中 Graph、Meta、Storage 服务的所有配置信息。 + +关于各个服务的配置信息的详情,参见[配置管理](../../5.configurations-and-logs/1.configurations/1.configurations.md)。 diff --git a/docs-2.0/synchronization-and-migration/2.balance-syntax.md b/docs-2.0/synchronization-and-migration/2.balance-syntax.md index ee556d35faf..ee2ea3caa8b 100644 --- a/docs-2.0/synchronization-and-migration/2.balance-syntax.md +++ b/docs-2.0/synchronization-and-migration/2.balance-syntax.md @@ -2,15 +2,13 @@ `BALANCE`语句可以让 Nebula Graph 的 Storage 服务实现负载均衡。更多`BALANCE`语句示例和 Storage 负载均衡,请参见 [Storage 负载均衡](../8.service-tuning/load-balance.md)。 -!!! compatibility "历史版本兼容性" - - 不支持`BALANCE DATA`命令。 - `BALANCE`语法说明如下。 |语法|说明| |:---|:---| -|`BALANCE LEADER`|在当前图空间内所有 Zone 之间启动任务均衡分布 leader。该命令会返回任务 ID。| +|`BALANCE DATA`|启动任务均衡分布当前图空间中的所有分片。该命令会返回任务 ID(`job_id`)。| +|`BALANCE DATA REMOVE [,: ...]`|启动任务迁空当前图空间指定的 Storage 服务中的分片。| +|`BALANCE LEADER`|启动任务均衡分布当前图空间中的所有 leader。该命令会返回任务 ID(`job_id`)。|